GetNewParamWindow

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Пример использования)
(Пример использования)
 
(не показаны 6 промежуточных версий 2 участников)
Строка 54: Строка 54:
 
* prmNoQuery — параметр не отображается в диалоге
 
* prmNoQuery — параметр не отображается в диалоге
  
 +
* prmEnumElement
 +
* prmEnumSet
 +
* prmPeriod - период дат
 +
* prmList - список значений
 +
* prmRadioButtons - выбор значения
 +
* prmCheckBoxs - множество значений
 
===AddLinkParam===
 
===AddLinkParam===
 
<source lang="delphi">
 
<source lang="delphi">
Строка 127: Строка 133:
  
 
Запустить диалог с переданным списком параметров.
 
Запустить диалог с переданным списком параметров.
 +
 +
==Особенности работы с параметром Ссылка на множество==
 +
 +
Для параметра Ссылка на множество свои правила построения запроса. В запросе таблица получает алиас gg1.
 +
 +
Пример настройки:
 +
 +
Таблица: gd_contact
 +
Поля: id, name
 +
Условие: ID IN (тут любой запрос)
 +
 +
или
 +
 +
<source lang="sql">
 +
EXISTS( SELECT * FROM GD_CONTACT c......... WHERE c.ID = gg1.ID)
 +
</source>
  
 
==Пример использования==
 
==Пример использования==
Строка 157: Строка 179:
 
   ' Функции добавления параметров возвращают индекс параметра в массиве
 
   ' Функции добавления параметров возвращают индекс параметра в массиве
 
   ParamIndex = ParamList.AddLinkParam("paramElement", _
 
   ParamIndex = ParamList.AddLinkParam("paramElement", _
     "prmLinkElement", "gd_contact", "name", _
+
     "prmLinkElement", "gd_contact", "id", "name", _
     "id", "", "", "paramElement")
+
     "", "", "paramElement")
 
   ParamList.Params(ParamIndex).Required = True
 
   ParamList.Params(ParamIndex).Required = True
 
   ParamList.Params(ParamIndex).Value = Array(650001)
 
   ParamList.Params(ParamIndex).Value = Array(650001)
Строка 174: Строка 196:
  
 
end sub
 
end sub
 
 
</source>
 
</source>
 +
 +
===Присвоение транзакции управляющим элементам окна параметров===
 +
 +
По умолчанию такие управляющие элементы окна ввода параметров, как выпадающий список выбора объекта и выпадающий список выбора множества объектов работают на своих автономных транзакциях. Если надо подключить их к некоторой общей внешней транзакции, следует использовать свойство '''Transaction''' параметра:
 +
 +
<syntaxhighlight lang="vbnet">
 +
  ...
 +
  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)
 +
  ...
 +
</syntaxhighlight>
  
 
[[Category:VBScript]]
 
[[Category:VBScript]]
 +
[[Category:Руководство разработчика]]
 +
[[Category:Учебный курс]]
  
 
__NOTOC__
 
__NOTOC__

Текущая версия на 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)
  ...
Персональные инструменты
Пространства имён

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