@@ -24,9 +24,13 @@ TdmPgEngine = class(TDataModule)
2424 procedure qryChainsAfterClose (DataSet: TDataSet);
2525 procedure qryChainsAfterDelete (DataSet: TDataSet);
2626 procedure qryChainsAfterInsert (DataSet: TDataSet);
27- procedure qryChainsAfterPost (DataSet: TDataSet);
27+ procedure qryAfterPost (DataSet: TDataSet);
2828 procedure qryChainsBeforeDelete (DataSet: TDataSet);
29+ procedure qryTasksAfterInsert (DataSet: TDataSet);
30+ procedure qryTasksAfterOpen (DataSet: TDataSet);
31+ procedure qryTasksBeforePost (DataSet: TDataSet);
2932 private
33+ FLastTaskID: integer;
3034 public
3135 procedure Connect ;
3236 procedure Disconnect ;
@@ -80,14 +84,18 @@ procedure TdmPgEngine.qryChainsAfterInsert(DataSet: TDataSet);
8084 end ;
8185end ;
8286
83- procedure TdmPgEngine.qryChainsAfterPost (DataSet: TDataSet);
87+ procedure TdmPgEngine.qryAfterPost (DataSet: TDataSet);
8488var
85- c: variant;
89+ FldVal: variant;
90+ FldName: string;
8691 Q: TSQLQuery;
92+ const
93+ FldNames: array [boolean] of string = (' chain_name' , ' parent_id' );
8794begin
8895 Q := DataSet as TSQLQuery;
96+ FldName := FldNames[Q = qryTasks];
8997 Q.IndexName := ' ' ;
90- c := DataSet.FieldValues[' chain_name ' ];
98+ FldVal := DataSet.FieldValues[FldName ];
9199 try
92100 Q.ApplyUpdates;
93101 DataSet.Refresh;
@@ -98,15 +106,38 @@ procedure TdmPgEngine.qryChainsAfterPost(DataSet: TDataSet);
98106 Q.CancelUpdates;
99107 end ;
100108 end ;
101- DataSet.Locate(' chain_name' , c, []);
102- fmMain.MainForm.UpdateSortIndication(nil );
109+ DataSet.Locate(FldName, FldVal, []);
110+ if Q = qryChains then
111+ fmMain.MainForm.UpdateSortIndication(nil );
103112end ;
104113
105114procedure TdmPgEngine.qryChainsBeforeDelete (DataSet: TDataSet);
106115begin
107116 if MessageDlg(' Delete confirmation' ,
108117 ' Are you sure you want delete current chain?' , mtWarning, [mbOK, mbCancel], 0 ) = mrCancel then
109- Abort;
118+ Abort();
119+ end ;
120+
121+ procedure TdmPgEngine.qryTasksAfterInsert (DataSet: TDataSet);
122+ begin
123+ with DataSet do
124+ begin
125+ FieldByName(' parent_id' ).AsInteger := FLastTaskID;
126+ FieldByName(' kind' ).AsString := ' SQL' ;
127+ FieldByName(' ignore_error' ).AsBoolean := False;
128+ FieldByName(' autonomous' ).AsBoolean := False;
129+ end ;
130+ end ;
131+
132+ procedure TdmPgEngine.qryTasksAfterOpen (DataSet: TDataSet);
133+ begin
134+ DataSet.Last();
135+ FLastTaskID := DataSet.FieldByName(' task_id' ).AsInteger;
136+ end ;
137+
138+ procedure TdmPgEngine.qryTasksBeforePost (DataSet: TDataSet);
139+ begin
140+ if DataSet.FieldByName(' command' ).IsNull then Abort();
110141end ;
111142
112143procedure TdmPgEngine.Connect ;
0 commit comments