ник: joka
все вроде заработало! только кроме логической переменной еще потребовалось на после обновления добавить передачу фокуса!
кто захочет гемороя вот полный код
Private Sub ПолеВыбораСотрудника_AfterUpdate()
'поиск записи, соответствующей этому элементу управления.
If Not IsNull(Me![ПолеВыбораСотрудника]) Then
With Me.RecordsetClone
.FindFirst "id = " & Me![ПолеВыбораСотрудника]
If Not .NoMatch Then Me.Bookmark = .Bookmark
End With
Else
If MsgBox("Не выбрана фамилия сотрудника. Выбор осуществить невозможно", vbInformation, "Внимание") = vbOK Then
End If
ПолеВыбораСотрудника.Value = id
End If
'подсчет значений
With Me.RecordsetClone
If Not .BOF Or Not .EOF Then .MoveLast
RecCount.Caption = .RecordCount
End With
bolvar = False
'передача фокуса в поле ФИО на форме
If Not IsNull([ПолеВыбораСотрудника]) Then Me.полеФ.SetFocus
End Sub
Private Sub ПолеВыбораСотрудника_Change()
If bolvar Then
Dim strWhere, strSQL1, strSQL2 As String
'Me![ПолеВыбораСотрудника].RowSource = ""
If Len([ПолеВыбораСотрудника].Text) <> 0 Or Not IsNull([ПолеВыбораСотрудника].Text) Then
strSQL1 = "SELECT id, ФИО FROM Usys_sotr"
strSQL2 = " ORDER BY Usys_sotr.ФИО;"
strWhere = " WHERE ФИО Like '" & Me![ПолеВыбораСотрудника].Text & "*' "
'" WHERE Left(ФИО," & Len([ПолеВыбораСотрудника].Text) & ") = '" & [ПолеВыбораСотрудника].Text & "'"
Me![ПолеВыбораСотрудника].RowSource = strSQL1 & strWhere & strSQL2
Me![ПолеВыбораСотрудника].Dropdown
End If
End If
End Sub
Private Sub ПолеВыбораСотрудника_GotFocus()
bolvar = True
End Sub
Private Sub ПолеВыбораСотрудника_LostFocus()
'возврат RecordSource к исходному значению
Me![ПолеВыбораСотрудника].RowSource = "SELECT id, ФИО FROM Usys_sotr ORDER BY Usys_sotr.ФИО;"
Me![ПолеВыбораСотрудника].Requery
End Sub