--- ibx/trunk/design/ibdeletesqleditor.pas 2013/02/28 16:56:14 16 +++ ibx/trunk/design/ibdeletesqleditor.pas 2013/12/28 19:22:24 17 @@ -1,163 +1,163 @@ -(* - * IBX For Lazarus (Firebird Express) - * - * The contents of this file are subject to the Initial Developer's - * Public License Version 1.0 (the "License"); you may not use this - * file except in compliance with the License. You may obtain a copy - * of the License here: - * - * http://www.firebirdsql.org/index.php?op=doc&id=idpl - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing rights - * and limitations under the License. - * - * The Initial Developer of the Original Code is Tony Whyman. - * - * The Original Code is (C) 2011 Tony Whyman, MWA Software - * (http://www.mwasoftware.co.uk). - * - * All Rights Reserved. - * - * Contributor(s): ______________________________________. - * -*) - -unit ibdeletesqleditor; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, - StdCtrls, IBSystemTables, IBDatabase; - -type - - { TIBDeleteSQLEditorForm } - - TIBDeleteSQLEditorForm = class(TForm) - Button1: TButton; - Button2: TButton; - GenerateBtn: TButton; - TestBtn: TButton; - IBTransaction1: TIBTransaction; - Label1: TLabel; - Label3: TLabel; - Label4: TLabel; - PrimaryKeyList: TListBox; - QuoteFields: TCheckBox; - SQLText: TMemo; - TableNamesCombo: TComboBox; - procedure GenerateBtnClick(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; - -function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean; - -implementation - -{$R *.lfm} - -function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean; -begin - Result := false; - if assigned(Database) then - try - Database.Connected := true; - except on E: Exception do - ShowMessage(E.Message) - end; - - with TIBDeleteSQLEditorForm.Create(Application) do - try - SetDatabase(Database); - SQLText.Lines.Assign(SelectSQL); - Result := ShowModal = mrOK; - if Result then - SelectSQL.Assign(SQLText.Lines) - finally - Free - end; -end; - -{ TIBDeleteSQLEditorForm } - -procedure TIBDeleteSQLEditorForm.FormShow(Sender: TObject); -var TableName: string; -begin - GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected; - TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected; - 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.PrimaryKeyListDblClick(Sender: TObject); -begin - SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex]; - SQLText.SetFocus -end; - -procedure TIBDeleteSQLEditorForm.GenerateBtnClick(Sender: TObject); -begin - FIBSystemTables.GenerateDeleteSQL(TableNamesCombo.Text,QuoteFields.Checked,SQLText.Lines) -end; - -procedure TIBDeleteSQLEditorForm.TestBtnClick(Sender: TObject); -begin - FIBSystemTables.TestSQL(SQLText.Lines.Text) -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) -end; - -end. - +(* + * IBX For Lazarus (Firebird Express) + * + * The contents of this file are subject to the Initial Developer's + * Public License Version 1.0 (the "License"); you may not use this + * file except in compliance with the License. You may obtain a copy + * of the License here: + * + * http://www.firebirdsql.org/index.php?op=doc&id=idpl + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing rights + * and limitations under the License. + * + * The Initial Developer of the Original Code is Tony Whyman. + * + * The Original Code is (C) 2011 Tony Whyman, MWA Software + * (http://www.mwasoftware.co.uk). + * + * All Rights Reserved. + * + * Contributor(s): ______________________________________. + * +*) + +unit ibdeletesqleditor; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, + StdCtrls, IBSystemTables, IBDatabase; + +type + + { TIBDeleteSQLEditorForm } + + TIBDeleteSQLEditorForm = class(TForm) + Button1: TButton; + Button2: TButton; + GenerateBtn: TButton; + TestBtn: TButton; + IBTransaction1: TIBTransaction; + Label1: TLabel; + Label3: TLabel; + Label4: TLabel; + PrimaryKeyList: TListBox; + QuoteFields: TCheckBox; + SQLText: TMemo; + TableNamesCombo: TComboBox; + procedure GenerateBtnClick(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; + +function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean; + +implementation + +{$R *.lfm} + +function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean; +begin + Result := false; + if assigned(Database) then + try + Database.Connected := true; + except on E: Exception do + ShowMessage(E.Message) + end; + + with TIBDeleteSQLEditorForm.Create(Application) do + try + SetDatabase(Database); + SQLText.Lines.Assign(SelectSQL); + Result := ShowModal = mrOK; + if Result then + SelectSQL.Assign(SQLText.Lines) + finally + Free + end; +end; + +{ TIBDeleteSQLEditorForm } + +procedure TIBDeleteSQLEditorForm.FormShow(Sender: TObject); +var TableName: string; +begin + GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected; + TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected; + 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.PrimaryKeyListDblClick(Sender: TObject); +begin + SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex]; + SQLText.SetFocus +end; + +procedure TIBDeleteSQLEditorForm.GenerateBtnClick(Sender: TObject); +begin + FIBSystemTables.GenerateDeleteSQL(TableNamesCombo.Text,QuoteFields.Checked,SQLText.Lines) +end; + +procedure TIBDeleteSQLEditorForm.TestBtnClick(Sender: TObject); +begin + FIBSystemTables.TestSQL(SQLText.Lines.Text) +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) +end; + +end. +