Использование
Excel для вычисления математических выражений
В одном из предыдущих параграфов ("Проверка орфографии документов") рассматривался способ заимствования функций проверки орфографии " из Word. Теперь нечто подобное будет проделано с Excel. Excel — превосходное средство для выполнения математических операций. В то же время Visual Basic не содержит функций и методов, позволяющих выполнять вычисления математических выражений (заданных в виде строки — прим. ред.). Если Excel установлен на хост-компьютере, можно обратиться к нему непосредственно из приложения Visual Basic и использовать его для вычисления сложного математического выражения.
Самый простой способ вычисления математического выражения заключается в вызове метода Evaluate объекта Excel.Application. Пусть имеется инициализированная объектная переменная ExcelApp, тогда можно, например, вычислить математическое выражение:
1/cos(0.335) * cos(12.45)
Для этого следует вызвать метод Evaluate объекта ExcelApp и передать ему это выражение в виде параметра (строки):
у = ExcelApp.Evaluate "1/cos(0.335) * cos(12.45)"
Именно это происходит при выполнении щелчка на кнопке
Calculate Expression (Вычислить выражение) в форме ExcelVBA. Ниже приводится текст программы обработчика команды Calculate Expression.
Программа 14.17. Команда Calculate Expression
Private Sub bttnCalculate_Click()
Dim wSheet As Worksheet
Dim wBook As Workbook
Dim expression
StartExcel
expression = InputBox ("Enter math expression to evaluate _
i.e., 1/cos(3.45) * log (19.004)")
'(Введите вычисляемое выражение, например...)
On Error GoTo CalcError
If Trim(expression)
<> "" Then
MsgBox AppExcel.Evaluate(expression)
End If
GoTo Terminate
Exit Sub
CalcError:
MsgBox "Excel returned the following error" & vbCrLf & _
Err.Description
' (Excel возвратил сообщение об ошибке...)
Terminate:
AppExcel.Quit
Set AppExcel = Nothing
End Sub
Программа предлагает пользователю ввести любое математическое выражение. Организовать вычисление произвольных математических выражений, используя программные средства Visual Basic затруднительно. В гл. 20 "Объекты, используемые в сценариях" будет рассматриваться использование элемента управления Script, позволяющего реализовывать вычисление математических выражений.
Visual Data Manager
Visual Data Manager (Визуальный диспетчер баз данных) - инструмент Visual Basic для проектирования баз данных. С некоторыми издержками можно использовать Visual Data Manager для модификации таблиц, обеспечения безопасности данных и экспериментов с SQL. Когда открывается существующая база данных, Visual Data Manager отображает окно базы данных со списком таблиц и свойств этой базы. На рис. 17.7 показано окно Visual Data Manager с базой данных BIBLIO, открытой в режиме разработки. Мы рассмотрим структуру базы данных BIBLIO, но сначала исследуем основные операции приложения Visual Data Manager.
Щелкните правой кнопкой мыши в окне базы данных, чтобы открыть контекстное меню, и выберите пункт New Table. В появившемся диалоговом окне Table Structure задайте необходимые поля.
Рис. 17.7. Visual Data Manager: изменение структуры базы данных
Когда вы добавляете новое поле к таблице щелчком на кнопке Add Field, открывается диалоговое окно Add Field (рис. 17.8).
Рис. 17.8. Visual Data Manager: добавление таблиц в базу данных и полей в таблицы
Опции диалогового окна Add Field приведены в табл. 17.5. На рисунке некоторые из опций заблокированы — их нельзя прочесть. Откройте диалоговое окно Add Field и просмотрите его опции.
Таблица 17.5. Опции в диалоговом окне Add Field
Опция | Описание | ||
Name | Имя поля | ||
OrdinalPosition | Позиция поля в пределах списка полей | ||
Type | Тип поля. Поле может иметь любой стандартный тип VB и два дополнительных: Binary и Memo. Поля типа Binary хранят двоичные данные — звуки и изображения. Поля Memo хранят длинные сегменты текста. Размер полей Memo не могут быть определены на этапе разработки базы данных. (Текстовые поля имеют только определенную длину ) | ||
ValidationText | Текст, отображаемый при попытке ввода недопустимых данных | ||
Size | Размер поля в байтах | ||
FixedField | Поле имеет фиксированную длину | ||
VariableField | Поле имеет переменную длину | ||
ValidationRule | Простые правила, используемые для проверки правильности вводимых значений | ||
DefaultValue | Начальное значение, присваиваемое при создании записи | ||
AutoIncrField | Если поле используется в качестве ключа, то нужно установить для него тип Long и проверить поле. При каждом добавлении в таблицу новой записи полю присваивается значение, на единицу больше значения последней записи | ||
AllowZero Length | Выберите эту опцию, если пустая строка является допустимым значением | ||
Required | Выберите эту опцию, если поле не может быть опущено. В таблице со счетами, например, идентификатор заказчика ID так же, как и дата, является необходимым полем |
конструктора DataEnvironment при работе с элементом управления DataGrid
Использование конструктора DataEnvironment упрощает подключение к базе данных и создание иерархии объектов Command, сводя их к технологии "укажи и щелкни". Записи, возвращаемые объектом Command можно переместить на форму и подключить к элементам управления связанным с данными. Если переместить по несколько полей из каждого объекта Command на форму, то останется лишь написать код для перемещения по записям объекта Command 1. Каждый раз при перемещении к другому заказчику поля дочернего объекта Command будет обновляться, отражая, таким образом, итоги для выбранного заказчика.
В этом параграфе показано, как добавить поля в элемент управления DataGrid. Новая форма показана на рис. 18.9. Эта форма не является частью проекта, поэтому перечислим действия, необходимые для создания новой формы.
Рис. 18.9. Отображение полей иерархии объектов Command в элементе управления DataGrid
1. Откройте проект Report (в папке данной главы на компакт диске) и из меню Project выберите команду Add Form, чтобы добавить в проект новую форму Если вы не изменяли имя первой формы, то имя второй формы — Form2.
2. Снова откройте меню Project, выберите команду Project Properties и сделайте добавленную форму стартовой.
3. При открытых окне DataEnvironment 1 и форме Form2 щелкните правой кнопкой на объекте Command 1 и перенесите его на новую форму. После отпускания кнопки мыши появится контекстное меню с приглашением выбрать размещение полей объекта Command 1 на форме. Выберите один из вариантов.
• DataGrid - выбранные поля размещаются в элементе управления DataGnd,
• Hierarchical FlexGrid - поля размещаются в элементе MSHFlexGrid,
• Bound Controls - поля размещаются в отдельных элементах управления, связанных с данными (тип этих элементов определяется в поле type).
4. В открытом меню выберите элемент управления DataGrid и поместите его на форму. По умолчанию DataGrid имеет только два столбца.
5. Щелкните правой кнопкой на элементе управления DataGrid и выберите команду Edit для выполнения необходимых настроек.
конструктора DataEnvironment при работе с элементом управления MSHFIexGrid
Один из новых и самых интересных элементов управления
Visual Basic 6 -элемент управления FlexGrid (или MSHFlexGnd) Он похож на элемент управления MSFlexGnd (см гл 9), но предназначен для использования с иерархическими объектами ADO. Каждый объект автоматически размещается в своей собственной группе, причем можно развернуть и свернуть строки иерархического элемента управления FlexGrid, как узлы элемента управления TreeView. В параграфе "Проектирование иерархии объектов Command" были показаны записи, возвращенные иерархией объектов (см. рис. 18.2). Обратите внимание: имя каждой компании, отображенное в первой колонке, имеет перед собой знак "+" или "-" Этот знак показывает, что подробности о соответствующих компаниях можно показать или скрыть.
Построим форму, показанную ранее на рис. 18.2. Для этого выполните следующие действия.
1. Переименуйте форму проекта в DetailsForm и сделайте ее достаточно широкой, чтобы поместились все столбцы.
2. Откройте окно DataEnvironmentI и убедитесь, что оба окна видимы на экране.
Элемент управления MSHFlexGrid по умолчанию на панели элементов управления проекта отсутствует. Он появляется при создании проекта Data. Если значок объекта MsHFlexGrid не виден, то откройте диалоговое окно Components и добавьте компонент Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB). Поместите экземпляр этого компонента на форму.
3. Выберите элемент управления MSHFlexGrid и найдите его свойство DataSource в окне Properties.
4. Установите свойство DataSource в DataEnvironmentI (выберите его из раскрывающегося списка), а свойство DataMember в Command 1 (подключив, таким образом, иерархию элементов управления из окна DataEnvironmentI к элементу Command I).
5. Щелкните правой кнопкой мыши и выберите из контекстного меню команду Retrieve Structure (Получить структуру). Все поля, перечисленные в окне DataEnvironmentI, добавятся к элементу управления в качестве заголовков. Понятно, что нет надобности отображать все поля определите, какие поля появятся в столбцах и как они будут выглядеть.
ADO
Одним из важнейших компонентов ASP является Database (База данных), представляющий собой ADO-компонент. Использование компонента Database позволяет разработать более сложные и близкие к реальным приложениям сценарии. Хотя для доступа к базам данных на сервере можно использовать и другие компоненты, большинство Web-разработчиков использует ADO-компонент.
ADO является простейшим объектом для доступа к базам данных (см. гл. 18). Его объектная модель много проще, чем у DAO или даже RDO. При этом ADO является мощным инструментом и наиболее часто применяется при создании Web-узлов, использующих активные серверные страницы. Разумеется, вы можете
использовать для этих целей компонент DAO или свои собственные компоненты ActiveX. Но целесообразнее при создании нового Web-узла использовать ADO. Этот компонент работает быстрее упомянутых выше и потребляет меньше ресурсов сервера (что важно для серверов, работающих с большой нагрузкой).