Мельница данных- Руководство разработчика для построителя запросов (раздел целиком) (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;
|
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;Набор данных представляет собой однонаправленный курсор, каждая строка которого является набором именованных и нумерованных полей.
|
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-запросе, идентификатор необходим для идентификации сущности в рамках провайдера, таблицы и типы данных имеют глобальное пространство идентификаторов, поля имеют уникальные идентификаторы в пределах последовательности наследуемых таблиц. Никаких ограничений на значения идентификаторов, кроме уникальности, не накладывается.
|
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;
|
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;Полиморфной ссылкой является, например, ссылка, физически размещенная в родительской таблице, указывающая на свою запись. Реализация этого интерфейса не является обязательной.
|
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;
|
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;
|
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;Информация о конкретном типе передается при помощи реализации одного из наследников этого интерфейса.
|
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;
|
2.6.2. Интерфейс IStringInfo |
Информация о строковом типе (наследник интерфейса ITypeInfo) 1 IStringInfo = interface(ITypeInfo) 2 ['{74AC4C03-E803-421B-B30D-1A2D2C49827F}'] 3 function Get_Length: Integer; safecall; 4 end;
|
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;
|
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;
|
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;
|
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;Перечислимый тип определяет набор значений, которые может принимать поле. Значения в таблице трактуются как равные имени элемента перечисления.
|
2.6.10. Интерфейс IReferenceInfo |
Информация о типе "ссылка" (наследник интерфейса ITypeInfo ) 1 IReferenceInfo = interface(ITypeInfo) 2 ['{309C8CB1-4A1C-4E58-BC3F-D1AF27861A8F}'] 3 function Get_TargetTable: ITableInfo; safecall; 4 end;
|
2.6.11. Интерфейс IBlobInfo |
Информация о типе "больших двоичных объектов" (наследник интерфейса ITypeInfo ) 1 IBlobInfo = interface(ITypeInfo) 2 ['{3905C9C4-EAEB-4844-BB55-3F524F1F3FAC}'] 3 function Get_SubType: TBlobSubType; safecall; 4 end;
|
2.7. Интерфейс IEnumerationItem |
Информация об элементе перечисления (наследник INamedItemInfo ) 1 IEnumerationItem = interface(INamedItemInfo) 2 ['{6953507C-D477-4B8D-9443-A9E5FE7137ED}'] 3 function Get_Position: Integer; safecall; 4 end;Значения в таблице трактуются как равные имени элемента перечисления.
|
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-документом, описывающим запрос.
|
3.2. Информация о базе данных |
Провайдер Парус8 предоставляет информацию о четырех типах таблиц:
|
4. Разработка шаблонов | ||||
Шаблон представляет собой обычную рабочую книгу Excel. Шаблоны для переноса данных в Excel физически интегрируются внутрь .MQR-файла и хранятся вместе с запросом. Разработку шаблона можно вести независимо, используя только Microsoft Excel (запуская его самостоятельно), а потом загрузить в файл запроса, а можно воспользоваться пунктом меню "Редактировать" на странице "Шаблоны". Для взаимодействия с источником данных рабочая книга-шаблон должна содержать в любом модуле макрос с именем "Template" (без кавычек) с одним параметром. При выполнении переноса данных по этому шаблону QueryBuilder произведет вызов этого метода, передав в качестве фактического значения параметра объект, реализующий интерфейс IExternalQuery. Никаких других требований к рабочей книге-шаблону не выдвигается.
|
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;
|
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;Набор данных представляет собой однонаправленный курсор, каждая строка которого является набором именованных и нумерованных полей.
|
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;
|
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; Элементы перечисления:
|
6.2. Перечисление TBlobSubType | ||||||||||||
1type 2 TBlobSubType = (bsText, bsImage, bsBinary); Или 1type 2 TBlobSubType = TOleEnum; 3const 4 bsText = $00000000; 5 bsImage = $00000001; 6 bsBinary = $00000002; Элементы перечисления:
|
6.3. Перечисление TDisplayMode | ||||||||||||
1type 2 TDisplayMode = (dmAlways, dmNever, dmOnDemand); Или 1type 2 TDisplayMode = TOleEnum; 3const 4 dmAlways = $00000000; 5 dmNever = $00000001; 6 dmOnDemand = $00000002; Элементы перечисления:
|
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; Элементы перечисления:
|
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 :
|
6.5.2. Метод Execute | ||||||||||||
Метод интерфейса IApplication . 1procedure IApplication.Execute(const Provider: IUnknown; 2 const Query: OleVariant); Параметры:
|
6.5.3. Метод ExecuteTemplate | ||||||||||||||||
Метод интерфейса IApplication . 1procedure IApplication.ExecuteTemplate(const Provider: IUnknown; 2 const Query: OleVariant; const TemplateName: WideString); Параметры:
|
6.6. Интерфейс IBlobInfo |
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 :
|
6.7. Интерфейс IBooleanInfo |
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 :
|
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 :
|
6.8.2. Метод Eof |
Метод интерфейса IDataSet . function IDataSet.Eof: WordBool; Метод не имеет параметров. Замечания: Возвращает значение типа WordBool. |
6.8.3. Метод Next |
6.9. Интерфейс IDateInfo |
1type 2 IDateInfo = interface(ITypeInfo) 3 ['{DA392510-105F-4655-9A38-18ECA2FBEB97}'] 4 end; |
6.10. Интерфейс IDateTimeInfo |
1type 2 IDateTimeInfo = interface(ITypeInfo) 3 ['{7F5CC8F9-8CE1-4DB7-8932-884EF3BAB538}'] 4 end; |
6.11. Интерфейс IEnumerationInfo |
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 :
|
6.12. Интерфейс IEnumerationItem |
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 :
|
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 :
|
6.13.2. Метод Eof |
Метод интерфейса IExternalDataSet . function IExternalDataSet.Eof: WordBool; Метод не имеет параметров. Замечания: Возвращает значение типа WordBool. |
6.13.3. Метод 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 :
|
6.14.2. Метод PlaceCurrentQuery | ||||||||||||||||||||||||||||
Метод интерфейса IExternalQuery . 1procedure IExternalQuery.PlaceCurrentQuery(const Sheet: IDispatch; 2 CaptionsNeeded: WordBool; Row: Integer; Column: Integer; ShiftRows: WordBool; 3 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); Параметры:
|
6.14.4. Метод Select | ||||||||
Метод интерфейса IExternalQuery . function IExternalQuery.Select(const SQL: WideString): IExternalDataSet; Параметры:
Замечания: Возвращает значение типа IExternalDataSet. |
6.14.5. Метод SelectedRecord | ||||||||
Метод интерфейса IExternalQuery . function IExternalQuery.SelectedRecord(Index: Integer): OleVariant; Параметры:
Замечания: Возвращает значение типа OleVariant. |
6.14.6. Метод SelectedRecordsCount |
Метод интерфейса IExternalQuery . function IExternalQuery.SelectedRecordsCount: Integer; Метод не имеет параметров. Замечания: Возвращает значение типа Integer. |
6.15. Интерфейс IFieldInfo |
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 :
|
6.16. Интерфейс IFieldInfo2 |
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 :
|
6.17. Интерфейс IFloatInfo |
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 :
|
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 :
|
6.18.2. Метод Connect | ||||||||||||||||
Метод интерфейса IInfoProvider . 1procedure IInfoProvider.Connect(const DataBase: WideString; 2 const UserName: WideString; const Password: WideString); Параметры:
|
6.18.3. Метод Perform | ||||||||
Метод интерфейса IInfoProvider . function IInfoProvider.Perform(const SQL: WideString): IDataSet; Параметры:
Замечания: Возвращает значение типа 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 :
|
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); Параметры:
|
6.21. Интерфейс IIntegerInfo |
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 :
|
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 :
|
6.23. Интерфейс IOptionInfo |
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 :
|
6.24. Интерфейс IReferenceInfo |
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 :
|
6.25. Интерфейс IStringInfo |
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 :
|
6.26. Интерфейс ITableInfo |
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 :
|
6.27. Интерфейс ITableInfo2 |
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 :
|
6.28. Интерфейс ITableInfo3 |
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 :
|
6.28.2. Метод GetPersistentClause | ||||||||
Метод интерфейса ITableInfo3 . function ITableInfo3.GetPersistentClause(const Alias: WideString): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
6.28.3. Метод GetPreConditionCaption | ||||||||
Метод интерфейса ITableInfo3 . function ITableInfo3.GetPreConditionCaption(Index: Integer): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
6.28.4. Метод GetPreConditionCategory | ||||||||
Метод интерфейса ITableInfo3 . function ITableInfo3.GetPreConditionCategory(Index: Integer): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
6.28.5. Метод GetPreConditionParam | ||||||||||||
Метод интерфейса ITableInfo3 . 1function ITableInfo3.GetPreConditionParam(Index: Integer; 2 PreConditionIndex: Integer): IOptionInfo; Параметры:
Замечания: Возвращает значение типа IOptionInfo. |
6.28.6. Метод GetPreConditionParamsCount | ||||||||
Метод интерфейса ITableInfo3 . function ITableInfo3.GetPreConditionParamsCount(Index: Integer): Integer; Параметры:
Замечания: Возвращает значение типа Integer. |
6.28.7. Метод GetPreConditionsCount |
Метод интерфейса ITableInfo3 . function ITableInfo3.GetPreConditionsCount: Integer; Метод не имеет параметров. Замечания: Возвращает значение типа Integer. |
6.29. Интерфейс ITimeInfo |
1type 2 ITimeInfo = interface(ITypeInfo) 3 ['{D7067CAC-67A5-41DB-8D95-40409D8658AB}'] 4 end; |
6.30. Интерфейс ITypeInfo |
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 :
|
6.31. Интерфейс ITypeInfo2 |
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; Параметры:
Замечания: Возвращает значение типа WordBool. |
6.31.2. Метод GetSpecialFilterCount |
Метод интерфейса ITypeInfo2 . function ITypeInfo2.GetSpecialFilterCount: Integer; Метод не имеет параметров. Замечания: Возвращает значение типа Integer. |
6.31.3. Метод GetSpecialFilterText | ||||||||
Метод интерфейса ITypeInfo2 . function ITypeInfo2.GetSpecialFilterText(Index: Integer): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |