unit ibselectsqleditor; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, IBSystemTables, IBDatabase; type { TIBSelectSQLEditorForm } TIBSelectSQLEditorForm = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; FieldList: TListBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; PrimaryKeyList: TListBox; QuoteFields: TCheckBox; SQLText: TMemo; TableNamesCombo: TComboBox; procedure Button3Click(Sender: TObject); procedure Button4Click(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; Transaction: TIBTransaction); end; var IBSelectSQLEditorForm: TIBSelectSQLEditorForm; function EditSQL(Database: TIBDatabase; Transaction: TIBTransaction; SelectSQL: TStrings): boolean; implementation function EditSQL(Database: TIBDatabase; Transaction: TIBTransaction; 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 end; Database.Connected := true; end; with TIBSelectSQLEditorForm.Create(Application) do try SetDatabase(Database,Transaction); SQLText.Lines.Assign(SelectSQL); Result := ShowModal = mrOK; if Result then SelectSQL.Assign(SQLText.Lines) finally Free end; end; { TIBSelectSQLEditorForm } procedure TIBSelectSQLEditorForm.FormShow(Sender: TObject); begin TableNamesCombo.Items.Clear; FIBSystemTables.GetTableNames(TableNamesCombo.Items); if TableNamesCombo.Items.Count > 0 then begin TableNamesCombo.ItemIndex := 0; FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items); FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items); end; end; procedure TIBSelectSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject); begin SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex]; SQLText.SetFocus end; procedure TIBSelectSQLEditorForm.FieldListDblClick(Sender: TObject); begin SQLText.SelText := FieldList.Items[FieldList.ItemIndex]; SQLText.SetFocus end; procedure TIBSelectSQLEditorForm.Button3Click(Sender: TObject); begin FIBSystemTables.GenerateSelectSQL(TableNamesCombo.Text,QuoteFields.Checked,SQLText.Lines) end; procedure TIBSelectSQLEditorForm.Button4Click(Sender: TObject); begin FIBSystemTables.TestSQL(SQLText.Lines.Text) end; procedure TIBSelectSQLEditorForm.TableNamesComboCloseUp(Sender: TObject); begin FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items); FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items); end; constructor TIBSelectSQLEditorForm.Create(TheOwner: TComponent); begin inherited Create(TheOwner); FIBSystemTables := TIBSystemTables.Create; end; destructor TIBSelectSQLEditorForm.Destroy; begin if assigned(FIBSystemTables) then FIBSystemTables.Free; inherited Destroy; end; procedure TIBSelectSQLEditorForm.SetDatabase(Database: TIBDatabase; Transaction: TIBTransaction); begin FIBSystemTables.SelectDatabase(Database,Transaction) end; initialization {$I ibselectsqleditor.lrs} end.