Мир объектов Excel 2000
Мы подобрали для вас целый каталог популярного порно в HD качестве специально для ценителей! У нас вы можете смотреть порнуху абсолютно на любой вкус онлайн! Самые разные порно фильмы, от классики до бдсм и самых разных фетишей - все это вы можете посмотреть у нас на сайте онлайн и без регистрации!

Формирование и показ списка отобранных заказчиков


Эта задача является некоторым усложнением аналогичной задачи, когда показывался список всех заказчиков. Принципиально задача остается той же. После получения набора записей нужно сформировать список для предъявления его пользователю. Усложнения касаются двух моментов:

  • В формировании списка участвуют лишь записи, прошедшие фильтр.
  • Формируется список из нескольких столбцов, каждый из которых содержит тот или иной реквизит заказчика - поле записи.

Приведу текст процедуры, которая решает эту задачу:

Public Sub FormListSelectedCustomers() 'Готовит список заказчиков, удовлетворяющих критериям поиска Dim txt As String Dim i As Integer Dim RowIndex As Integer Dim B1 As Boolean, B2 As Boolean, B3 As Boolean Dim B4 As Boolean, B5 As Boolean 'Число столбцов списка - реквизитов поиска Const ColumnCount = 5

'Поиск заказчиков в наборе по заданным реквизитам SelectedCustomers.ListBox1.Clear SelectedCustomers.ListBox1.ColumnCount = ColumnCount RowIndex = 0 With Rst1 .MoveFirst Do While Not .EOF B1 = False: B2 = False: B3 = False: B4 = False: B5 = False On Error Resume Next txt = LookCustomer.TextBox1.Text B1 = txt <> "" And VBA.InStr(!Название, txt) txt = LookCustomer.TextBox2.Text B2 = txt <> "" And VBA.InStr(!Адрес, txt) txt = LookCustomer.TextBox3.Text B3 = txt <> "" And VBA.InStr(!Город, txt) txt = LookCustomer.TextBox4.Text B4 = txt <> "" And VBA.InStr(!Телефон, txt) txt = LookCustomer.TextBox5.Text B5 = txt <> "" And VBA.InStr(!Директор, txt) If B1 Or B2 Or B3 Or B4 Or B5 Then 'Текущая запись переносится в список 'Первый столбец SelectedCustomers.ListBox1.AddItem .Fields(1) 'Остальные столбцы For i = 1 To ColumnCount - 1 txt = "" txt = .Fields(i + 1) SelectedCustomers.ListBox1.Column(i, RowIndex) = txt Next i RowIndex = RowIndex + 1 End If .MoveNext Loop End With

End Sub

Фильтр, через который проходят все записи, состоит из пяти условий, объединенных операцией "ИЛИ". Каждое условие определяет, задан ли ключ для определенного поля записи, и, если да, то является ли ключевое слово частью поля записи. Записи, прошедшие фильтр, добавляются в список формы SelectedCustomers, при этом поля записи переносятся в соответствующие столбцы списка. Обратите внимание на оператор обработки исключительных ситуаций - On Error Resume Next - позволяющий справиться с возможной ошибкой при выполнении функции InStr, возникающей в ситуации, когда некоторые из полей записи базы данных не определены.

В заключение, взгляните, как выглядит спроектированная форма SelectedCustomers в процессе работы:


Рис. 7.5.  Форма SelectedCustomers, содержащая список выбранных заказчиков

Поскольку записей, прошедших фильтр, может быть несколько, то и здесь окончательный выбор остается за пользователем, работающим с документом. Вот что происходит, когда, сделав выбор в списке, он нажимает кнопку "Выбери меня" формы SelectedCustomers:

Private Sub CommandButton1_Click() 'Данные о реквизитах заказчика переносятся 'из набора записей в поля бланка Счет-фактура FromSelectedListToFields


End Sub

Процедура FromSelectedListToFields, выполняющая основную работу, похожа на уже рассмотренную процедуру FromListToFields. Разница состоит лишь в том, что работа идет с другой формой:

Public Sub FromSelectedListToFields() 'Данные о заказчике, выбранном из списка, 'ищутся в базе данных и затем переносятся 'из набора записей в поля бланка Счет-фактура Const Кавычка = "'" Dim Key As String Dim strSQL1 As String

If SelectedCustomers.ListBox1.ListIndex >= 0 Then 'Выбор сделан 'Формирование запроса к базе данных Key = SelectedCustomers.ListBox1.Column _ (0, SelectedCustomers.ListBox1.ListIndex) strSQL1 = "Select * FROM [Заказчики]WHERE [Название]= " _ & Кавычка & Key & Кавычка Cmd1.CommandText = strSQL1 Set Rst1 = Cmd1.Execute 'Перенос данных из набора записей в поля бланка FromRstToFields 'Форма сделала свое дело - форма закрывается SelectedCustomers.Hide Else MsgBox ("Выберите заказчика!") End If End Sub

На этом можно было бы закончить описание того, как работает поиск с фильтрацией в базе данных. Весь процесс поиска и получения нужных данных рассмотрен. Но для полноты картины следует проанализировать другой, альтернативный способ фильтрации записей.



End Sub

Процедура FromSelectedListToFields, выполняющая основную работу, похожа на уже рассмотренную процедуру FromListToFields. Разница состоит лишь в том, что работа идет с другой формой:

Public Sub FromSelectedListToFields() 'Данные о заказчике, выбранном из списка, 'ищутся в базе данных и затем переносятся 'из набора записей в поля бланка Счет-фактура Const Кавычка = "'" Dim Key As String Dim strSQL1 As String

If SelectedCustomers.ListBox1.ListIndex >= 0 Then 'Выбор сделан 'Формирование запроса к базе данных Key = SelectedCustomers.ListBox1.Column _ (0, SelectedCustomers.ListBox1.ListIndex) strSQL1 = "Select * FROM [Заказчики]WHERE [Название]= " _ & Кавычка & Key & Кавычка Cmd1.CommandText = strSQL1 Set Rst1 = Cmd1.Execute 'Перенос данных из набора записей в поля бланка FromRstToFields 'Форма сделала свое дело - форма закрывается SelectedCustomers.Hide Else MsgBox ("Выберите заказчика!") End If End Sub

На этом можно было бы закончить описание того, как работает поиск с фильтрацией в базе данных. Весь процесс поиска и получения нужных данных рассмотрен. Но для полноты картины следует проанализировать другой, альтернативный способ фильтрации записей.


Содержание раздела