|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Параметры выборки
Время создания: 13.04.2017 15:28
Раздел: Global - Programming - Скрипт
Запись: xintrea/mytetra_db_mcold/master/base/1492086484rgg628k4cr/text.html на raw.githubusercontent.com
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.3.5. Параметры выборки Для доступа к параметрам используются следующие префиксы:
При обращении к параметрам допускается также использование комбинаций префиксов со следующими ограничениями:
Примеры:¶ <pascal> id1 := GetVar('id'); //получение значения параметра 'id' текущей выборки id2 := GetVar('super$id'); //получение значения параметра 'id' мастер-выборки id3 := GetVar('super$super$id'); //получение значения параметра 'id' мастер-выборки мастер-выборки flt1 := GetVar('filter$flt'); //получение значения параметра фильтрации 'flt' текущей выборки flt2 := GetVar('super$filter$flt'); //получение значения параметра фильтрации 'flt' мастер-выборки flt2OldValue := GetVar('super$old$filter$flt'); //получение предыдущего значения параметра фильтрации 'flt' мастер-выборки </pascal> Служебные префиксы используются только для получения доступа к уже существующим параметрам и не могут использоваться при создании новых параметров. При необходимости создать внутренний параметр в мастере выборки используйте свойство 'Master'. Примеры:¶ <pascal> Selection.Master.AddVar('param1', 'value', ftString); //Правильно Selection.AddVar('super$param1', 'value', ftString); //Неправильно </pascal>
Параметры выборки могут быть "стойкие" (persistent) или "не стойкие" (по умолчанию). Если параметр является стойким, то при закрытии выборки он сохранит свое значение и восстановит его при новом открытии этой выборки, после вызовов OnLoadMeta, OnFilterInit, до вызова BeforeOpen. При закрытии датасета и новом открытии настройки заново не загружаются. У процедуры создания параметров выборки TbtkScriptSelectionObject.AddVar есть параметр APersistence, который указывает, является ли параметр стойким, а также задаёт место, где будет храниться значение параметра. procedure TbtkScriptSelectionObject.AddVar( AName: String; AValue: Variant; AType: Variant; APersistence: TbtkPersistentType default ptNone); Параметр APersistence имеет тип TbtkPersistentType. Описание принимаемых им значений:
Пример: <pascal> AddVar('PersistVar', 'DefaultValue', ftString, ptRegistry); <pascal> 3.3.5.4. Алгоритм поиска параметров При обращении к параметрам через паскаль операции используется следующий алгоритм поиска параметра:
отбрасываем префикс, ищем параметр в мастере отбрасываем префикс, ищем в параметрах фильтрации если параметр не найден ищем параметр в мастере если параметр не найден ищем в параметрах фильтрации если параметр не найден ищем параметр в мастере 3.3.5.5. Методы паскаль операций Для проверки существования параметров используется функция VarExists. procedure VarExists(AName: string); Для добавления внутренних параметров выборки используется метод AddVar. procedure AddVar( AName: string; AValue: Variant; ADataType: TFieldType; APersistent: TbtkPersistentType);
Но при добавлении новых внутренних параметров следует избегать использования зарезервированных префиксов в названиях и не использовать в качестве названия пустую строку. Примеры корректного вызова:¶ <pascal> Selection.AddVar('var1', 'Value', ftString, ptRegistry); //добавление строкового стойкого параметра в текущую выборку AddVar('id', 123, ftInteger, ptNone); //добавление не стойкого целочисленного параметра в текущую выборку CustomSel.AddVar('anyVar', null, ftUnknown); //добавление не стойкого параметра типа ftUnknown в выборку "CustomSel" <pascal> Примеры некорректного вызова:¶ <pascal> Selection.AddVar('Var1', 'Value', ftFloat); //задаваемое значение ('Value') невозможно представить в указанном типе (ftFloat) AddVar('', 123, ftInteger); //не указано имя параметра CustomSel.AddVar('super$anyVar', null, ftUnknown); //в имени параметра используется зарезервированный префикс 'super$' <pascal> Метод SetVar используется для установки значений:
3.3.5.6.1. Макросы фильтрации и условия Alias
Эти макросы используются для "оборачивания" исходного запроса данных следующим образом: select ServFilterAliasMacros.*
from (<исходный запрос>) &ServFilterAliasMacros
where &DefUniFltMacros and &DefUniFltMacrosRO
Оборачивание происходит на применении фильтра. Вид обертки может меняться: если в исходном запросе уже имеются некоторые из указанных макросов, или соответствующие им значения пусты, то эти макросы к запросу не приписываются. Условия добавления макросов: &ServFilterAliasMacros - добавляется с оборотом запроса только в случае, если выполнены следующие условия:
&DefUniFltMacros и &DefUniFltMacrosRO независимо дописываются, если:
Примечание: &ServFilterAliasMacros заполняется (может быть прописан в запросе вручную) только при активных операциях универсального фильтра. Об использовании макросов фильтрации и операций серверного фильтра см. в статье: http://wiki.gs.local/index.php/Фильтрация_серверая#Паскаль-события_фильтрации> 3.3.5.6.2. Макросы сортировки:
Макрос сортировки, содержащий накладываемые фильтрами значения. Подробнее см. в статье:http://wiki.gs.local/index.php/Сортировка_серверная 3.3.5.6.3. Свойства выборки, отключающие применение макросов фильтрации и сортировки:
Перечисленные свойства располагаются в свойствах выборки на закладке "дополнительные свойства", в группе "макросы". 3.3.5.6.4. Смена макросов и переоткрытие выборки Во избежание лишних переоткрытий датасета, решено поддерживать следующую логику при смене значений макросов:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Так же в этом разделе:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|