--- ibx/trunk/design/ibdeletesqleditor.pas 2017/12/31 14:53:21 79 +++ ibx/trunk/design/ibdeletesqleditor.pas 2018/01/01 11:31:07 80 @@ -23,7 +23,6 @@ * Contributor(s): ______________________________________. * *) - unit ibdeletesqleditor; {$mode objfpc}{$H+} @@ -31,63 +30,27 @@ unit ibdeletesqleditor; interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, - StdCtrls, ComCtrls, IBSystemTables, IBDatabase, IBCustomDataSet, IB; + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + ibselectsqleditor, IBDatabase, IBCustomDataset; type { TIBDeleteSQLEditorForm } - TIBDeleteSQLEditorForm = class(TForm) - Button1: TButton; - Button2: TButton; - ExecuteOnlyIndicator: TLabel; - GenerateBtn: TButton; - GenerateParams: TCheckBox; - Label1: TLabel; - Label16: TLabel; - Label17: TLabel; - Label18: TLabel; - Label4: TLabel; - PageControl: TPageControl; - PrimaryKeyList: TListBox; - ProcedureNames: TComboBox; - ProcInputList: TListBox; - ProcOutputList: TListBox; - TableNamesCombo: TComboBox; - DeletePage: TTabSheet; - ExecutePage: TTabSheet; - TestBtn: TButton; - IBTransaction1: TIBTransaction; - Label3: TLabel; - QuoteFields: TCheckBox; - SQLText: TMemo; - procedure DeletePageShow(Sender: TObject); - procedure ExecutePageShow(Sender: TObject); + TIBDeleteSQLEditorForm = class(TIBSelectSQLEditorForm) procedure GenerateBtnClick(Sender: TObject); - procedure ProcedureNamesCloseUp(Sender: TObject); - procedure TestBtnClick(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure PrimaryKeyListDblClick(Sender: TObject); - procedure TableNamesComboCloseUp(Sender: TObject); private - { private declarations } - FIBSystemTables: TIBSystemTables; + public - { public declarations } - constructor Create(TheOwner: TComponent); override; - destructor Destroy; override; - procedure SetDatabase(Database: TIBDatabase); - end; -var - IBDeleteSQLEditorForm: TIBDeleteSQLEditorForm; + end; function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean; -implementation +var + IBDeleteSQLEditorForm: TIBDeleteSQLEditorForm; -uses IBSQL; +implementation {$R *.lfm} @@ -105,14 +68,20 @@ begin try if assigned(DataSet) then begin - SetDatabase(DataSet.Database); + IBSQLEditFrame1.Database := DataSet.Database; GenerateParams.Checked := DataSet.GenerateParamNames; end; - SQLText.Lines.Assign(SelectSQL); + with IBSQLEditFrame1 do + begin + IncludePrimaryKeys := true; + IncludeReadOnlyFields := false; + ExecuteOnlyProcs := true; + SQLText.Lines.Assign(SelectSQL); + end; Result := ShowModal = mrOK; if Result then begin - SelectSQL.Assign(SQLText.Lines); + SelectSQL.Assign(IBSQLEditFrame1.SQLText.Lines); if assigned(DataSet) then DataSet.GenerateParamNames := GenerateParams.Checked end; @@ -123,111 +92,13 @@ end; { TIBDeleteSQLEditorForm } -procedure TIBDeleteSQLEditorForm.FormShow(Sender: TObject); -var IsProcedureName: boolean; - SQLType: TIBSQLStatementTypes; -begin - GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected; - TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected; - if Trim(SQLText.Text) <> '' then - begin - try - SQLType := FIBSystemTables.GetStatementType(SQLText.Text,IsProcedureName); - except end; - if SQLType = SQLExecProcedure then - PageControl.ActivePage := ExecutePage - else - PageControl.ActivePage := DeletePage; - end - else - PageControl.ActivePage := DeletePage; -end; - -procedure TIBDeleteSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject); -begin - SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex]; - SQLText.SetFocus -end; - procedure TIBDeleteSQLEditorForm.GenerateBtnClick(Sender: TObject); begin if PageControl.ActivePage = ExecutePage then - FIBSystemTables.GenerateExecuteSQL(ProcedureNames.Text,QuoteFields.Checked,true, - ProcInputList.Items,ProcOutputList.Items,SQLText.Lines) + IBSQLEditFrame1.GenerateExecuteSQL(QuoteFields.Checked) else - FIBSystemTables.GenerateDeleteSQL(TableNamesCombo.Text,QuoteFields.Checked,SQLText.Lines) -end; - -procedure TIBDeleteSQLEditorForm.ProcedureNamesCloseUp(Sender: TObject); -var ExecuteOnly: boolean; -begin - FIBSystemTables.GetProcParams(ProcedureNames.Text,ExecuteOnly,ProcInputList.Items,ProcOutputList.Items); - ExecuteOnlyIndicator.Visible := ExecuteOnly; -end; - -procedure TIBDeleteSQLEditorForm.DeletePageShow(Sender: TObject); -var TableName: string; -begin - TableNamesCombo.Items.Clear; - try - FIBSystemTables.GetTableNames(TableNamesCombo.Items); - if TableNamesCombo.Items.Count > 0 then - begin - TableNamesCombo.ItemIndex := 0; - if Trim(SQLText.Text) <> '' then - begin - FIBSystemTables.GetTableAndColumns(SQLText.Text,TableName,nil); - TableNamesCombo.ItemIndex := TableNamesCombo.Items.IndexOf(TableName) - end; - FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items); - end; - except {ignore} end; -end; - -procedure TIBDeleteSQLEditorForm.ExecutePageShow(Sender: TObject); -var ProcName: string; - IsProcedureName: boolean; -begin - FIBSystemTables.GetProcedureNames(ProcedureNames.Items,false); - if ProcedureNames.Items.Count > 0 then - begin - if (FIBSystemTables.GetStatementType(SQLText.Text,IsProcedureName) = SQLExecProcedure) or IsProcedureName then - begin - FIBSystemTables.GetTableAndColumns(SQLText.Text,ProcName,nil); - ProcedureNames.ItemIndex := ProcedureNames.Items.IndexOf(ProcName) - end - else - ProcedureNames.ItemIndex := 0; - end; - ProcedureNamesCloseUp(nil); -end; - -procedure TIBDeleteSQLEditorForm.TestBtnClick(Sender: TObject); -begin - FIBSystemTables.TestSQL(SQLText.Lines.Text,GenerateParams.Checked) -end; - -procedure TIBDeleteSQLEditorForm.TableNamesComboCloseUp(Sender: TObject); -begin - FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items); -end; - -constructor TIBDeleteSQLEditorForm.Create(TheOwner: TComponent); -begin - inherited Create(TheOwner); - FIBSystemTables := TIBSystemTables.Create; -end; - -destructor TIBDeleteSQLEditorForm.Destroy; -begin - if assigned(FIBSystemTables) then FIBSystemTables.Free; - inherited Destroy; -end; - -procedure TIBDeleteSQLEditorForm.SetDatabase(Database: TIBDatabase); -begin - IBTransaction1.DefaultDatabase := Database; - FIBSystemTables.SelectDatabase(Database,IBTransaction1) + IBSQLEditFrame1.GenerateDeleteSQL(QuoteFields.Checked); end; end. +