Вроде легко, но сам никак не соображу.. Посмотрите пожалуйста

Vlad_nn
Дата: 07.12.2009 18:11:45
Здравствуйте!
Значит так, есть процедура поиска контакта:

Public Sub FindContact()
Dim dbPatch As String
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim LN As String
dbPatch = App.Path
If Right$(dbPatch, 1) <> "\" Then dbPatch = dbPatch & "\"
dbPatch = dbPatch & "Contacts.mdb"
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & "Data Source=" & dbPatch & ";"
conn.Open
Set rs = conn.Execute("SELECT * FROM Contact")
Do Until List1.ListCount = 0
List1.RemoveItem 0
Loop
Do While Not rs.EOF
List1.AddItem rs!LastName & " " & rs!FirstName & ". " & rs!MiddleInitial & "."
rs.MoveNext
Loop

rs.Close
conn.Close
End Sub


При ее вызове в элемент List попадают ФИО всех контактов, которые только есть. Мне нужна выборка. Т.е. есть TextBox'ы, соответствующие критериям, по которым нужно вести поиск. Как сделать такие запросы, чтобы, если пользователь ввел текст в какой-то их элементов или сразу в несколько, программа смотрела бы эти значения и выводила ФИО List'а, которые им соответствуют. Помогите пожалуйста. Сам что-то никак не разберусь... Да, выделенная часть кода - это запрос и заполнение List'а.
proposed amendment
Дата: 07.12.2009 18:14:47
`
Дата: 07.12.2009 18:25:34
Vlad_nn
...
Мне нужна выборка. ..


вы ответы на этот, мучающий вас в 3-ем топике вопрос - смотрели?
Vlad_nn
Дата: 07.12.2009 18:46:04
смотрел. Не помогло.
`
Дата: 07.12.2009 19:17:08
Vlad_nn
смотрел. Не помогло.


пусть TextBox1 - Фамилия, TextBox2 - Имя, и т.д.
тогда делаете
Dim strSQL As String
strSQL = "SELECT * FROM Contact IN '" & dbPatch & "' WHERE 1=1 "
If Not IsNull(TextBox1) Then
  strSQL = strSQL & _
         "AND Фамилия='" & TextBox1 & "' "
End If
If Not IsNull(TextBox2) Then
  strSQL = strSQL & _
         "AND Имя='" & TextBox2 & "' "
End If
' и т.д. 
после этого - или делаете так как раньше (т.е. - неправильно)
Set rs = CurrentDb.OpenRecordset(strSQL)
Do Until List1.ListCount = 0
List1.RemoveItem 0
Loop
Do While Not rs.EOF
List1.AddItem rs!LastName & " " & rs!FirstName & ". " & rs!MiddleInitial & "."
rs.MoveNext
Loop
rs.Close
или
List1.RowSource = strSQL
List1.Requery
`
Дата: 07.12.2009 19:33:53
Dim rs As ADODB.Recordset
'Dim rs As DAO.Recordset
Set rs = CurrentProject.Connection.Execute (strSQL)
'Set rs = CurrentDb.OpenRecordset(strSQL)
Vlad_nn
Дата: 07.12.2009 20:06:58
`,
у меня не получается прописать листу эти свойства, их нет
List1.RowSource = strSQL
List1.Requery

Может что-то нужно подключить?
mds_world
Дата: 07.12.2009 22:46:02
Vlad_nn,
важно где вы их прописываете. Если в общем модуле, то там, разумеется, не видны контролы формы и их надо указывать полным титулом (Forms!имяформы!имяконтрола.свойство). Если же вы пишете в модуле формы, то ищите ошибку, скорее всего, в имени контрола.
Владимир Саныч
Дата: 07.12.2009 23:32:34
`
вы ответы на этот, мучающий вас в 3-ем топике вопрос - смотрели?

Спасибо за стук. Два других топика закрыты. Автору предупреждение за два нарушения правил (второе нарушение - бессмысленное название топика).