Как я могу получить значение, указывающее, нашел ли Recordset.Find что-нибудь? - PullRequest
0 голосов
/ 29 марта 2009

Я написал программу, которая будет добавлять, удалять, сохранять и искать записи в базе данных (набор записей). Однако я делал это в команде. Моей задачей было добавить функцию поиска в программу, которая у меня есть; однако у меня возникают проблемы с добавлением сообщения об ошибке, когда кто-то вводит слово / что-либо, чего нет в базе данных / наборе записей.

Так, например, в текстовом поле (txtFindBox.Text), если они наберут «ashbndash», появится сообщение об ошибке. Я закомментировал свои собственные сообщения об ошибках, но скажите мне, где я иду не так, пожалуйста: (

Вот код для кнопки поиска.

Private Sub cmdFindDB_Click()
adoCustomer.Recordset.MoveFirst
If optLastName.Value = True Then
adoCustomer.Recordset.Find "LastName='" & txtFindBox.Text & "'"
'Else
'MsgBox ("NO RECORD FOUND")
End If
If OptFirstName.Value = True Then
adoCustomer.Recordset.Find "FirstName='" & txtFindBox.Text & "'"
'Else
'MsgBox ("NO RECORD FOUND")
End If
End Sub

edit: Я хотел бы сказать, что проблема в том, что каждый раз, когда я нажимаю кнопку «найти», в сообщении появляется сообщение «НЕТ ЗАПИСИ НАЙДЕНО», даже если он находит ответ, также появляется сообщение об этом если вы наберете и тарабарщину.

Спасибо за ваше время

С уважением, Haroon

1 Ответ

2 голосов
/ 29 марта 2009

Вот пример того, как сделать то, что вы пытаетесь сделать: МЕТОД: Набор записей :: Найти

Пример для вашего кода:

adoCustomer.Recordset.MoveFirst
adoCustomer.Recordset.Find "LastName='" & txtFindBox.Text & "'"
If (adoCustomer.Recordset.BOF = True) OR (adoCustomer.Recordset.EOF = True) Then
   MsgBox "Record not found"
End If

Вместо проверки того, что свойство Value имеет значение true, вам нужно проверить EOF и BOF. Это означает конец файла и начало файла. Так что, если любой из них верен, то вы не «внутри» набора записей, то есть вы ничего не нашли.

...