ГДЕ И ИЛИ ИЛИ Сочетание - PullRequest
1 голос
/ 29 апреля 2020

У меня есть 2 объекта, 1-й - это список клиентов, а 2-й - текстовое поле, используемое для поиска по ключевым словам.

Если пользователь выбирает имя клиента из списка, для него выбираются правильные соответствующие записи. клиент в подчиненной. Но когда у меня выбрано имя клиента И я использую ключевое слово, ключевое слово просматривает ВСЕ записи всех имен клиентов. Я полагаю, что мое утверждение И в моем пункте «Где» неверно. Если у пользователя выбрано имя клиента и используется ключевое слово, я хочу, чтобы это ключевое слово осуществлялось только для поиска выбранного клиента. Ниже приведены две функции, которые я использую.

Private Sub CustomerListbox_Click()

Dim SQL As String

SQL = "SELECT tblPartsAndConsumables.DESCRIPTION, tblPartsAndConsumables.[P/N], tblPartsAndConsumables.[S/N], tblPartsAndConsumables.[B/N], tblPartsAndConsumables.QTY, tblPartsAndConsumables.[EXPIRY DATE], tblPartsAndConsumables.LOCATION, tblPartsAndConsumables.Attachments " _
& " FROM tblPartsAndConsumables " _
& "WHERE [Customer Name] LIKE  '*" & Me.CustomerListbox.Value & "*' " _
& " ORDER BY tblPartsAndConsumables.DESCRIPTION, tblPartsAndConsumables.[P/N]; "

Me.SubFormSearch.Form.RecordSource = SQL
Me.SubFormSearch.Form.Requery

End Sub

Private Sub Searchbox_Change()

Dim SQL As String

SQL = "SELECT tblPartsAndConsumables.[DESCRIPTION], tblPartsAndConsumables.[P/N], tblPartsAndConsumables.[S/N], tblPartsAndConsumables.[B/N], tblPartsAndConsumables.QTY, tblPartsAndConsumables.[EXPIRY DATE], tblPartsAndConsumables.LOCATION, tblPartsAndConsumables.Attachments " _
& " FROM tblPartsAndConsumables " _
& "WHERE [Customer Name] LIKE  '*" & Me.CustomerListbox.Value & "*' " _
& "AND [DESCRIPTION] LIKE  '*" & Me.Searchbox.Text & "*' " _
& "OR [P/N] LIKE  '*" & Me.Searchbox.Text & "*' " _
& "OR [S/N] LIKE  '*" & Me.Searchbox.Text & "*' " _
& "OR [B/N] LIKE  '*" & Me.Searchbox.Text & "*'" _
& " ORDER BY tblPartsAndConsumables.[DESCRIPTION], tblPartsAndConsumables.[P/N]; "

Me.SubFormSearch.Form.RecordSource = SQL
Me.SubFormSearch.Form.Requery

End Sub

Ответы [ 2 ]

4 голосов
/ 29 апреля 2020

Вы должны заключить условие, к которому добавлено условие ИЛИ, в ()

    SQL = "SELECT tblPartsAndConsumables.[DESCRIPTION], tblPartsAndConsumables.[P/N], tblPartsAndConsumables.[S/N], tblPartsAndConsumables.[B/N], tblPartsAndConsumables.QTY, tblPartsAndConsumables.[EXPIRY DATE], tblPartsAndConsumables.LOCATION, tblPartsAndConsumables.Attachments " _
    & " FROM tblPartsAndConsumables " _
    & "WHERE [Customer Name] LIKE  '*" & Me.CustomerListbox.Value & "*' " _
    & "AND ( [DESCRIPTION] LIKE  '*" & Me.Searchbox.Text & "*' " _
    & "OR [P/N] LIKE  '*" & Me.Searchbox.Text & "*' " _
    & "OR [S/N] LIKE  '*" & Me.Searchbox.Text & "*' " _
    & "OR [B/N] LIKE  '*" & Me.Searchbox.Text & "*' ) " _
    & " ORDER BY tblPartsAndConsumables.[DESCRIPTION], tblPartsAndConsumables.[P/N]; "
1 голос
/ 29 апреля 2020

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

Dim SQL As String

SQL = "SELECT tblPartsAndConsumables.[DESCRIPTION], tblPartsAndConsumables.[P/N], tblPartsAndConsumables.[S/N], tblPartsAndConsumables.[B/N], tblPartsAndConsumables.QTY, tblPartsAndConsumables.[EXPIRY DATE], tblPartsAndConsumables.LOCATION, tblPartsAndConsumables.Attachments " _
& " FROM tblPartsAndConsumables " _
& "WHERE ([Customer Name] LIKE  '*" & Me.CustomerListbox.Value & "*') " _
& "AND ([DESCRIPTION] LIKE  '*" & Me.Searchbox.Text & "*' " _
& "OR [P/N] LIKE  '*" & Me.Searchbox.Text & "*' " _
& "OR [S/N] LIKE  '*" & Me.Searchbox.Text & "*' " _
& "OR [B/N] LIKE  '*" & Me.Searchbox.Text & "*')" _
& " ORDER BY tblPartsAndConsumables.[DESCRIPTION], tblPartsAndConsumables.[P/N]; "   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...