ник: joka
Господа эксперты ну подскажите что делать!?
вот к какому коду сейчсас пришел...
Private Sub ПолеВыбораСотрудника_AfterUpdate()
'возврат RecordSource к исходному значению
Me![ПолеВыбораСотрудника].RowSource = "SELECT id, ФИО FROM Usys_sotr ORDER BY Usys_sotr.ФИО;"
Me![ПолеВыбораСотрудника].Requery
'сброс существующего фильтра при его наличии
If Me.FilterOn Then
Me.Filter = ""
Me.FilterOn = False
ПолеФильтр = ""
ПолеФильтр.BackColor = 16777215
End If
'поиск записи, соответствующей этому элементу управления.
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
End Sub
Private Sub ПолеВыбораСотрудника_Change()
If var_long = 40 Then Exit Sub
If var_long = 38 Then Exit Sub
Dim strWhere, strSQL1, strSQL2 As String
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 & "*' "
Me![ПолеВыбораСотрудника].RowSource = strSQL1 & strWhere & strSQL2
End If
End Sub
Private Sub ПолеВыбораСотрудника_KeyDown(KeyCode As Integer, Shift As Integer)
var_long = KeyCode
End Sub
Private Sub ПолеВыбораСотрудника_KeyUp(KeyCode As Integer, Shift As Integer)
Me![ПолеВыбораСотрудника].Dropdown
End Sub
Private Sub ПолеВыбораСотрудника_LostFocus()
'возврат RecordSource к исходному значению
Me![ПолеВыбораСотрудника].RowSource = "SELECT id, ФИО FROM Usys_sotr ORDER BY Usys_sotr.ФИО;"
Me![ПолеВыбораСотрудника].Requery
End Sub
есть две проблемы:
1. после выбора мышкой не обновляется источник строк так как фокус не уходит из поля со списком. (если самому тыкнуть куда нибудь на форме, то есть сбросить фокус со списка. источник строк обновляется и все ок)
2. этот кусок кода
'поиск записи, соответствующей этому элементу управления.
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
вызывает дополнительное выпадение списка почему-то.. не понимаю почему:( то есть если этот кусок закоментить список будет отрабатывать нормально (за исключением пункта 1), но тогда не обновляются в соответсвии с выбором данные на форме самой...
|