--- ibx/trunk/design/ibrefreshsqleditor.pas 2012/08/05 18:28:19 7 +++ ibx/trunk/design/ibrefreshsqleditor.pas 2013/12/28 19:22:24 17 @@ -1,152 +1,152 @@ -unit ibrefreshsqleditor; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, IBSystemTables, IBDatabase; - -type - - { TIBRefreshSQLEditorForm } - - TIBRefreshSQLEditorForm = class(TForm) - Button1: TButton; - Button2: TButton; - GenerateBtn: TButton; - TestBtn: TButton; - FieldList: TListBox; - IBTransaction1: TIBTransaction; - Label1: TLabel; - Label2: TLabel; - Label3: TLabel; - Label4: TLabel; - PrimaryKeyList: TListBox; - QuoteFields: TCheckBox; - SQLText: TMemo; - TableNamesCombo: TComboBox; - procedure GenerateBtnClick(Sender: TObject); - procedure TestBtnClick(Sender: TObject); - procedure FieldListDblClick(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 - IBRefreshSQLEditorForm: TIBRefreshSQLEditorForm; - -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 TIBRefreshSQLEditorForm.Create(Application) do - try - SetDatabase(Database); - SQLText.Lines.Assign(SelectSQL); - Result := ShowModal = mrOK; - if Result then - SelectSQL.Assign(SQLText.Lines) - finally - Free - end; -end; - -{ TIBRefreshSQLEditorForm } - -procedure TIBRefreshSQLEditorForm.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; - 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.GetFieldNames(TableNamesCombo.Text,FieldList.Items); - FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items); - end; -end; - -procedure TIBRefreshSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject); -begin - SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex]; - SQLText.SetFocus -end; - -procedure TIBRefreshSQLEditorForm.FieldListDblClick(Sender: TObject); -begin - SQLText.SelText := FieldList.Items[FieldList.ItemIndex]; - SQLText.SetFocus -end; - -procedure TIBRefreshSQLEditorForm.GenerateBtnClick(Sender: TObject); -var FieldNames: TStrings; -begin - FieldNames := FIBSystemTables.GetFieldNames(FieldList); - try - FIBSystemTables.GenerateRefreshSQL(TableNamesCombo.Text,QuoteFields.Checked,FieldNames,SQLText.Lines) - finally - FieldNames.Free - end; -end; - -procedure TIBRefreshSQLEditorForm.TestBtnClick(Sender: TObject); -begin - FIBSystemTables.TestSQL(SQLText.Lines.Text) -end; - -procedure TIBRefreshSQLEditorForm.TableNamesComboCloseUp(Sender: TObject); -begin - FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items); - FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items); -end; - -constructor TIBRefreshSQLEditorForm.Create(TheOwner: TComponent); -begin - inherited Create(TheOwner); - FIBSystemTables := TIBSystemTables.Create; -end; - -destructor TIBRefreshSQLEditorForm.Destroy; -begin - if assigned(FIBSystemTables) then FIBSystemTables.Free; - inherited Destroy; -end; - -procedure TIBRefreshSQLEditorForm.SetDatabase(Database: TIBDatabase); -begin - IBTransaction1.DefaultDatabase := Database; - FIBSystemTables.SelectDatabase(Database,IBTransaction1) -end; - -end. - +unit ibrefreshsqleditor; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, IBSystemTables, IBDatabase; + +type + + { TIBRefreshSQLEditorForm } + + TIBRefreshSQLEditorForm = class(TForm) + Button1: TButton; + Button2: TButton; + GenerateBtn: TButton; + TestBtn: TButton; + FieldList: TListBox; + IBTransaction1: TIBTransaction; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + PrimaryKeyList: TListBox; + QuoteFields: TCheckBox; + SQLText: TMemo; + TableNamesCombo: TComboBox; + procedure GenerateBtnClick(Sender: TObject); + procedure TestBtnClick(Sender: TObject); + procedure FieldListDblClick(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 + IBRefreshSQLEditorForm: TIBRefreshSQLEditorForm; + +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 TIBRefreshSQLEditorForm.Create(Application) do + try + SetDatabase(Database); + SQLText.Lines.Assign(SelectSQL); + Result := ShowModal = mrOK; + if Result then + SelectSQL.Assign(SQLText.Lines) + finally + Free + end; +end; + +{ TIBRefreshSQLEditorForm } + +procedure TIBRefreshSQLEditorForm.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; + 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.GetFieldNames(TableNamesCombo.Text,FieldList.Items); + FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items); + end; +end; + +procedure TIBRefreshSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject); +begin + SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex]; + SQLText.SetFocus +end; + +procedure TIBRefreshSQLEditorForm.FieldListDblClick(Sender: TObject); +begin + SQLText.SelText := FieldList.Items[FieldList.ItemIndex]; + SQLText.SetFocus +end; + +procedure TIBRefreshSQLEditorForm.GenerateBtnClick(Sender: TObject); +var FieldNames: TStrings; +begin + FieldNames := FIBSystemTables.GetFieldNames(FieldList); + try + FIBSystemTables.GenerateRefreshSQL(TableNamesCombo.Text,QuoteFields.Checked,FieldNames,SQLText.Lines) + finally + FieldNames.Free + end; +end; + +procedure TIBRefreshSQLEditorForm.TestBtnClick(Sender: TObject); +begin + FIBSystemTables.TestSQL(SQLText.Lines.Text) +end; + +procedure TIBRefreshSQLEditorForm.TableNamesComboCloseUp(Sender: TObject); +begin + FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items); + FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items); +end; + +constructor TIBRefreshSQLEditorForm.Create(TheOwner: TComponent); +begin + inherited Create(TheOwner); + FIBSystemTables := TIBSystemTables.Create; +end; + +destructor TIBRefreshSQLEditorForm.Destroy; +begin + if assigned(FIBSystemTables) then FIBSystemTables.Free; + inherited Destroy; +end; + +procedure TIBRefreshSQLEditorForm.SetDatabase(Database: TIBDatabase); +begin + IBTransaction1.DefaultDatabase := Database; + FIBSystemTables.SelectDatabase(Database,IBTransaction1) +end; + +end. +