Мельница данных- Руководство разработчика для построителя запросов  (раздел целиком)  (29.03.2024)
Руководство разработчика для построителя запросов

1. Информация о приложении
Приложение QueryBuilder представляет собой документ-ориентированное MDI-проиложение.
Документом является запрос. Запросы сохраняются в файле с расширением .MQR. Файлы запросов представляют собой xml-документы определенной структуры. Для доступа к данным БД приложение использует провайдеры данных - библиотеки объектов, реализующих опубликованные интерфейсы. Идентификатор использованного для построения запроса провайдера сохраняется в файле запроса. Если открыть файл с провайдером, не соответствующим текущему, будет выдано предупреждение.

2. Требования к провайдеру

Интерфейсы провайдера описаны в библиотеке типов файла QueryBuilder.exe и в файле QueryBuilder_TLB.pas. Собственно, объект-провайдер реализует Интерфейс IInfoProvider. Каждый CoClass, реализующий указанный интерфейс, прописывается в ветке реестра HKLM\Software\QueryBuilder\Providers добавлением параметра, имя которого определяет наименование провайдера, а значение - CLSID провайдера.

Метаданные (информация о таблицах, полях и типах данных) предоставляются в виде именованных элементов, то есть каждый из них реализует интерфейс INamedItemInfo


2.1. Интерфейс IInfoProvider
Провайдер реализует интерфейс
01  IInfoProvider = interface(IUnknown)
02    ['{64F8072B-7250-4C57-BA8E-D018C7B72CC7}']
03    function Get_TableCount: Integer; safecall;
04    function Get_Table(Index: Integer): ITableInfo; safecall;
05    function Perform(const SQL: WideString): IDataSet; safecall;
06    procedure Connect(const DataBase: WideString; 
07      const UserName: WideString; 
08      const Password: WideString); safecall;
09    function Get_CLSID: TGUID; safecall;
10    function Get_DateLiteral: WideString; safecall;
11    function Get_TimeLiteral: WideString; safecall;
12    function Get_DateTimeLiteral: WideString; safecall;
13  end; 
  • функция Get_CLSID возвращает GUID класса-провайдера.
  • процедура Connect осуществляет соединение с БД.
  • функция Get_TableCount возвращает количество таблиц, доступ к которым предоставляется провайдером.
  • функция Get_Table возвращает ссылку на информацию о таблице с номером Index. Ссылка на интерфейс ITableInfo или интерфейс ITableInfo2
  • функция Perform принимает текст сформированного SQL-запроса и возвращает ссылку на набор данных. Набор данных реализует интерфейс IDataSet.
  • функция Get_DateLiteral возвращает строку, определяющую способ включения в запрос литерала типа "Дата".
  • функция Get_TimeLiteral возвращает строку, определяющую способ включения в запрос литерала типа "Время".
  • функция Get_DateTimeLiteralвозвращает строку, определяющую способ включения в запрос литерала типа "Дата со временем".

2.2. Интерфейс IDataSet
Набор данных реализует интерфейс
1   IDataSet = interface(IUnknown)
2    ['{3CED7395-8482-4EF6-8A15-7744348063C2}']
3    function Get_FieldCount: Integer; safecall;
4    function Get_FieldName(Index: Integer): WideString; safecall;
5    function Get_Field(FieldIndex: OleVariant): OleVariant; safecall;
6    procedure Next; safecall;
7    function Eof: WordBool; safecall;
8  end;
Набор данных представляет собой однонаправленный курсор, каждая строка которого является набором именованных и нумерованных полей.
  • процедура Next осуществляет переход к следующей записи курсора.
  • функция Eof возвращает True в случае достижения конца курсора.
  • функция Get_FieldCount возвращает количество полей в строке курсора.
  • функция Get_FieldName возвращает имя поля с номером Index.
  • функция Get_Field возвращает значение поля, имя или номер которого задан параметром (если строка, то имя, если число, то номер). Допустимо возвращать значение Null для пустых полей.

2.3. Интерфейс INamedItemInfo
Каждый элемент метаданных (таблица, поле, тип) обязательно реализует интерфейс
1  INamedItemInfo = interface(IUnknown)
2    ['{14894363-28DA-4E71-B0BC-9C5CE811BC8F}']
3    function Get_Name: WideString; safecall;
4    function Get_Caption: WideString; safecall;
5    function Get_ID: WideString; safecall;
6  end;

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

  • функция Get_Name возвращает имя сущности.
  • функция Get_Caption возвращает наименование сущности.
  • функция Get_ID возвращает идентификатор сущности.

2.4. Интерфейс ITableInfo
Информация о таблице представляется объектом через интерфейс (наследник INamedItemInfo )
1  ITableInfo = interface(INamedItemInfo)
2    ['{3FC1998A-9031-4936-82B5-8CAA2219085E}']
3    function Get_FieldCount: Integer; safecall;
4    function Get_Field(Index: Integer): IFieldInfo; safecall;
5    function Get_PrimaryKey: IFieldInfo; safecall;
6    function Get_Uplink: IFieldInfo; safecall;
7    function Get_Parent: ITableInfo; safecall;
8  end;
  • функция Get_FieldCount возвращает количество полей в таблице.
  • функция Get_Field возвращает ссылку на поле с номером Index. Ссылка на интерфейс IFieldInfo
  • функция Get_PrimaryKey возвращает ссылку на поле, являющееся первичным ключем. Это поле должно быть задано.
  • функция Get_Uplink возвращает ссылку на поле, осуществляющее иерархическую связь между записями таблицы. Если это поле задано, записи отображаются в виде иерархии.
  • функция Get_Parent возвращает ссылку на родительскую таблицу. Дочерняя таблица связана с родительской первичными ключами, т. е. соотношением 1:1. Если таблица не имеет родительской, возвращается nil.

2.4.1. Интерфейс ITableInfo2
Для таблиц, имеющих полиморфные ссылки, реализуется интерфейс (наследник ITableInfo )
1  ITableInfo2 = interface(ITableInfo)
2    ['{9DF4C8AC-1DA2-4E7B-BF44-7EDD7A269418}']
3    function Get_PolymorphCount: Integer; safecall;
4    function Get_PolymorphTable(Index: Integer): ITableInfo; safecall;
5    function Get_PolymorphField(Index: Integer): IFieldInfo; safecall;
6  end; 
Полиморфной ссылкой является, например, ссылка, физически размещенная в родительской таблице, указывающая на свою запись. Реализация этого интерфейса не является обязательной.
  • функция Get_PolymorphCount возвращает количество полиморфных ссылок.
  • функция Get_PolymorphTable возвращает ссылку на таблицу, на которую указывает полиморфная ссылка номер Index.
  • функция Get_PolymorphTable возвращает ссылку на поле, реализующее полиморфную ссылку номер Index. Это поле должно иметь тип dtReference, информация о его типе должна реализовать интерфейс IReferenceInfo. Значение, возвращаемое функцией Get_TargetTable этого интерфейса в данном случае не имеет значения и игнорируется.

2.4.2. Интерфейс ITableInfo3
Для таблиц, при запросах к которым требуется наложение дополнительных условий отбора, реализуется интерфейс (наследник ITableInfo )
01  ITableInfo3 = interface(ITableInfo)
02    ['{3FB73AA9-010C-48DA-81C7-E1DCFE2E6136}']
03    function GetPersistentClause(const Alias: WideString): WideString; safecall;
04    function GetPreConditionsCount: Integer; safecall;
05    function GetPreConditionCaption(Index: Integer): WideString; safecall;
06    function GetPreConditionCategory(Index: Integer): WideString; safecall;
07    function Get_ActivePreCondition(Index: Integer): WordBool; safecall;
08    procedure Set_ActivePreCondition(Index: Integer; Value: WordBool); safecall;
09    function GetPreConditionParamsCount(Index: Integer): Integer; safecall;
10    function GetPreConditionParam(Index: Integer; PreConditionIndex: Integer): IOptionInfo; safecall;
11  end;
  • функция GetPersistentClause возвращает выражение дополнительного условия отбора. Алиас таблицы передается в параметре Alias.

2.5. Интерфейс IFieldInfo
Информация о поле поставляется объектом, реализующим интерфейс (наследник INamedItemInfo )
1  IFieldInfo = interface(INamedItemInfo)
2    ['{19054DAD-8D35-4B39-8EB7-FD3254BD2934}']
3    function Get_TypeInfo: ITypeInfo; safecall;
4    function Get_DisplayMode: TDisplayMode; safecall;
5  end;
  • функция Get_DisplayMode возвращает роль поля при показе таблицы. Возможные значения (тип TDisplayMode):
    • dmAlways - поле является ключевым, всегда показывается
    • dmNever - поле является служебным (первичным ключем, например). Никогда не показывается.
    • dmOnDemand - поле является обычным информационным, показывается по требованию пользователя.
  • функция Get_TypeInfo возвращает ссылку на информацию о типе данных поля. Возвращаете ссылку на один из интерфейсов-наследников интерфейса ITypeInfo

2.6. Интерфейс ITypeInfo
Информация о типах полей поставляется в виде набора объектов, каждый из которых реализует интерфейс (наследник INamedItemInfo )
1  ITypeInfo = interface(INamedItemInfo)
2    ['{2B6A5E20-3C36-4574-89DB-7C873A5C4A00}']
3    function Get_Required: WordBool; safecall;
4    function Get_SimpleType: TSimpleType; safecall;
5  end;
Информация о конкретном типе передается при помощи реализации одного из наследников этого интерфейса.
  • функция Get_Required возвращает True, если значение поля обязательно для задания.
  • функция Get_SimpleType возвращает информацию о простом типе данных. В зависимости от возвращаемого значения объект должен также реализовывать один из интерфейсов конкретных типов (см. далее). Возможные значения (тип TSimpleType ):

2.6.1. Интерфейс ITypeInfo2
Информация о предоставляемых провайдером дополнительных возможностях фильтрации (наследник интерфейса ITypeInfo)
1  ITypeInfo2 = interface(ITypeInfo)
2    ['{77F58BDF-F01C-40F3-B193-1027AD8C4EDA}']
3    function GetSpecialFilterCount: Integer; safecall;
4    function GetSpecialFilterText(Index: Integer): WideString; safecall;
5    function EditSpecialFilter(Index: Integer; var Filter: WideString): WordBool; safecall;
6  end;
  • функция GetSpecialFilterCount возвращает количество дополнительных элементов списка, выпадающего при выборе фильтра по колонке.
  • функция GetSpecialFilterText возвращает текст дополнительного элемента списка, выпадающего при выборе фильтра по колонке, с номером Index.
  • функция EditSpecialFilter вызывается в момент выбора пользователем дополнительного элемента списка, выпадающего при выборе фильтра по колонке, с номером Index. Значение выражения фильтра передается и возвращается в параметре Filter. Функция возвращает True в случае, если выражение, возвращенное в параметре Filter нужно применить для фильтрации столбца запроса, False - в противном случае.

2.6.2. Интерфейс IStringInfo
Информация о строковом типе (наследник интерфейса ITypeInfo)
1  IStringInfo = interface(ITypeInfo)
2    ['{74AC4C03-E803-421B-B30D-1A2D2C49827F}']
3    function Get_Length: Integer; safecall;
4  end;
  • функция Get_Length возвращает максимальную длину строки.

2.6.3. Интерфейс IIntegerInfo
Информация о целочисленном типе (наследник интерфейса ITypeInfo)
1  IIntegerInfo = interface(ITypeInfo)
2    ['{9003B25E-926D-42AE-A907-813DF3A8343E}']
3    function Get_MaxValue: Integer; safecall;
4    function Get_MaxValueUsed: WordBool; safecall;
5    function Get_MinValue: Integer; safecall;
6    function Get_MinValueUsed: WordBool; safecall;
7  end;
  • функция Get_MaxValueUsed возвращает True, если значение имеет верхнюю границу.
  • функция Get_MaxValue возвращает верхнюю границу значения, если есть.
  • функция Get_MinValueUsed возвращает True, если значение имеет нижнюю границу.
  • функция Get_MinValue возвращает нижнюю границу значения, если есть.

2.6.4. Интерфейс IFloatInfo
Информация о вещественном типе (наследник интерфейса ITypeInfo )
1  IFloatInfo = interface(ITypeInfo)
2    ['{E9B56C6D-47DC-4AB9-9E80-6EEF77708704}']
3    function Get_MaxValue: Double; safecall;
4    function Get_MaxValueUsed: WordBool; safecall;
5    function Get_MinValue: Double; safecall;
6    function Get_MinValueUsed: WordBool; safecall;
7    function Get_Precision: Integer; safecall;
8    function Get_Scale: Integer; safecall;
9  end;
  • функция Get_MaxValueUsed возвращает True, если значение имеет верхнюю границу.
  • функция Get_MaxValue возвращает верхнюю границу значения, если есть.
  • функция Get_MinValueUsed возвращает True, если значение имеет нижнюю границу.
  • функция Get_MinValue возвращает нижнюю границу значения, если есть.
  • функция Get_Precision возвращает максимальное количество значащих десятичных цифр в значении.
  • функция Get_Scale возвращает максимальное количество десятичных цифр после запятой.

2.6.5. Интерфейс IDateInfo
Информация о типе "Дата" (без времени) (наследник интерфейса ITypeInfo )
1  IDateInfo = interface(ITypeInfo)
2    ['{DA392510-105F-4655-9A38-18ECA2FBEB97}']
3  end;
Не имеет методов.

2.6.6. Интерфейс ITimeInfo
Информация о типе "Время" (без даты) (наследник интерфейса ITypeInfo )
1  ITimeInfo = interface(ITypeInfo)
2    ['{D7067CAC-67A5-41DB-8D95-40409D8658AB}']
3  end;
Не имеет методов.

2.6.7. Интерфейс IDateTimeInfo
Информация о типе "Дата со времемем" (наследник интерфейса ITypeInfo )
1  IDateTimeInfo = interface(ITypeInfo)
2    ['{7F5CC8F9-8CE1-4DB7-8932-884EF3BAB538}']
3  end;
Не имеет методов.

2.6.8. Интерфейс IBooleanInfo
Информация о логическом типе (наследник интерфейса ITypeInfo )
1  IBooleanInfo = interface(ITypeInfo)
2    ['{8256EDF9-8613-4970-850C-50047839D6BF}']
3    function Get_TrueValue: WideString; safecall;
4    function Get_FalseValue: WideString; safecall;
5  end;
  • функция Get_TrueValue возвращает отображаемую строку для значения True (например, "Да").
  • функция Get_FalseValue возвращает отображаемую строку для значения False (например, "Нет").

2.6.9. Интерфейс IEnumerationInfo
Информация о перечислимом типе (наследник интерфейса ITypeInfo )
1  IEnumerationInfo = interface(ITypeInfo)
2    ['{B58A3F23-1AAC-4420-ADFF-B23B9938A994}']
3    function Get_ItemCount: Integer; safecall;
4    function Get_Item(Index: Integer): IEnumerationItem; safecall;
5  end;
Перечислимый тип определяет набор значений, которые может принимать поле. Значения в таблице трактуются как равные имени элемента перечисления.
  • функция Get_ItemCount возвращает количество элементов перечисления.
  • функция Get_Item возвращает ссылку на элемент перечисления с номером Index, реализующий интерфейс IEnumerationItem

2.6.10. Интерфейс IReferenceInfo
Информация о типе "ссылка" (наследник интерфейса ITypeInfo )
1  IReferenceInfo = interface(ITypeInfo)
2    ['{309C8CB1-4A1C-4E58-BC3F-D1AF27861A8F}']
3    function Get_TargetTable: ITableInfo; safecall;
4  end;
  • функция Get_TargetTable возвращает ссылку на таблицу, с которой осуществляется связь. Возвращается ссылка на интерфейс ITableInfo

2.6.11. Интерфейс IBlobInfo
Информация о типе "больших двоичных объектов" (наследник интерфейса ITypeInfo )
1  IBlobInfo = interface(ITypeInfo)
2    ['{3905C9C4-EAEB-4844-BB55-3F524F1F3FAC}']
3    function Get_SubType: TBlobSubType; safecall;
4  end;
  • функция Get_SubType возвращает подтип большого двоичного объекта. Одно из следующих значений (тип TBlobSubType ):
    • bsText - текст
    • bsImage - изображение
    • bsBinary - двоичные данные

2.7. Интерфейс IEnumerationItem
Информация об элементе перечисления (наследник INamedItemInfo )
1  IEnumerationItem = interface(INamedItemInfo)
2    ['{6953507C-D477-4B8D-9443-A9E5FE7137ED}']
3    function Get_Position: Integer; safecall;
4  end;
Значения в таблице трактуются как равные имени элемента перечисления.
  • функция Get_Position возвращает позицию элемента перечисления.

3. Использование провайдера БД Парус8

3.1. Использование пользовательских приложений.
Библиотека ParusInfoProvider.dll содержит реализацию провайдера для БД Парус8. Провайдер реализует, в дополнение к обязательным, интерфейс, позволяющий управлять им посредством механизма "Пользовательских приложений":
1  IParusProvider = interface(IDispatch)
2    ['{4864AE99-80E6-4FC6-9DB0-EAB248F72362}']
3    procedure Connect(const Database: WideString;
4      const UserName: WideString; 
5      const Password: WideString); safecall;
6    property QueryObject: OleVariant;
7    property StoredProcObject: OleVariant;
8  end;
Объект-провайдер может установить связь с БД либо самостоятельно с использованием переданных в метод Connect параметров соединения, либо с помощью объектов Query и StoredProc , предоставляемых системой Парус8 для использования в пользовательских приложениях. В свою очередь, созданный провайдер с установленным соединением может быть передан в метод Execute объекта QueryBuilder.Application . Вторым параметром может быть передано значение, представляющее структуру запроса. Это может быть либо строка с указанием имени файла, либо объект, реализующий интерфейс IStream (например, MSXML.DOMDocument ), либо строка, представляющая собой xml-документ. Все средства манипуляции структурой и поведением запроса предоставляются на уровне работы с xml-документом, описывающим запрос.
Пример
Пример скрипта пользовательского приложения на DelphiScript
01procedure QueryBuilderTest;
02var
03  LApplication: OleVarint;
04  LProvider: OleVarint;
05  LDocument: OleVariant;
06begin
07  //описание структуры запроса. Из BLOB, из файла, из строки - откуда угодно
08  LDocument := CreateOleObject('MSXML.DOMDocument');
09  //LDocument реализует IXMLDOMDocument и IStream
10  LDocument.loadXML('<Query Provider="{B3079C97-6EBC-43EB-880F-58F094B322B0}">' +
11    '<Item Type="Table" Table="AGNLIST" Alias="MAIN" TableAlias="MAIN">'  +
12      '<Item ColumnIndex="0" Type="Field" Field="AGNABBR" Table="AGNLIST" ' + 
13        'Alias="MAIN_AGNABBR" TableAlias="MAIN"/>' +
14      '<Item ColumnIndex="1" Type="Field" Field="VERSION" Table="AGNLIST" ' + 
15        'Alias="MAIN_VERSION" TableAlias="MAIN"/>' +
16    '</Item>' +
17  '</Query>');
18
19  //Скрытие дерева структуры
20  LDocument.documentElement.setAttribute('TreeWidth', 0);
21
22  //Наложение условий отбора на колонку
23  LDocument.selectSingleNode('/*/Item/Item[@Field="AGNABBR" and @Table="AGNLIST"]').
24    setAttribute('ColumnFilter', 'Б*');
25
26  //Переименование колонки
27  LDocument.selectSingleNode('/*/Item/Item[@Field="VERSION" and @Table="AGNLIST"]').
28    setAttribute('Caption', 'Версия');
29
30
31  //создание провайдера и передача ему объектов для соединения с БД
32  LProvider := CreateOleObject('ParusInfoProvider.ParusProvider');
33  LProvider.QueryObject := Query;
34  LProvider.StoredProcObject := StoredProc;
35
36  //создание и использование объекта-приложения QueryBuilder
37  LApplication := CreateOleObject('QueryBuilder.Application');
38
39  //В качестве второго параметра передается ОБЪЕКТ, через 
40  //   IStream содержащий структуру запроса
41  LApplication.Execute(LProvider, LDocument);
42  LApplication.Visible := True;
43
44  //Ожидание завершения работы с приложением
45  repeat
46    Application.ProcessMessages;
47  until not LApplication.Visible;
48
49end;
50
Интерфейс автоматизации поддерживает также метод для автоматического применения шаблона для переноса в Excel.
Пример
Допустим, .MQR-файл, описывающий запрос, содержащий шаблон с именем "Простой Перенос" загружен в раздел "Модули пользовательских приложений" с мнемокодом "QueryData". Для этого необходимо создать модуль пользовательского приложения с типом "COM-сервер" или "Надстройка Excel" и загрузить из файла .MQR-файл. Проверки соответствия формата загружаемого файла заявленному типу модуля пользовательского приложения Парус не производит, что позволяет воспользоваться этим трюком. Тогда:
01procedure QueryBuilderTemplateTest;
02var
03  LApplication: OleVarint;
04  LProvider: OleVarint;
05  S: string;
06begin
07  Query.SQL.Text := 'select BMODULE from V_UAMODULES where SCODE = :CODE';
08  //мнемокод модуля пользовательского приложения, содержащего
09  //загруженный .MQR-файл
10  Query.ParamByName('CODE').Value := 'QueryData';
11  Query.Open;
12  S := Query.FieldByName('BMODULE').AsString;
13  Query.Close;
14
15 //создание провайдера и передача ему объектов для соединения с БД
16  LProvider := CreateOleObject('ParusInfoProvider.ParusProvider');
17  LProvider.QueryObject := Query;
18  LProvider.StoredProcObject := StoredProc;
19
20  //создание и использование объекта-приложения QueryBuilder
21  LApplication := CreateOleObject('QueryBuilder.Application');
22
23  //В качестве второго параметра передается СТРОКА, содержащая xml с описанием
24  //структуры запроса и шаблоны для переноса в Excel
25  LApplication.ExecuteTemplate(LProvider, S, 'Простой Перенос');
26end;
  

3.2. Информация о базе данных
Провайдер Парус8 предоставляет информацию о четырех типах таблиц:
  1. Представление, описанное при помощи метаданных Парус8 как "вызываемое с клиента". В этом случае полями таблицы являются описанные атрибуты класса с соответствующими типами.
  2. Таблица, имеющая клиентский доступ и связанная с разделом, не имеющим ни одного описанного доступного представления, но имеющим описанные физические атрибуты. Информация о полях берется из метаданных Парус8
  3. Таблица, имеющая клиентский доступ и связанная с разделом, не имеющим ни одного описанного доступного представления, и не имеющим описанных атрибутов. Информация о полях берется из метаданных Oracle.
  4. Таблица, имеющая клиентский доступ и не связанная ни с каким разделом. Информация о полях берется из метаданных Oracle.

4. Разработка шаблонов

Шаблон представляет собой обычную рабочую книгу Excel.

Шаблоны для переноса данных в Excel физически интегрируются внутрь .MQR-файла и хранятся вместе с запросом. Разработку шаблона можно вести независимо, используя только Microsoft Excel (запуская его самостоятельно), а потом загрузить в файл запроса, а можно воспользоваться пунктом меню "Редактировать" на странице "Шаблоны".

Для взаимодействия с источником данных рабочая книга-шаблон должна содержать в любом модуле макрос с именем "Template" (без кавычек) с одним параметром. При выполнении переноса данных по этому шаблону QueryBuilder произведет вызов этого метода, передав в качестве фактического значения параметра объект, реализующий интерфейс IExternalQuery. Никаких других требований к рабочей книге-шаблону не выдвигается.
Пример
Oracle
В примере показан запрос на таблицу AGNLIST (провайдер Oracle), показывающий как простой перенос данных, так и сводную таблицу со сводной диаграммой распределения записей таблицы по полю CRN.
Пример запроса с шаблонами
В примере показан запрос на таблицу "TField" (провайдер Мельницы Данных), показывающий как простой перенос данных, так и сводную таблицу со сводной диаграммой распределения записей таблицы.
Пример запроса с шаблонами для Мельницы Данных`


4.1. Интерфейс IExternalQuery
Объект, реализующий этот интерфейс, передается в макрос генерации отчета Excel (Template). Все его свойства и методы доступны для испоьзования в процессе генерации отчета
01  IExternalQuery = interface(IDispatch)
02    ['{1A86D1DA-A56E-4D53-88F9-7A035D7D12B4}']
03    function Select(const SQL: WideString): IExternalDataSet; safecall;
04    function SelectedRecordsCount: Integer; safecall;
05    function SelectedRecord(Index: Integer): OleVariant; safecall;
06    procedure PlaceCurrentQuery(const Sheet: IDispatch; 
07      CaptionsNeeded: WordBool = False; Row: Integer = 1; 
08      Column: Integer = 1; ShiftRows: WordBool = True; 
09      ShiftColumns: WordBool = False); safecall;
10    procedure PlaceQuery(const Sheet: IDispatch; const DataSet: ExternalDataSet;
11      Row: Integer = 1; Column: Integer = 1; ShiftRows: WordBool = True; 
12      ShiftColumns: WordBool = False); safecall;
13    property CurrentQuery: WideString;
14  end;
  • функция Select возвращает объект, реализующий интерфейс IExternalDataSet с данными, полученными в результате запроса, заданного параметром SQL. Фактически метод является оберткой метода Perform объекта-провайдера IInfoProvider
  • функция SelectedRecordsCount возвращает количество записей, отмеченных пользователем в гриде в момент выгрузки в Excel
  • функция SelectedRecord возвращает первичный ключ отмеченной пользователем записи с номером Index
  • процедура PlaceCurrentQuery осуществляет перенос в указанное положение указанного рабочего листа данных текущего табличного представления. Параметр Sheet указывает на рабочий лист Excel, на который будет осуществляться перенос, параметр CaptionsNeeded определяет необходимость переноса заголовков колонок, параметры Row и Column определяют соответственно номер строки и столбца на рабочем листе Excel, начиная с которых будут расположены данные. Параметр ShiftRows определяет необходимость сдвига строк вниз при переносе данных (информация в ячейках, лежащих НИЖЕ строки, определенной параметром Row, будет либо затерта, либо сдвинута на требуемое число строк вниз. Параметр ShiftColumns определяет необходимость сдвига колонок вправо при переносе данных (информация в ячейках, лежащих ПРАВЕЕ столбца, определенного параметром Column, будет либо затерта, либо сдвинута на требуемое число строк вниз.
  • процедура PlaceQuery осуществляет перенос в указанное положение указанного рабочего листа данных заданного параметром DataSet набора данных. Параметр Sheet указывает на рабочий лист Excel, на который будет осуществляться перенос, параметр CaptionsNeeded определяет необходимость переноса заголовков колонок, параметры Row и Column определяют соответственно номер строки и столбца на рабочем листе Excel, начиная с которых будут расположены данные. Параметр ShiftRows определяет необходимость сдвига строк вниз при переносе данных (информация в ячейках, лежащих НИЖЕ строки, определенной параметром Row, будет либо затерта, либо сдвинута на требуемое число строк вниз. Параметр ShiftColumns определяет необходимость сдвига колонок вправо при переносе данных (информация в ячейках, лежащих ПРАВЕЕ столбца, определенного параметром Column, будет либо затерта, либо сдвинута на требуемое число строк вниз.
  • свойство CurrentQuery возвращает строку запроса, на основе которого постоено текущее табличное представление.

4.2. Интерфейс IExternalDataSet
Фактически, обертка над интерфейсом IDataSet .
1  IExternalDataSet = interface(IDispatch)
2    ['{CDC7992C-BB30-431C-9F81-3215175AD5AB}']
3    procedure Next; safecall;
4    function Eof: WordBool; safecall;
5    property FieldCount: Integer;
6    property FieldName[Index: Integer]: WideString;
7    property Field[FieldIndex: OleVariant]: OleVariant;
8  end;
Набор данных представляет собой однонаправленный курсор, каждая строка которого является набором именованных и нумерованных полей.
  • процедура Next осуществляет переход к следующей записи курсора.
  • функция Eof возвращает True в случае достижения конца курсора.
  • свойство FieldCount возвращает количество полей в строке курсора.
  • свойство FieldName возвращает имя поля с номером Index.
  • свойство Field возвращает значение поля, имя или номер которого задан параметром (если строка, то имя, если число, то номер). Допустимо возвращать значение Null для пустых полей.

5. Интерфейс автоматизации
Взаимодействие внешних приложений с QueryBuilder'ом осуществляется при помощи интерфейса
1  IApplication = interface(IDispatch)
2    ['{0E59D500-7A6A-43CA-8007-B7BB7E393CD4}']
3    procedure Execute(const Provider: IUnknown; var Query: OleVariant); safecall;
4    procedure ExecuteTemplate(const Provider: IUnknown; var Query: OleVariant; 
5      const TemplateName: WideString); safecall;
6    property Visible: WordBool;
7  end;
  • Свойство Visible определяет видимость приложения
  • Процедура Execute осуществляет выполнение запроса. Первым параметром является объект-провайдер (созданный заранее внешним образом и установивший соединение с БД также заранее). Вторым параметром может быть передано значение, представляющее структуру запроса. Это может быть либо строка с указанием имени файла, либо объект, реализующий интерфейс IStream (например, MSXML.DOMDocument ), либо строка, представляющая собой xml-документ. Все средства манипуляции структурой и поведением запроса предоставляются на уровне работы с xml-документом, описывающим запрос.
  • Процедура ExecuteTemplate осуществляет выполнение запроса и применяет к результатам шаблон с именем, переданным в параметре TemplateName. Первые два параметра аналогичны параметрам метода Execute
Интерфейс автоматизации может быть использован в тех случаях, когда необходима интергация QueryBuilder'a в третьестороннюю информационную систему.

6. Справочник по интерфейсам

6.1. Перечисление TAggregateType
1type
2  TAggregateType = (atCount, atSumm, atAverage, atMinimum, atMaximum, atAny, 
3    atAll, atCountDistinct);

Или

01type
02  TAggregateType = TOleEnum;
03const
04  atCount = $00000000;
05  atSumm = $00000001;
06  atAverage = $00000002;
07  atMinimum = $00000003;
08  atMaximum = $00000004;
09  atAny = $00000005;
10  atAll = $00000006;
11  atCountDistinct = $00000007;

Элементы перечисления:

Имя Значение Назначение
atCount 0

atSumm 1

atAverage 2

atMinimum 3

atMaximum 4

atAny 5

atAll 6

atCountDistinct 7


6.2. Перечисление TBlobSubType
1type
2  TBlobSubType = (bsText, bsImage, bsBinary);

Или

1type
2  TBlobSubType = TOleEnum;
3const
4  bsText = $00000000;
5  bsImage = $00000001;
6  bsBinary = $00000002;

Элементы перечисления:

Имя Значение Назначение
bsText 0

bsImage 1

bsBinary 2


6.3. Перечисление TDisplayMode
1type
2  TDisplayMode = (dmAlways, dmNever, dmOnDemand);

Или

1type
2  TDisplayMode = TOleEnum;
3const
4  dmAlways = $00000000;
5  dmNever = $00000001;
6  dmOnDemand = $00000002;

Элементы перечисления:

Имя Значение Назначение
dmAlways 0

dmNever 1

dmOnDemand 2


6.4. Перечисление TSimpleType
1type
2  TSimpleType = (dtString, dtInteger, dtFloat, dtDate, dtTime, dtDateTime, 
3    dtBoolean, dtEnumeration, dtReference, dtBlob);

Или

01type
02  TSimpleType = TOleEnum;
03const
04  dtString = $00000000;
05  dtInteger = $00000001;
06  dtFloat = $00000002;
07  dtDate = $00000003;
08  dtTime = $00000004;
09  dtDateTime = $00000005;
10  dtBoolean = $00000006;
11  dtEnumeration = $00000007;
12  dtReference = $00000008;
13  dtBlob = $00000009;

Элементы перечисления:

Имя Значение Назначение
dtString 0

dtInteger 1

dtFloat 2

dtDate 3

dtTime 4

dtDateTime 5

dtBoolean 6

dtEnumeration 7

dtReference 8

dtBlob 9


6.5. Интерфейс IApplication

 Диаграмма

01type
02  IApplication = interface(IDispatch)
03    ['{0E59D500-7A6A-43CA-8007-B7BB7E393CD4}']
04    procedure Execute(const Provider: IUnknown; const Query: OleVariant); safecall;
05    function Get_Visible: WordBool; safecall;
06    procedure Set_Visible(Value: WordBool); safecall;
07    procedure ExecuteTemplate(const Provider: IUnknown; const Query: OleVariant; 
08      const TemplateName: WideString); safecall;
09    property Visible: WordBool read Get_Visible write Set_Visible;
10  end;

6.5.1. Свойства

Свойства интерфейса IApplication :

Имя Тип Доступ Назначение
Visible WordBool Чтение/Запись


6.5.2. Метод Execute

Метод интерфейса IApplication .

1procedure IApplication.Execute(const Provider: IUnknown; 
2  const Query: OleVariant);

Параметры:

Имя Тип Обязательно Значение
Provider IUnknown Да

Query OleVariant Да


6.5.3. Метод ExecuteTemplate

Метод интерфейса IApplication .

1procedure IApplication.ExecuteTemplate(const Provider: IUnknown; 
2  const Query: OleVariant; const TemplateName: WideString);

Параметры:

Имя Тип Обязательно Значение
Provider IUnknown Да

Query OleVariant Да

TemplateName WideString Да


6.6. Интерфейс IBlobInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

1type
2  IBlobInfo = interface(ITypeInfo)
3    ['{3905C9C4-EAEB-4844-BB55-3F524F1F3FAC}']
4    function Get_SubType: TBlobSubType; safecall;
5    property SubType: TBlobSubType read Get_SubType;
6  end;

6.6.1. Свойства

Свойства интерфейса IBlobInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Required WordBool Только для чтения

Унаследовано от ITypeInfo

SimpleType TSimpleType Только для чтения
SubType TBlobSubType Только для чтения


6.7. Интерфейс IBooleanInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

1type
2  IBooleanInfo = interface(ITypeInfo)
3    ['{8256EDF9-8613-4970-850C-50047839D6BF}']
4    function Get_TrueValue: WideString; safecall;
5    function Get_FalseValue: WideString; safecall;
6    property TrueValue: WideString read Get_TrueValue;
7    property FalseValue: WideString read Get_FalseValue;
8  end;

6.7.1. Свойства

Свойства интерфейса IBooleanInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Required WordBool Только для чтения

Унаследовано от ITypeInfo

SimpleType TSimpleType Только для чтения
FalseValue WideString Только для чтения

TrueValue WideString Только для чтения


6.8. Интерфейс IDataSet

 Диаграмма

01type
02  IDataSet = interface(IUnknown)
03    ['{3CED7395-8482-4EF6-8A15-7744348063C2}']
04    function Get_FieldCount: Integer; safecall;
05    function Get_FieldName(Index: Integer): WideString; safecall;
06    function Get_Field(FieldIndex: OleVariant): OleVariant; safecall;
07    procedure Next; safecall;
08    function Eof: WordBool; safecall;
09    property FieldCount: Integer read Get_FieldCount;
10    property FieldName[Index: Integer]: WideString read Get_FieldName;
11    property Field[FieldIndex: OleVariant]: OleVariant read Get_Field;
12  end;

6.8.1. Свойства

Свойства интерфейса IDataSet :

Имя Тип Доступ Назначение
Field[FieldIndex: OleVariant] OleVariant Только для чтения

FieldCount Integer Только для чтения

FieldName[Index: Integer] WideString Только для чтения


6.8.2. Метод Eof

Метод интерфейса IDataSet .

function IDataSet.Eof: WordBool;

Метод не имеет параметров.

Замечания:

Возвращает значение типа WordBool.


6.8.3. Метод Next

Метод интерфейса IDataSet .

procedure IDataSet.Next;

Метод не имеет параметров.


6.9. Интерфейс IDateInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

1type
2  IDateInfo = interface(ITypeInfo)
3    ['{DA392510-105F-4655-9A38-18ECA2FBEB97}']
4  end;

6.10. Интерфейс IDateTimeInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

1type
2  IDateTimeInfo = interface(ITypeInfo)
3    ['{7F5CC8F9-8CE1-4DB7-8932-884EF3BAB538}']
4  end;

6.11. Интерфейс IEnumerationInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

1type
2  IEnumerationInfo = interface(ITypeInfo)
3    ['{B58A3F23-1AAC-4420-ADFF-B23B9938A994}']
4    function Get_ItemCount: Integer; safecall;
5    function Get_Item(Index: Integer): IEnumerationItem; safecall;
6    property ItemCount: Integer read Get_ItemCount;
7    property Item[Index: Integer]: IEnumerationItem read Get_Item;
8  end;

6.11.1. Свойства

Свойства интерфейса IEnumerationInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Required WordBool Только для чтения

Унаследовано от ITypeInfo

SimpleType TSimpleType Только для чтения
Item[Index: Integer] IEnumerationItem Только для чтения

ItemCount Integer Только для чтения


6.12. Интерфейс IEnumerationItem

 Диаграмма Интерфейс INamedItemInfo

1type
2  IEnumerationItem = interface(INamedItemInfo)
3    ['{6953507C-D477-4B8D-9443-A9E5FE7137ED}']
4    function Get_Position: Integer; safecall;
5    property Position: Integer read Get_Position;
6  end;

6.12.1. Свойства

Свойства интерфейса IEnumerationItem :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Position Integer Только для чтения


6.13. Интерфейс IExternalDataSet

 Диаграмма

01type
02  IExternalDataSet = interface(IDispatch)
03    ['{CDC7992C-BB30-431C-9F81-3215175AD5AB}']
04    function Get_FieldCount: Integer; safecall;
05    function Get_FieldName(Index: Integer): WideString; safecall;
06    function Get_Field(FieldIndex: OleVariant): OleVariant; safecall;
07    procedure Next; safecall;
08    function Eof: WordBool; safecall;
09    property FieldCount: Integer read Get_FieldCount;
10    property FieldName[Index: Integer]: WideString read Get_FieldName;
11    property Field[FieldIndex: OleVariant]: OleVariant read Get_Field;
12  end;

6.13.1. Свойства

Свойства интерфейса IExternalDataSet :

Имя Тип Доступ Назначение
Field[FieldIndex: OleVariant] OleVariant Только для чтения

FieldCount Integer Только для чтения

FieldName[Index: Integer] WideString Только для чтения


6.13.2. Метод Eof

Метод интерфейса IExternalDataSet .

function IExternalDataSet.Eof: WordBool;

Метод не имеет параметров.

Замечания:

Возвращает значение типа WordBool.


6.13.3. Метод Next

Метод интерфейса IExternalDataSet .

procedure IExternalDataSet.Next;

Метод не имеет параметров.


6.14. Интерфейс IExternalQuery

 Диаграмма

01type
02  IExternalQuery = interface(IDispatch)
03    ['{1A86D1DA-A56E-4D53-88F9-7A035D7D12B4}']
04    function Get_CurrentQuery: WideString; safecall;
05    function Select(const SQL: WideString): IExternalDataSet; safecall;
06    function SelectedRecordsCount: Integer; safecall;
07    function SelectedRecord(Index: Integer): OleVariant; safecall;
08    procedure PlaceCurrentQuery(const Sheet: IDispatch; CaptionsNeeded: WordBool; 
09      Row: Integer; Column: Integer; ShiftRows: WordBool; ShiftColumns: WordBool); safecall;
10    procedure PlaceQuery(const Sheet: IDispatch; const DataSet: ExternalDataSet; 
11      Row: Integer; Column: Integer; ShiftRows: WordBool; ShiftColumns: WordBool); safecall;
12    property CurrentQuery: WideString read Get_CurrentQuery;
13  end;

6.14.1. Свойства

Свойства интерфейса IExternalQuery :

Имя Тип Доступ Назначение
CurrentQuery WideString Только для чтения


6.14.2. Метод PlaceCurrentQuery

Метод интерфейса IExternalQuery .

1procedure IExternalQuery.PlaceCurrentQuery(const Sheet: IDispatch; 
2  CaptionsNeeded: WordBool; Row: Integer; Column: Integer; ShiftRows: WordBool; 
3  ShiftColumns: WordBool);

Параметры:

Имя Тип Обязательно Значение
Sheet IDispatch Да

CaptionsNeeded WordBool Нет

Row Integer Нет

Column Integer Нет

ShiftRows WordBool Нет

ShiftColumns WordBool Нет


6.14.3. Метод PlaceQuery

Метод интерфейса IExternalQuery .

1procedure IExternalQuery.PlaceQuery(const Sheet: IDispatch; 
2  const DataSet: ExternalDataSet; Row: Integer; Column: Integer; 
3  ShiftRows: WordBool; ShiftColumns: WordBool);

Параметры:

Имя Тип Обязательно Значение
Sheet IDispatch Да

DataSet ExternalDataSet Да

Row Integer Нет

Column Integer Нет

ShiftRows WordBool Нет

ShiftColumns WordBool Нет


6.14.4. Метод Select

Метод интерфейса IExternalQuery .

function IExternalQuery.Select(const SQL: WideString): IExternalDataSet;

Параметры:

Имя Тип Обязательно Значение
SQL WideString Да

Замечания:

Возвращает значение типа IExternalDataSet.


6.14.5. Метод SelectedRecord

Метод интерфейса IExternalQuery .

function IExternalQuery.SelectedRecord(Index: Integer): OleVariant;

Параметры:

Имя Тип Обязательно Значение
Index Integer Да

Замечания:

Возвращает значение типа OleVariant.


6.14.6. Метод SelectedRecordsCount

Метод интерфейса IExternalQuery .

function IExternalQuery.SelectedRecordsCount: Integer;

Метод не имеет параметров.

Замечания:

Возвращает значение типа Integer.


6.15. Интерфейс IFieldInfo

 Диаграмма Интерфейс INamedItemInfo

1type
2  IFieldInfo = interface(INamedItemInfo)
3    ['{19054DAD-8D35-4B39-8EB7-FD3254BD2934}']
4    function Get_TypeInfo: ITypeInfo; safecall;
5    function Get_DisplayMode: TDisplayMode; safecall;
6    property TypeInfo: ITypeInfo read Get_TypeInfo;
7    property DisplayMode: TDisplayMode read Get_DisplayMode;
8  end;

6.15.1. Свойства

Свойства интерфейса IFieldInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
DisplayMode TDisplayMode Только для чтения

TypeInfo ITypeInfo Только для чтения


6.16. Интерфейс IFieldInfo2

 Диаграмма Интерфейс IFieldInfoИнтерфейс INamedItemInfo

1type
2  IFieldInfo2 = interface(IFieldInfo)
3    ['{82D93CF0-0E2F-4A85-AD74-9B1B9199B76B}']
4    function Get_Category: WideString; safecall;
5    property Category: WideString read Get_Category;
6  end;

6.16.1. Свойства

Свойства интерфейса IFieldInfo2 :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
DisplayMode TDisplayMode Только для чтения

Унаследовано от IFieldInfo

TypeInfo ITypeInfo Только для чтения
Category WideString Только для чтения


6.17. Интерфейс IFloatInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

01type
02  IFloatInfo = interface(ITypeInfo)
03    ['{E9B56C6D-47DC-4AB9-9E80-6EEF77708704}']
04    function Get_MaxValue: Double; safecall;
05    function Get_MaxValueUsed: WordBool; safecall;
06    function Get_MinValue: Double; safecall;
07    function Get_MinValueUsed: WordBool; safecall;
08    function Get_Precision: Integer; safecall;
09    function Get_Scale: Integer; safecall;
10    property MaxValue: Double read Get_MaxValue;
11    property MaxValueUsed: WordBool read Get_MaxValueUsed;
12    property MinValue: Double read Get_MinValue;
13    property MinValueUsed: WordBool read Get_MinValueUsed;
14    property Precision: Integer read Get_Precision;
15    property Scale: Integer read Get_Scale;
16  end;

6.17.1. Свойства

Свойства интерфейса IFloatInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Required WordBool Только для чтения

Унаследовано от ITypeInfo

SimpleType TSimpleType Только для чтения
MaxValue Double Только для чтения

MaxValueUsed WordBool Только для чтения

MinValue Double Только для чтения

MinValueUsed WordBool Только для чтения

Precision Integer Только для чтения

Scale Integer Только для чтения


6.18. Интерфейс IInfoProvider

 Диаграмма

01type
02  IInfoProvider = interface(IUnknown)
03    ['{64F8072B-7250-4C57-BA8E-D018C7B72CC7}']
04    function Get_TableCount: Integer; safecall;
05    function Get_Table(Index: Integer): ITableInfo; safecall;
06    function Perform(const SQL: WideString): IDataSet; safecall;
07    procedure Connect(const DataBase: WideString; const UserName: WideString; 
08      const Password: WideString); safecall;
09    function Get_CLSID: GUID; safecall;
10    function Get_DateLiteral: WideString; safecall;
11    function Get_TimeLiteral: WideString; safecall;
12    function Get_DateTimeLiteral: WideString; safecall;
13    function Get_RegExpLiteral: WideString; safecall;
14    function Get_ToBooleanLiteral: WideString; safecall;
15    function Get_ToStringLiteral: WideString; safecall;
16    function Get_AllowStartingWith: WordBool; safecall;
17    function Get_AllowArrays: WordBool; safecall;
18    function Get_DisallowNullsSorting: WordBool; safecall;
19    function Get_DisallowSubqueries: WordBool; safecall;
20    function Get_DisallowBetween: WordBool; safecall;
21    function Get_LikeAlwaysEscaped: WordBool; safecall;
22    function Get_MaxIdentLength: Integer; safecall;
23    function Get_ReplaceRegExpDotsWithUnderscore: WordBool; safecall;
24    property TableCount: Integer read Get_TableCount;
25    property Table[Index: Integer]: ITableInfo read Get_Table;
26    property CLSID: GUID read Get_CLSID;
27    property DateLiteral: WideString read Get_DateLiteral;
28    property TimeLiteral: WideString read Get_TimeLiteral;
29    property DateTimeLiteral: WideString read Get_DateTimeLiteral;
30    property RegExpLiteral: WideString read Get_RegExpLiteral;
31    property ToBooleanLiteral: WideString read Get_ToBooleanLiteral;
32    property ToStringLiteral: WideString read Get_ToStringLiteral;
33    property AllowStartingWith: WordBool read Get_AllowStartingWith;
34    property AllowArrays: WordBool read Get_AllowArrays;
35    property DisallowNullsSorting: WordBool read Get_DisallowNullsSorting;
36    property DisallowSubqueries: WordBool read Get_DisallowSubqueries;
37    property DisallowBetween: WordBool read Get_DisallowBetween;
38    property LikeAlwaysEscaped: WordBool read Get_LikeAlwaysEscaped;
39    property MaxIdentLength: Integer read Get_MaxIdentLength;
40    property ReplaceRegExpDotsWithUnderscore: WordBool 
41      read Get_ReplaceRegExpDotsWithUnderscore;
42  end;

6.18.1. Свойства

Свойства интерфейса IInfoProvider :

Имя Тип Доступ Назначение
AllowArrays WordBool Только для чтения

AllowStartingWith WordBool Только для чтения

CLSID GUID Только для чтения

DateLiteral WideString Только для чтения

DateTimeLiteral WideString Только для чтения

DisallowBetween WordBool Только для чтения

DisallowNullsSorting WordBool Только для чтения

DisallowSubqueries WordBool Только для чтения

LikeAlwaysEscaped WordBool Только для чтения

MaxIdentLength Integer Только для чтения

RegExpLiteral WideString Только для чтения

ReplaceRegExpDotsWithUnderscore WordBool Только для чтения

Table[Index: Integer] ITableInfo Только для чтения

TableCount Integer Только для чтения

TimeLiteral WideString Только для чтения

ToBooleanLiteral WideString Только для чтения

ToStringLiteral WideString Только для чтения


6.18.2. Метод Connect

Метод интерфейса IInfoProvider .

1procedure IInfoProvider.Connect(const DataBase: WideString; 
2  const UserName: WideString; const Password: WideString);

Параметры:

Имя Тип Обязательно Значение
DataBase WideString Да

UserName WideString Да

Password WideString Да


6.18.3. Метод Perform

Метод интерфейса IInfoProvider .

function IInfoProvider.Perform(const SQL: WideString): IDataSet;

Параметры:

Имя Тип Обязательно Значение
SQL WideString Да

Замечания:

Возвращает значение типа IDataSet.


6.19. Интерфейс IInfoProvider2

 Диаграмма

01type
02  IInfoProvider2 = interface(IDispatch)
03    ['{BED44934-BCF9-4942-933D-591AB40D4CFE}']
04    function Get_AutoCheckKeys: WordBool; safecall;
05    function Get_OptionCount: Integer; safecall;
06    function Get_Option(Index: Integer): IOptionInfo; safecall;
07    property AutoCheckKeys: WordBool read Get_AutoCheckKeys;
08    property OptionCount: Integer read Get_OptionCount;
09    property Option[Index: Integer]: IOptionInfo read Get_Option;
10  end;

6.19.1. Свойства

Свойства интерфейса IInfoProvider2 :

Имя Тип Доступ Назначение
AutoCheckKeys WordBool Только для чтения

Option[Index: Integer] IOptionInfo Только для чтения

OptionCount Integer Только для чтения


6.20. Интерфейс IInfoProvider3

 Диаграмма

1type
2  IInfoProvider3 = interface(IDispatch)
3    ['{EF0E186A-4C72-4C40-B61C-72D7D03B2D10}']
4    procedure SetLogonInfo(const Login: WideString); safecall;
5  end;

6.20.1. Метод SetLogonInfo

Метод интерфейса IInfoProvider3 .

procedure IInfoProvider3.SetLogonInfo(const Login: WideString);

Параметры:

Имя Тип Обязательно Значение
Login WideString Да


6.21. Интерфейс IIntegerInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

01type
02  IIntegerInfo = interface(ITypeInfo)
03    ['{9003B25E-926D-42AE-A907-813DF3A8343E}']
04    function Get_MaxValue: Integer; safecall;
05    function Get_MaxValueUsed: WordBool; safecall;
06    function Get_MinValue: Integer; safecall;
07    function Get_MinValueUsed: WordBool; safecall;
08    property MaxValue: Integer read Get_MaxValue;
09    property MaxValueUsed: WordBool read Get_MaxValueUsed;
10    property MinValue: Integer read Get_MinValue;
11    property MinValueUsed: WordBool read Get_MinValueUsed;
12  end;

6.21.1. Свойства

Свойства интерфейса IIntegerInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Required WordBool Только для чтения

Унаследовано от ITypeInfo

SimpleType TSimpleType Только для чтения
MaxValue Integer Только для чтения

MaxValueUsed WordBool Только для чтения

MinValue Integer Только для чтения

MinValueUsed WordBool Только для чтения


6.22. Интерфейс INamedItemInfo

 Диаграмма

01type
02  INamedItemInfo = interface(IUnknown)
03    ['{14894363-28DA-4E71-B0BC-9C5CE811BC8F}']
04    function Get_Name: WideString; safecall;
05    function Get_Caption: WideString; safecall;
06    function Get_ID: WideString; safecall;
07    property Name: WideString read Get_Name;
08    property Caption: WideString read Get_Caption;
09    property ID: WideString read Get_ID;
10  end;

6.22.1. Свойства

Свойства интерфейса INamedItemInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

ID WideString Только для чтения

Name WideString Только для чтения


6.23. Интерфейс IOptionInfo

 Диаграмма Интерфейс INamedItemInfo

01type
02  IOptionInfo = interface(INamedItemInfo)
03    ['{453E81A2-969D-49DC-B3C6-ACAD411D63FC}']
04    function Get_TypeInfo: ITypeInfo; safecall;
05    function Get_Group: WideString; safecall;
06    function Get_Tab: WideString; safecall;
07    function Get_Value: OleVariant; safecall;
08    procedure Set_Value(Value: OleVariant); safecall;
09    property TypeInfo: ITypeInfo read Get_TypeInfo;
10    property Group: WideString read Get_Group;
11    property Tab: WideString read Get_Tab;
12    property Value: OleVariant read Get_Value write Set_Value;
13  end;

6.23.1. Свойства

Свойства интерфейса IOptionInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Group WideString Только для чтения

Tab WideString Только для чтения

TypeInfo ITypeInfo Только для чтения

Value OleVariant Чтение/Запись


6.24. Интерфейс IReferenceInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

1type
2  IReferenceInfo = interface(ITypeInfo)
3    ['{309C8CB1-4A1C-4E58-BC3F-D1AF27861A8F}']
4    function Get_TargetTable: ITableInfo; safecall;
5    property TargetTable: ITableInfo read Get_TargetTable;
6  end;

6.24.1. Свойства

Свойства интерфейса IReferenceInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Required WordBool Только для чтения

Унаследовано от ITypeInfo

SimpleType TSimpleType Только для чтения
TargetTable ITableInfo Только для чтения


6.25. Интерфейс IStringInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

1type
2  IStringInfo = interface(ITypeInfo)
3    ['{74AC4C03-E803-421B-B30D-1A2D2C49827F}']
4    function Get_Length: Integer; safecall;
5    property Length: Integer read Get_Length;
6  end;

6.25.1. Свойства

Свойства интерфейса IStringInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Required WordBool Только для чтения

Унаследовано от ITypeInfo

SimpleType TSimpleType Только для чтения
Length Integer Только для чтения


6.26. Интерфейс ITableInfo

 Диаграмма Интерфейс INamedItemInfo

01type
02  ITableInfo = interface(INamedItemInfo)
03    ['{3FC1998A-9031-4936-82B5-8CAA2219085E}']
04    function Get_FieldCount: Integer; safecall;
05    function Get_Field(Index: Integer): IFieldInfo; safecall;
06    function Get_PrimaryKey: IFieldInfo; safecall;
07    function Get_Uplink: IFieldInfo; safecall;
08    function Get_Parent: ITableInfo; safecall;
09    function Get_RootAvailable: WordBool; safecall;
10    property FieldCount: Integer read Get_FieldCount;
11    property Field[Index: Integer]: IFieldInfo read Get_Field;
12    property PrimaryKey: IFieldInfo read Get_PrimaryKey;
13    property Uplink: IFieldInfo read Get_Uplink;
14    property Parent: ITableInfo read Get_Parent;
15    property RootAvailable: WordBool read Get_RootAvailable;
16  end;

6.26.1. Свойства

Свойства интерфейса ITableInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Field[Index: Integer] IFieldInfo Только для чтения

FieldCount Integer Только для чтения

Parent ITableInfo Только для чтения

PrimaryKey IFieldInfo Только для чтения

RootAvailable WordBool Только для чтения

Uplink IFieldInfo Только для чтения


6.27. Интерфейс ITableInfo2

 Диаграмма Интерфейс ITableInfoИнтерфейс INamedItemInfo

01type
02  ITableInfo2 = interface(ITableInfo)
03    ['{9DF4C8AC-1DA2-4E7B-BF44-7EDD7A269418}']
04    function Get_PolymorphCount: Integer; safecall;
05    function Get_PolymorphTable(Index: Integer): ITableInfo; safecall;
06    function Get_PolymorphField(Index: Integer): IFieldInfo; safecall;
07    property PolymorphCount: Integer read Get_PolymorphCount;
08    property PolymorphTable[Index: Integer]: ITableInfo read Get_PolymorphTable;
09    property PolymorphField[Index: Integer]: IFieldInfo read Get_PolymorphField;
10  end;

6.27.1. Свойства

Свойства интерфейса ITableInfo2 :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Field[Index: Integer] IFieldInfo Только для чтения

Унаследовано от ITableInfo

FieldCount Integer Только для чтения
Parent ITableInfo Только для чтения
PrimaryKey IFieldInfo Только для чтения
RootAvailable WordBool Только для чтения
Uplink IFieldInfo Только для чтения
PolymorphCount Integer Только для чтения

PolymorphField[Index: Integer] IFieldInfo Только для чтения

PolymorphTable[Index: Integer] ITableInfo Только для чтения


6.28. Интерфейс ITableInfo3

 Диаграмма Интерфейс ITableInfoИнтерфейс INamedItemInfo

01type
02  ITableInfo3 = interface(ITableInfo)
03    ['{3FB73AA9-010C-48DA-81C7-E1DCFE2E6136}']
04    function GetPersistentClause(const Alias: WideString): WideString; safecall;
05    function GetPreConditionsCount: Integer; safecall;
06    function GetPreConditionCaption(Index: Integer): WideString; safecall;
07    function Get_ActivePreCondition(Index: Integer): WordBool; safecall;
08    procedure Set_ActivePreCondition(Index: Integer; Value: WordBool); safecall;
09    function GetPreConditionParamsCount(Index: Integer): Integer; safecall;
10    function GetPreConditionParam(Index: Integer; 
11      PreConditionIndex: Integer): IOptionInfo; safecall;
12    function GetPreConditionCategory(Index: Integer): WideString; safecall;
13    property ActivePreCondition[Index: Integer]: WordBool 
14      read Get_ActivePreCondition write Set_ActivePreCondition;
15  end;

6.28.1. Свойства

Свойства интерфейса ITableInfo3 :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Field[Index: Integer] IFieldInfo Только для чтения

Унаследовано от ITableInfo

FieldCount Integer Только для чтения
Parent ITableInfo Только для чтения
PrimaryKey IFieldInfo Только для чтения
RootAvailable WordBool Только для чтения
Uplink IFieldInfo Только для чтения
ActivePreCondition[Index: Integer] WordBool Чтение/Запись


6.28.2. Метод GetPersistentClause

Метод интерфейса ITableInfo3 .

function ITableInfo3.GetPersistentClause(const Alias: WideString): WideString;

Параметры:

Имя Тип Обязательно Значение
Alias WideString Да

Замечания:

Возвращает значение типа WideString.


6.28.3. Метод GetPreConditionCaption

Метод интерфейса ITableInfo3 .

function ITableInfo3.GetPreConditionCaption(Index: Integer): WideString;

Параметры:

Имя Тип Обязательно Значение
Index Integer Да

Замечания:

Возвращает значение типа WideString.


6.28.4. Метод GetPreConditionCategory

Метод интерфейса ITableInfo3 .

function ITableInfo3.GetPreConditionCategory(Index: Integer): WideString;

Параметры:

Имя Тип Обязательно Значение
Index Integer Да

Замечания:

Возвращает значение типа WideString.


6.28.5. Метод GetPreConditionParam

Метод интерфейса ITableInfo3 .

1function ITableInfo3.GetPreConditionParam(Index: Integer; 
2  PreConditionIndex: Integer): IOptionInfo;

Параметры:

Имя Тип Обязательно Значение
Index Integer Да

PreConditionIndex Integer Да

Замечания:

Возвращает значение типа IOptionInfo.


6.28.6. Метод GetPreConditionParamsCount

Метод интерфейса ITableInfo3 .

function ITableInfo3.GetPreConditionParamsCount(Index: Integer): Integer;

Параметры:

Имя Тип Обязательно Значение
Index Integer Да

Замечания:

Возвращает значение типа Integer.


6.28.7. Метод GetPreConditionsCount

Метод интерфейса ITableInfo3 .

function ITableInfo3.GetPreConditionsCount: Integer;

Метод не имеет параметров.

Замечания:

Возвращает значение типа Integer.


6.29. Интерфейс ITimeInfo

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

1type
2  ITimeInfo = interface(ITypeInfo)
3    ['{D7067CAC-67A5-41DB-8D95-40409D8658AB}']
4  end;

6.30. Интерфейс ITypeInfo

 Диаграмма Интерфейс INamedItemInfo

1type
2  ITypeInfo = interface(INamedItemInfo)
3    ['{2B6A5E20-3C36-4574-89DB-7C873A5C4A00}']
4    function Get_Required: WordBool; safecall;
5    function Get_SimpleType: TSimpleType; safecall;
6    property Required: WordBool read Get_Required;
7    property SimpleType: TSimpleType read Get_SimpleType;
8  end;

6.30.1. Свойства

Свойства интерфейса ITypeInfo :

Имя Тип Доступ Назначение
Caption WideString Только для чтения

Унаследовано от INamedItemInfo

ID WideString Только для чтения
Name WideString Только для чтения
Required WordBool Только для чтения

SimpleType TSimpleType Только для чтения


6.31. Интерфейс ITypeInfo2

 Диаграмма Интерфейс ITypeInfoИнтерфейс INamedItemInfo

1type
2  ITypeInfo2 = interface(ITypeInfo)
3    ['{77F58BDF-F01C-40F3-B193-1027AD8C4EDA}']
4    function GetSpecialFilterCount: Integer; safecall;
5    function GetSpecialFilterText(Index: Integer): WideString; safecall;
6    function EditSpecialFilter(Index: Integer; var Filter: WideString): WordBool; safecall;
7  end;

6.31.1. Метод EditSpecialFilter

Метод интерфейса ITypeInfo2 .

1function ITypeInfo2.EditSpecialFilter(Index: Integer; 
2  var Filter: WideString): WordBool;

Параметры:

Имя Тип Обязательно Значение
Index Integer Да

Filter WideString Да

Замечания:

Возвращает значение типа WordBool.


6.31.2. Метод GetSpecialFilterCount

Метод интерфейса ITypeInfo2 .

function ITypeInfo2.GetSpecialFilterCount: Integer;

Метод не имеет параметров.

Замечания:

Возвращает значение типа Integer.


6.31.3. Метод GetSpecialFilterText

Метод интерфейса ITypeInfo2 .

function ITypeInfo2.GetSpecialFilterText(Index: Integer): WideString;

Параметры:

Имя Тип Обязательно Значение
Index Integer Да

Замечания:

Возвращает значение типа WideString.