2013-12-01 3 views
2

Я пробовал следующий код, чтобы получить записи о сотрудниках.Получение выбранных записей из базы данных доступа MS с использованием SQL-запроса в vb.net

sql = "SELECT * FROM employeerecord WHERE [First Name] LIKE '%" & TBFirstName.Text & "%'" &" OR [Last Name] LIKE '%" & TBLastName.Text & "%'" & " OR [Emp ID] LIKE '%" & TBEmpID.Text & "%'" 

Проблема заключается в том, что этим все записи появляются в базе данных, независимо от того, любое поле в текстовое поле соответствие с ним или нет. Как заставить его извлекать только те записи, которые похожи на данные в текстовых полях? Где я иду не так?

+0

Если вы хотите получить точное соответствие, используйте WHERE tablename = '' без% –

ответ

2

Если все три ваших текстовых полей содержат Null или пустая строка, пункт WHERE построен ваш код будет это ...

WHERE [First Name] LIKE '%%' OR [Last Name] LIKE '%%' OR [Emp ID] LIKE '%%' 

Это было бы вернуть почти все строки из employeerecord ... исключаются только те записи, которые содержат Null во всех трех из этих полей: [First Name]; [Last Name]; и [Emp ID].

Если только один из этих текстовых полей содержали Null или пустую строку, условие WHERE на основе этого текстового поля все равно будет LIKE '%%' и, так как WHERE использует OR, вы бы еще раз получить почти все строки.

+0

спасибо Hansup ... Не могли бы вы рассказать мне, что является правильным запросом, чтобы получить записи, которые точно соответствуют тексту в текстовых полях? Если текстовые поля пусты, запись не должна возвращаться. – user1747428

+1

Ваш код строит запрос во время выполнения. Поэтому создайте его, чтобы включить необходимые условия на основе значений текстового поля. Если вы хотите, чтобы никакие записи не возвращались, когда все 3 текстовых поля пусты, используйте предложение q 'WHERE', которое оценивается как False для всех строк:' WHERE 1 = 2' – HansUp

+0

Можете ли вы рассказать мне точный запрос, который я должен написать? я не понимал, как поставить свой комментарий на практике. – user1747428

Смежные вопросы