Gedemin TLB.IgsQueryList.Abort

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
 
Строка 59: Строка 59:
 
   End Function
 
   End Function
 
</syntaxhighlight>
 
</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 и управлению транзакцией.

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

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