Формирование запроса на поиск
Выбрав заказчика из списка, пользователь тем самым задает ключ, позволяющий отобрать нужную запись в таблице базы данных "Заказчики". Формирование запроса на поиск в базе данных, когда ключ поиска известен, технически сводится к корректному заданию SQL-оператора. Получение набора записей по динамически сформированному запросу принципиально не сложнее, чем уже рассмотренная задача, когда использовался стандартный запрос. Вот как все это решается в процедуре FromListToFields:
Public Sub FromListToFields() 'Данные о заказчике, выбранном из списка, 'ищутся в базе данных и затем переносятся 'из набора записей в поля бланка Счет-фактура. Const Кавычка = "'" Dim Key As String Dim strSQL1 As String If Customers.ListBox1.ListIndex >= 0 Then 'Выбор сделан. 'Формирование запроса к базе данных. Key = Customers.ListBox1.List(Customers.ListBox1.ListIndex) strSQL1 = "Select * FROM [Заказчики]WHERE [Название]= " _ & Кавычка & Key & Кавычка 'Изменение описания команды. Cmd1.CommandText = strSQL1 Set Rst1 = Cmd1.Execute
'Перенос данных из набора записей в поля бланка. FromRstToFields 'Форма сделала свое дело - форма закрывается. Customers.Hide Else MsgBox ("Выберите заказчика!") End If End Sub
Как видите, все происходит по задуманному плану. Формируется строка с ключом, строка с SQL-запросом, изменяется текст команды у объекта Command и при запуске его метода Execute формируется нужный набор записей, состоящий в данном случае из одной записи, содержащей все реквизиты заказчика.
Вызов процедуры FromRstToFields позволяет решить последнюю подзадачу в этом пункте по переносу данных из полей текущей записи объекта Rst1 в поля бланка. Последний выполняемый оператор этой процедуры - Customers.Hide прячет форму Customers, которая сделала свое дело и должна быть закрыта.