328 |
|
TIBSQL = class(TComponent) |
329 |
|
private |
330 |
|
FIBLoaded: Boolean; |
331 |
+ |
FOnSQLChanged: TNotifyEvent; |
332 |
|
FUniqueParamNames: Boolean; |
333 |
|
function GetFieldCount: integer; |
334 |
|
procedure SetUniqueParamNames(AValue: Boolean); |
367 |
|
procedure SetSQL(Value: TStrings); |
368 |
|
procedure SetTransaction(Value: TIBTransaction); |
369 |
|
procedure SQLChanging(Sender: TObject); |
370 |
+ |
procedure SQLChanged(Sender: TObject); |
371 |
|
procedure BeforeTransactionEnd(Sender: TObject; Action: TTransactionAction); |
372 |
|
public |
373 |
|
constructor Create(AOwner: TComponent); override; |
414 |
|
property SQL: TStrings read FSQL write SetSQL; |
415 |
|
property Transaction: TIBTransaction read GetTransaction write SetTransaction; |
416 |
|
property OnSQLChanging: TNotifyEvent read FOnSQLChanging write FOnSQLChanging; |
417 |
+ |
property OnSQLChanged: TNotifyEvent read FOnSQLChanged write FOnSQLChanged; |
418 |
|
end; |
419 |
|
|
420 |
|
implementation |
2156 |
|
FRecordCount := 0; |
2157 |
|
FSQL := TStringList.Create; |
2158 |
|
TStringList(FSQL).OnChanging := SQLChanging; |
2159 |
+ |
TStringList(FSQL).OnChange := SQLChanged; |
2160 |
|
FProcessedSQL := TStringList.Create; |
2161 |
|
FHandle := nil; |
2162 |
|
FSQLParams := TIBXSQLDA.Create(self,daInput); |
2315 |
|
FBOF := True; |
2316 |
|
FEOF := False; |
2317 |
|
FRecordCount := 0; |
2318 |
+ |
if not (csDesigning in ComponentState) then |
2319 |
+ |
MonitorHook.SQLExecute(Self); |
2320 |
|
if FGoToFirstRecordOnExecute then |
2321 |
|
Next; |
2322 |
|
end; |
2327 |
|
Database.SQLDialect, |
2328 |
|
FSQLParams.AsXSQLDA, |
2329 |
|
FSQLRecord.AsXSQLDA), True); |
2330 |
+ |
if not (csDesigning in ComponentState) then |
2331 |
+ |
MonitorHook.SQLExecute(Self); |
2332 |
|
(* if (fetch_res <> 0) and (fetch_res <> isc_deadlock) then |
2333 |
|
begin |
2334 |
|
{ Sometimes a prepared stored procedure appears to get |
2352 |
|
@FHandle, |
2353 |
|
Database.SQLDialect, |
2354 |
|
FSQLParams.AsXSQLDA), True); |
2355 |
+ |
if not (csDesigning in ComponentState) then |
2356 |
+ |
MonitorHook.SQLExecute(Self); |
2357 |
|
end; |
2348 |
– |
if not (csDesigning in ComponentState) then |
2349 |
– |
MonitorHook.SQLExecute(Self); |
2358 |
|
FBase.DoAfterExecQuery(self); |
2359 |
|
// writeln('Rows Affected = ',RowsAffected); |
2360 |
|
end; |
2820 |
|
if FHandle <> nil then FreeHandle; |
2821 |
|
end; |
2822 |
|
|
2823 |
+ |
procedure TIBSQL.SQLChanged(Sender: TObject); |
2824 |
+ |
begin |
2825 |
+ |
if assigned(OnSQLChanged) then |
2826 |
+ |
OnSQLChanged(self); |
2827 |
+ |
end; |
2828 |
+ |
|
2829 |
|
procedure TIBSQL.BeforeTransactionEnd(Sender: TObject; |
2830 |
|
Action: TTransactionAction); |
2831 |
|
begin |