--- ibx/trunk/design/ibdeletesqleditor.pas 2011/02/18 16:26:16 5 +++ ibx/trunk/design/ibdeletesqleditor.pas 2012/08/05 18:28:19 7 @@ -1,3 +1,29 @@ +(* + * 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+} @@ -5,7 +31,7 @@ unit ibdeletesqleditor; interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, IBSystemTables, IBDatabase; type @@ -15,8 +41,9 @@ type TIBDeleteSQLEditorForm = class(TForm) Button1: TButton; Button2: TButton; - Button3: TButton; - Button4: TButton; + GenerateBtn: TButton; + TestBtn: TButton; + IBTransaction1: TIBTransaction; Label1: TLabel; Label3: TLabel; Label4: TLabel; @@ -24,8 +51,8 @@ type QuoteFields: TCheckBox; SQLText: TMemo; TableNamesCombo: TComboBox; - procedure Button3Click(Sender: TObject); - procedure Button4Click(Sender: TObject); + procedure GenerateBtnClick(Sender: TObject); + procedure TestBtnClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure PrimaryKeyListDblClick(Sender: TObject); procedure TableNamesComboCloseUp(Sender: TObject); @@ -36,37 +63,31 @@ type { public declarations } constructor Create(TheOwner: TComponent); override; destructor Destroy; override; - procedure SetDatabase(Database: TIBDatabase; Transaction: TIBTransaction); + procedure SetDatabase(Database: TIBDatabase); end; var IBDeleteSQLEditorForm: TIBDeleteSQLEditorForm; -function EditSQL(Database: TIBDatabase; Transaction: TIBTransaction; SelectSQL: TStrings): boolean; +function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean; implementation -function EditSQL(Database: TIBDatabase; Transaction: TIBTransaction; SelectSQL: TStrings): boolean; +{$R *.lfm} + +function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean; begin Result := false; if assigned(Database) then - begin - if not assigned(Transaction) then - begin - if not assigned(Database.DefaultTransaction)then - begin - ShowMessage('No Default Transaction!'); - Exit - end; - Transaction := Database.DefaultTransaction + try + Database.Connected := true; + except on E: Exception do + ShowMessage(E.Message) end; - Database.Connected := true; - end; - with TIBDeleteSQLEditorForm.Create(Application) do try - SetDatabase(Database,Transaction); + SetDatabase(Database); SQLText.Lines.Assign(SelectSQL); Result := ShowModal = mrOK; if Result then @@ -79,14 +100,24 @@ 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); @@ -95,12 +126,12 @@ begin SQLText.SetFocus end; -procedure TIBDeleteSQLEditorForm.Button3Click(Sender: TObject); +procedure TIBDeleteSQLEditorForm.GenerateBtnClick(Sender: TObject); begin FIBSystemTables.GenerateDeleteSQL(TableNamesCombo.Text,QuoteFields.Checked,SQLText.Lines) end; -procedure TIBDeleteSQLEditorForm.Button4Click(Sender: TObject); +procedure TIBDeleteSQLEditorForm.TestBtnClick(Sender: TObject); begin FIBSystemTables.TestSQL(SQLText.Lines.Text) end; @@ -122,13 +153,11 @@ begin inherited Destroy; end; -procedure TIBDeleteSQLEditorForm.SetDatabase(Database: TIBDatabase; Transaction: TIBTransaction); +procedure TIBDeleteSQLEditorForm.SetDatabase(Database: TIBDatabase); begin - FIBSystemTables.SelectDatabase(Database,Transaction) + IBTransaction1.DefaultDatabase := Database; + FIBSystemTables.SelectDatabase(Database,IBTransaction1) end; -initialization - {$I ibdeletesqleditor.lrs} - end.