Мир объектов Excel 2000




Формирование заказа - часть 2


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

Во второй, основной части процедуры происходит заполнение списка класса Listbox, содержащего несколько столбцов, каждый из которых хранит информацию об авторе книги, ее названии, стоимости и цене. Записи не фильтруются, и потому в список включается информация обо всех товарах - всех книгах, данные о которых хранятся в базе. Заметьте, оператор On Error позволяет справляться с трудностями, которые могут возникнуть, если не все поля записи будут заполнены.

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

Форма Books для выбора книг, представленных в заказе

Рис. 7.9.  Форма Books для выбора книг, представленных в заказе

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

Дальнейшие действия опять инициируются пользователем. Он производит выбор в списке книг и нажимает командную кнопку с надписью "Выбери нас" в форме Books. Затем в дело вступает обработчик события Click для этой кнопки. Так и реализуется та самая интерактивность, о которой идет речь в этой главе. Вот код этого обработчика:

Private Sub SelectUs_Click() 'Данные о выбранных книгах переносятся в поля документа SelectedBooks End Sub

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

Таблица заказа, сформированная по выбору пользователя

увеличить изображение
Рис. 7.10.  Таблица заказа, сформированная по выбору пользователя

А теперь рассмотрим, как это делается:

Public Sub SelectedBooks() 'Данные о выбранных книгах переносятся в поля документа Dim i As Integer, j As Integer Dim curField As Range, curField1 As Range Dim txt As String Dim myNds As Object 'Dim myNds As TextBox 'Чистка полей документа ClearBookFields 'Инициализация Set curField = Range("A34:D34") Set curField1 = Range("E34") With ThisWorkbook.Worksheets(1).OLEObjects Set myNds = .Item("NDS").Object .Item("NDS").Visible = True .Item("LabelNDS").Visible = True




Содержание  Назад  Вперед