MS Access поиск в базе данных не работает должным образом - PullRequest
0 голосов
/ 26 мая 2011

Имя таблицы - вода, в ней два поля: fname и serial.

В поле fname предположим, что значение 'bill' имеет 3 последовательных 1, 2 и 3. Теперь мне нужно, когда я набираю bill в textbox1 и нажимаю кнопку поиска, в поле со списком 1 должны отображаться серийные номера 'bill'1,2 и 3.

Я использую MS Access в качестве базы данных, и я использую этот код, но он не работает.

Есть ли другой способ решить эту проблему?

Set rs4 = cn.Execute("select fname, serial from water where fname = '" & Text1.Text & "'")
rs4.MoveFirst
Do While Not rs4.EOF
    Combo1.AddItem rs4("serial")
    rs4.MoveNext
Loop

Ответы [ 3 ]

2 голосов
/ 26 мая 2011

У вас могут возникнуть проблемы, когда кто-то вводит одинарную кавычку в текстовое поле.Вы должны сделать что-то вроде этого:

Set rs4 = cn.Execute("select fname, serial from water where fname = '" & Replace(Text1.Text, "'", "''") & "'")

Другая проблема, с которой вы можете столкнуться, - это если не найдено совпадений.Вы не проверяете, есть ли какие-либо данные в объекте набора записей.

Combo1.Clear
Set rs4 = cn.Execute("select fname, serial from water where fname = '" & Replace(Text1.Text, "'", "''") & "'")
If not rs4.Eof Then
  rs4.MoveFirst
  Do While Not rs4.EOF
      Combo1.AddItem rs4("serial")
      rs4.MoveNext
  Loop
End If
0 голосов
/ 26 мая 2011

Рассматривали ли вы более явно сказать компилятору, что вы хотите, что-то вроде:

Set rs4 = cn.Execute("select fname, serial from water where fname = '" & Text1.Text & "'")
With rs4
    Do Until .EOF
        Combo1.AddItem CStr(!serial.Value)
        .MoveNext
    Loop
End With
0 голосов
/ 26 мая 2011

Я не совсем уверен, в чем проблема, но ваш цикл должен выглядеть примерно так:

rs4.MoveFirst
Do While Not rs4.EOF
    Combo1.AddItem rs4("holding")
    rs4.MoveNext
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...