Поиск по двум столбцам таблицы Access. Как реализовать?
Товарищи! Необходимо получить результат поиска опираясь на данные двух столбцов таблицы, не только "Serial_Number", но и со столбца "Order" для одной строки ввода. Я могу сделать 2 строки, одна на "Serial_Number", другая "Order", но это сумбур, а на 2 источника данных в 1 строку поиска, мозгов у меня не хватает. Помогите, пожалуйста!!!!
Private Sub cmdSearch_Click()
Dim LSQL As String
Dim LSearchString As String
If Len(txtSearchString) = 0 Or IsNull(txtSearchString) = True Then
MsgBox "You must enter a search string."
Else
LSearchString = txtSearchString
'Filter results based on search string
LSQL = "select * from Customers"
LSQL = LSQL & " where Serial_Number LIKE '*" & LSearchString & "*'"
Form_frmCustomers_sub.RecordSource = LSQL
lblTitle.Caption = "Customer Details: Filtered by '" & LSearchString & "'"
'Clear search string
txtSearchString = ""
MsgBox "Результат был отфильтрован. Есть совпадение с " & LSearchString & "."
End If
End Sub
И, подскажите кодом - чтобы при запуске формы frmCustomers_sub поиска все поля результата поиска были пустыми, ну и кнопочку "очистить результаты поиска"
Чтобы реализовать поиск сразу по двум столбцам **Serial_Number** и **Order**, нужно использовать оператор **OR** в SQL-запросе. Также добавим кнопку для очистки результатов поиска. Вот исправленный код:
### **Обновленный код поиска**
```vba
Private Sub cmdSearch_Click()
Dim LSQL As String
Dim LSearchString As String
If Len(txtSearchString) = 0 Or IsNull(txtSearchString) = True Then
MsgBox "Вы должны ввести строку для поиска.", vbExclamation, "Ошибка"
Else
LSearchString = txtSearchString
' Фильтрация результатов на основе строки поиска
LSQL = "SELECT * FROM Customers WHERE Serial_Number LIKE '*" & LSearchString & "*' OR Order LIKE '*" & LSearchString & "*'"
' Применяем фильтр к форме
Form_frmCustomers_sub.RecordSource = LSQL
lblTitle.Caption = "Customer Details: Filtered by '" & LSearchString & "'"
' Очистка поля поиска
txtSearchString = ""
MsgBox "Результат был отфильтрован. Найдено совпадение с '" & LSearchString & "'.", vbInformation, "Поиск завершен"
End If
End Sub
```
---
### **Добавление кнопки для очистки результатов поиска**
Чтобы очистить результаты поиска и вернуть все записи, добавим кнопку **cmdClearSearch** с таким кодом:
```vba
Private Sub cmdClearSearch_Click()
' Убираем фильтр и возвращаем все записи
Form_frmCustomers_sub.RecordSource = "SELECT * FROM Customers"
lblTitle.Caption = "Customer Details: All Records"
' Очистка поля поиска
txtSearchString = ""
MsgBox "Поиск сброшен. Отображены все записи.", vbInformation, "Очистка поиска"
End Sub
```
---
### **Очистка формы при запуске**
Чтобы при открытии формы не отображалось ничего (чтобы таблица была пустой), можно в обработчике **Form_Load** установить пустой источник данных:
```vba
Private Sub Form_Load()
' Очищаем форму при запуске
Form_frmCustomers_sub.RecordSource = "SELECT * FROM Customers WHERE 1=0"
lblTitle.Caption = "Customer Details: No Data"
End Sub
```
---
### **Что исправлено и добавлено**
✅ **Поиск теперь работает по двум полям** (Serial_Number и Order).
✅ **Добавлена кнопка очистки поиска** (`cmdClearSearch`).
✅ **При запуске формы записи не отображаются**, пока не выполнен поиск.
Здравствуйте, не могли бы написать мне в вк https://vk.com/id813495339 , я студент 4 курса, у вас в вопросах был чертеж, который мне нужен для дипломной работы. Но к сожалению у вас он был не полностью сфотографирован. Очень прошу вас помочь, нигде его больше найти не могу. Буду очень благодарен
не понял, что тебе нужно сделать. Нужно сделать выборку на основании двух критериев, где каждый критерий это выбора по конкретному полю? и через AND?