TdeModifySQLWrapper

Модуль dw funcs

TdeModifySQLWrapper - класс обёртка над SQL выражениями модификации данных. Служит для упрощения работы.

Описание :

После создания TdeModifySQLWrapper, в него добавляются поля, используемые для сборки и применения конструкций типа: "insert Into", "Update" и "Update or Insert".

В качестве значений полей могут быть:

* Непосредственно значения (Variant)
* Потоки (TStream)
* Поля внешнего набора данных (TField), откуда параметрам=полям модификатора присваиваются значения.

Исполнение запускается методами Execute - для разового применения, или ExecuteDS - для применения по каждой строчке набора данных. При работе по набору данных, нужно указать имя поле во внешнем источнике данных или связать само поле методом SetFieldExt. Применяются конструкции "insert Into", "Update" и "Update or Insert", с заданным синтаксисом для выбранного типа базы данных.

Методы и свойства:

* **AddField** - Добавляет поле. Имеет "Tail синтаксис" : Tdemw\_ValueTail позволяющий задавать значения и привязывать имя поля внешнего источника данных. Синтаксис : *function AddField(aFieldName : string; aDataType : TFieldType; const aSize : integer = -1) : Tdemw\_ValueTail*
* **AddFieldsDS** - Добавляет поля из набора данных. aSetFieldsExtName *=* True означает, что имя поля так же будет испоьзоваться для связи с внешним источником данных. Имеет "Tail синтаксис" : Tdemw\_AddFieldsDSTail исключающий или определяющий подмножество полей. Синтаксис *function AddFieldsDS(aDW : TdwDataSet;aSetFieldsExtName : boolean) : Tdemw\_AddFieldsDSTail*
* **Field** - Индексное свойство, предоставляющее доступ к управлению значениями и свойствами поля модификатора через "Tail синтаксис" : Tdemw\_ValueTail. Синтаксис: *property Value[string] : Tdemw\_ValueTail. Readonly.*
* **SetValue** - устанавливает значение полю. Синтаксис : *procedure SetValue(aFieldName : string;  aValue : variant)*
* **SetValueDSRow** - устанавливает значения полям из текущей строчки набора данных. Для связи использует aFieldNameExt, заданные при добавлении поля. Синтаксис : *procedure SetValueDSRow(adwDataSet : TdwDataSet)*
* **GetSQL** - выдаёт результирующую конструкцию, которая будет применяться к базе данных. Синтаксис : *function GetSQL(aSQLTemplate : string) : string*
* **Execute** - исполняет запрос на модификацию данных. Если adwTransaction = nil, то открывает и закрывает (Commit) транзакцию. Синтаксис : *procedure Execute(aSQLTemplate : string;adwTransaction : TdwTransaction = nil)*
* **ExecuteDS** - Для каждой строчки набора данных adwDataSet исполняет запрос на модификацию данных Синтаксис : *procedure ExecuteDS(aSQLTemplate : string;adwDataSet : TdwDataSet;adwTransaction : TdwTransaction = nil)*
* **UpdateTemplate** - возвращает шаблон конструкции "Update" для таблицы aTableName и с секцией where из aWhereStr (Пример: Field1 = 99 and Field2 <> 30). aWhereStr может содержать параметры (Пример: Field1 = :Parametr1). В этом случае, параметры добавляются в модификатор как поле и им выставляется значение "ConditionOnly" (Tdemw\_ValueTail.SetConditionOnly(aConditionOnly : boolean)), что исключает это поле из секций модификации ("Insert","Update"). Синтаксис : *function UpdateTemplate(aTableName,aWhereStr : string) : string*
* **InsertTemplate** - возвращает шаблон конструкции "Insert" для таблицы aTableName Синтаксис : *function InsertTemplate(aTableName : string) : string*
* **UpdateOrInsertTemplate** - возвращает шаблон конструкции "Update or Insert" для таблицы aTableName. В aMatchingStr должно содержаться перечисление полей через звпятую для секции "Matching" Синтаксис : *function UpdateOrInsertTemplate(aTableName,aMatchingStr : string) : string*

"Tail синтаксис" : Tdemw\_ValueTail - предоставляет доступ к управлению значениями поля модификатора:

* **SetVariant** - Присваивает значения типа Variant. Синтаксис : *function SetVariant( aValue : variant) : Tdemw\_ValueTail*
* **SetStream** - Устанавливает значение типа TStream. В DML скрипт передается как параметр для Blob поля. Синтаксис: *function SetStream( aStream : TStream) : Tdemw\_ValueTail*
* **SetFieldExt** - Связывает поле внешнего набора данных с полем модификатора для последующего присвоения значений. В DML скрипт передается как параметр. Синтаксис : *function SetFieldExt( aField : TField) : Tdemw\_ValueTail*
* **SetFieldExtName** - Связывает имя поля внешнего набора данных с полем модификатора для последующего присвоения значений. Синтаксис : *function SetFieldExtName( aFieldNameExt : string) : Tdemw\_ValueTail*
* **SetConditionOnly** - Присваивает полю атрибут "Только для условия". Поле с выставленным атрибутом (True) исключается из секций модификации ("Insert","Update") и используется только в условиях. Синтаксис: *function SetConditionOnly(aConditionOnly : boolean) : Tdemw\_ValueTail*
* **SetSize** - Изменяет у поля размер = длина, по которой модификатор будет обрезать строки при вставке / изменении данных. Синтаксис : *function SetSize( aSize : integer) : Tdemw\_ValueTail*

 "Tail синтаксис" : Tdemw\_AddFieldsDSTail - определяет / ограничивает подмножество полей, задаваемых из внешнего источника данных. При помощи него можно исключить, например идентификатор, из DML скрипта.

* **IncludeFields** - Содержит перечень полей из множества внешнего набора данных, которые будут созданы в модификаторе. Синтаксис : *procedure IncludeFields( aFieldNames : TStringArray)*
* **ExcludeFields** - Содержит перечень полей из множества внешнего набора данных, которые будут исключены из модификатора. Синтаксис : *procedure ExcludeFields( aFieldNames : TStringArray)*

В качестве шаблонов, так же, могут применяться строковые выражения с предопределенными секциями :

* **SET\_AS\_UPDATE** для конструкций типа : update table set [SET\_AS\_UPDATE] where id = id\_value
* **FIELDS\_AS\_INSERT** и **FIELDS\_VALUE\_AS\_INSERT** для конструкций типа : insert into table ([FIELDS\_AS\_INSERT]) values ([FIELDS\_VALUE\_AS\_INSERT])

История версий:

* Версия до 5.164