Gedemin TLB.IgsQueryList.Abort

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «{{MethodDef_Template|unit={{#explode:{{PAGENAME}}|.|0}}|visibility=public|class={{#explode:{{PAGENAME}}|.|1}}|src=procedure Abort(const AMessage: WideString; APre…»)
 
 
(не показаны 3 промежуточные версии 1 участника)
Строка 4: Строка 4:
  
 
;AMessage: Сообщение, которое будет показано пользователю. Если задать пустую строку, то построение отчета прервется без вывода на экран каких либо дополнительных окон и сообщений.
 
;AMessage: Сообщение, которое будет показано пользователю. Если задать пустую строку, то построение отчета прервется без вывода на экран каких либо дополнительных окон и сообщений.
;APreserveData: Не очищать BaseQueryList. Если задано True, то значение параметра ARollback ни на что не влияет.
+
;APreserveData: APreserveData = True -- не очищать [[BaseQueryList]] (т.е. не выполнять метод Clear. В таком случае значение параметра ARollback ни на что не влияет).
 
;ARollback: Если APreserveData = False, то определяет как завершить транзакцию, на которой выполнялись запросы отчета. Откатить ее (True) или подтвердить (False).
 
;ARollback: Если APreserveData = False, то определяет как завершить транзакцию, на которой выполнялись запросы отчета. Откатить ее (True) или подтвердить (False).
  
 
Пример:
 
Пример:
  
 +
<syntaxhighlight lang="VBNET">
 
   Option Explicit
 
   Option Explicit
 
   Function rp_Main147093837_526525356(OwnerForm)
 
   Function rp_Main147093837_526525356(OwnerForm)
Строка 31: Строка 32:
 
   
 
   
 
   End Function
 
   End Function
 +
</syntaxhighlight>
 +
 +
Альтернативный способ "тихо" прервать выполнение отчета -- это вызвать исключение '''EAbort''':
 +
 +
<syntaxhighlight lang="VBNET">
 +
  Option Explicit
 +
  Function rp_Main147093837_526525356(OwnerForm)
 +
 
 +
    BaseQueryList.Clear
 +
   
 +
    Set rp_Main147093837_526525356 = BaseQueryList
 +
     
 +
    Dim q
 +
    Set q = BaseQueryList.Query(BaseQueryList.Add("q", 0))
 +
    q.SQL = "SELECT * FROM gd_contact"
 +
    q.Open
 +
 +
    ...
 +
 
 +
    If ... Then ' что-то пошло не так...
 +
      Exception.Raise "EAbort", ""
 +
    End If
 +
 +
    ...
 +
 +
  End Function
 +
</syntaxhighlight>
 +
 +
Первый способ предпочтительнее, так как ызов исключения достаточно тяжеловесен с точки зрения выполняемого программного кода и не дает всех возможностей по очистке BaseQueryList и управлению транзакцией.

Текущая версия на 10:51, 18 января 2016

From Gedemin TLB.pas

 procedure Abort(const AMessage: WideString; APreserveData: WordBool; ARollback: WordBool); safecall;

Unit: Gedemin TLB

Type: procedure

Visibility: public

Member Of: IgsQueryList

[править] Описание

Прерывает построение отчета.

AMessage
Сообщение, которое будет показано пользователю. Если задать пустую строку, то построение отчета прервется без вывода на экран каких либо дополнительных окон и сообщений.
APreserveData
APreserveData = True -- не очищать BaseQueryList (т.е. не выполнять метод Clear. В таком случае значение параметра ARollback ни на что не влияет).
ARollback
Если APreserveData = False, то определяет как завершить транзакцию, на которой выполнялись запросы отчета. Откатить ее (True) или подтвердить (False).

Пример:

  Option Explicit
  Function rp_Main147093837_526525356(OwnerForm)
 
    BaseQueryList.Clear
 
    Set rp_Main147093837_526525356 = BaseQueryList
 
    Dim q
    Set q = BaseQueryList.Query(BaseQueryList.Add("q", 0))
    q.SQL = "SELECT * FROM gd_contact"
    q.Open
 
    ...
 
    If ... Then ' что-то пошло не так...
      BaseQueryList.Abort "Выполнение отчета прервано", False, True
      Exit Function
    End If
 
    ...
 
  End Function

Альтернативный способ "тихо" прервать выполнение отчета -- это вызвать исключение EAbort:

  Option Explicit
  Function rp_Main147093837_526525356(OwnerForm)
 
    BaseQueryList.Clear
 
    Set rp_Main147093837_526525356 = BaseQueryList
 
    Dim q
    Set q = BaseQueryList.Query(BaseQueryList.Add("q", 0))
    q.SQL = "SELECT * FROM gd_contact"
    q.Open
 
    ...
 
    If ... Then ' что-то пошло не так...
      Exception.Raise "EAbort", ""
    End If
 
    ...
 
  End Function

Первый способ предпочтительнее, так как ызов исключения достаточно тяжеловесен с точки зрения выполняемого программного кода и не дает всех возможностей по очистке BaseQueryList и управлению транзакцией.

Персональные инструменты
Пространства имён

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