GetNewParamWindow

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Присвоение транзакции управляющим элементам окна параметров)
(Пример использования)
 
Строка 133: Строка 133:
  
 
Запустить диалог с переданным списком параметров.
 
Запустить диалог с переданным списком параметров.
 +
 +
==Особенности работы с параметром Ссылка на множество==
 +
 +
Для параметра Ссылка на множество свои правила построения запроса. В запросе таблица получает алиас gg1.
 +
 +
Пример настройки:
 +
 +
Таблица: gd_contact
 +
Поля: id, name
 +
Условие: ID IN (тут любой запрос)
 +
 +
или
 +
 +
<source lang="sql">
 +
EXISTS( SELECT * FROM GD_CONTACT c......... WHERE c.ID = gg1.ID)
 +
</source>
  
 
==Пример использования==
 
==Пример использования==

Текущая версия на 12:58, 30 августа 2022

Окно ввода параметров макроса или отчета создается с помощью метода GetNewParamWindow глобального объекта System.

GetNewParamWindow(WindowKey: Integer): IgsParamWindow

где WindowKey — хэндл родительского окна.

Пример:

dim Win
set Win = System.GetNewParamWindow(0)

Объект окна поддерживает интерфейс IgsParamWindow.

[править] Свойства IgsParamWindow

[править] ParamList

property ParamList: TgsParamList;

Возвращает объект класса TgsParamList, содержащий список параметров, которые должен отобразить диалог. Свойство доступно для чтения, то есть ему нельзя присвоить новый список, можно только редактировать существующий.

[править] Методы IgsParamWindow

[править] AddParam

procedure AddParam (ParamName: String; 
          ParamType: String; 
          Comment: String)

Добавляет в список параметров окна новый параметр. Например,

Win.AddParam "Параметр 1", "PRMDate", "Parameter 1"

ParamType может иметь следующие значения:

  • prmInteger — целое число
  • prmFloat — число с плавающей точкой
  • prmDate — дата
  • prmDateTime — дата и время
  • prmTime — время
  • prmString — строка
  • prmBoolean — логическое значение
  • prmNoQuery — параметр не отображается в диалоге
  • prmEnumElement
  • prmEnumSet
  • prmPeriod - период дат
  • prmList - список значений
  • prmRadioButtons - выбор значения
  • prmCheckBoxs - множество значений

[править] AddLinkParam

procedure AddLinkParam(ParamName: String; 
              ParamType: String; 
              TableName: String; 
              PrimaryName: String;
              DisplayName: String; 
              LinkCondition: String; 
              LinkLanguage: String; 
              Comment: String)

Добавляет в список параметров окна новый параметр типа ссылка. Константы типов:

  • prmLinkElement — ссылка на элемент
  • prmLinkSet — множество элементов

Например,

Win.AddLinkParam "Параметр 2", "PRMLinkElement", "GD_USER", "ID", "NAME", "", "", ""

[править] Execute

function Execute: Variant

Запустить диалог с параметрами заполненными через методы AddParam, AddLinkParam или свойство ParamList. Функция возвращает массив Variant с введенными параметрами. Причем "простые" параметры возвращаются как простые элементы массива, а параметры типа prmLinkElement и prmLinkSet как массивы. Например,

Win.AddParam "Параметр 1", "PRMDate", "Parameter 1"
Win.AddLinkParam "Параметр 2", "PRMLinkElement", "GD_USER", "ID", "NAME", "", "", ""
Result = Win.Execute

Получим окно следующего вида:

Paramwnd.jpg

После нажатия "ОК" получим: в Result(0) — дата, в Result(1)(0) — ID администратора. Если нажать "Отмена", Result будет Empty!

[править] ExecuteWithParam

function ExecuteWithParam(ParamName: String; 
                  ParamType: String;                                     
                  Comment: String): Variant

Для единственного "простого" параметра — добавить его и вызвать окно.

[править] ExecuteWithLinkParam

function ExecuteWithLinkParam(ParamName: String;
                      ParamType: String; 
                      TableName: String; 
                      PrimaryName: String;
                      DisplayName: String; 
                      LinkCondition: String; 
                      LinkLanguage: String; 
                      Comment: String): Variant

Для единственного параметра-ссылки — добавить его и вызвать окно.

[править] ExecuteWithParamList

function ExecuteWithLinkParam(ParamList: TgsParamList): Variant

Запустить диалог с переданным списком параметров.

[править] Особенности работы с параметром Ссылка на множество

Для параметра Ссылка на множество свои правила построения запроса. В запросе таблица получает алиас gg1.

Пример настройки:

Таблица: gd_contact Поля: id, name Условие: ID IN (тут любой запрос)

или

EXISTS( SELECT * FROM GD_CONTACT c......... WHERE c.ID = gg1.ID)

[править] Пример использования

option explicit
sub MacrosParamWindow
dim ParamList, ParamWindow, ParamIndex, Result
 
  ' Создание диалога
  set ParamWindow = System.GetNewParamWindow(0)
  ' Добавление параметра через объект-диалог
  call ParamWindow.AddParam("paramInteger", "prmInteger", "paramInteger")
  ParamWindow.ParamList.Params(0).Required = True
 
  call ParamWindow.AddLinkParam("paramSet", "prmLinkSet", "gd_contact", "id", "name", "", "", "paramSet")
  ParamWindow.ParamList.Params(1).Required = True
  ParamWindow.ParamList.Params(1).Value = Array(650001)
 
  ' Присвоим список параметров отдельной переменной
  set ParamList = ParamWindow.ParamList
 
  call ParamList.AddParam("paramString", "prmString", "paramString")
  ParamList.Params(2).Required = True
  ParamList.Params(2).Value = Date
 
  call ParamList.AddParam("paramDate", "prmDate", "paramDate")
 
  ' Функции добавления параметров возвращают индекс параметра в массиве
  ParamIndex = ParamList.AddLinkParam("paramElement", _
    "prmLinkElement", "gd_contact", "id", "name", _
    "", "", "paramElement")
  ParamList.Params(ParamIndex).Required = True
  ParamList.Params(ParamIndex).Value = Array(650001)
 
  ' Отображение диалога и получение результата
  Result = ParamWindow.ExecuteWithParamList(ParamList)
 
  if not IsEmpty(Result) then
    call MsgBox("paramInteger = " & CStr(Result(0)))
    call MsgBox("paramSet (first element) = " & CStr(Result(1)(0)))
    call MsgBox("paramString = " & Result(2))
    call MsgBox("paramDate = " & CStr(Result(3)))
    call MsgBox("paramElement = " & CStr(Result(4)(0)))
  end if
 
end sub

[править] Присвоение транзакции управляющим элементам окна параметров

По умолчанию такие управляющие элементы окна ввода параметров, как выпадающий список выбора объекта и выпадающий список выбора множества объектов работают на своих автономных транзакциях. Если надо подключить их к некоторой общей внешней транзакции, следует использовать свойство Transaction параметра:

  ...
  Dim Transaction
  Set Transaction = Designer.CreateObject(nil, "TIBTransaction", "") 
 
  ...
  ParamIndex = ParamList.AddLinkParam("paramElement", "prmLinkElement", _
    "gd_contact", "id", "name", "", "", "paramElement")
  ParamList.Params(ParamIndex).Required = True
  ParamList.Params(ParamIndex).Value = Array(650001)
  ParamList.Params(ParamIndex).Transaction = Transaction
  '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
  ...
  Designer.DestroyObject(Transaction)
  ...
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты