Gedemin TLB.IgsQueryList.Abort
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) (Новая страница: «{{MethodDef_Template|unit={{#explode:{{PAGENAME}}|.|0}}|visibility=public|class={{#explode:{{PAGENAME}}|.|1}}|src=procedure Abort(const AMessage: WideString; APre…») |
SYSDBA (обсуждение | вклад) |
||
| (не показаны 3 промежуточные версии 1 участника) | |||
| Строка 4: | Строка 4: | ||
;AMessage: Сообщение, которое будет показано пользователю. Если задать пустую строку, то построение отчета прервется без вывода на экран каких либо дополнительных окон и сообщений. | ;AMessage: Сообщение, которое будет показано пользователю. Если задать пустую строку, то построение отчета прервется без вывода на экран каких либо дополнительных окон и сообщений. | ||
| − | ;APreserveData: | + | ;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 и управлению транзакцией.