ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/ibrefreshsqleditor.pas
Revision: 17
Committed: Sat Dec 28 19:22:24 2013 UTC (6 years, 6 months ago) by tony
File size: 4316 byte(s)
Log Message:
Committing updates for Release R1-0-5
Line File contents
1 unit ibrefreshsqleditor;
2
3 {$mode objfpc}{$H+}
4
5 interface
6
7 uses
8 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
9 StdCtrls, IBSystemTables, IBDatabase;
10
11 type
12
13 { TIBRefreshSQLEditorForm }
14
15 TIBRefreshSQLEditorForm = class(TForm)
16 Button1: TButton;
17 Button2: TButton;
18 GenerateBtn: TButton;
19 TestBtn: TButton;
20 FieldList: TListBox;
21 IBTransaction1: TIBTransaction;
22 Label1: TLabel;
23 Label2: TLabel;
24 Label3: TLabel;
25 Label4: TLabel;
26 PrimaryKeyList: TListBox;
27 QuoteFields: TCheckBox;
28 SQLText: TMemo;
29 TableNamesCombo: TComboBox;
30 procedure GenerateBtnClick(Sender: TObject);
31 procedure TestBtnClick(Sender: TObject);
32 procedure FieldListDblClick(Sender: TObject);
33 procedure FormShow(Sender: TObject);
34 procedure PrimaryKeyListDblClick(Sender: TObject);
35 procedure TableNamesComboCloseUp(Sender: TObject);
36 private
37 { private declarations }
38 FIBSystemTables: TIBSystemTables;
39 public
40 { public declarations }
41 constructor Create(TheOwner: TComponent); override;
42 destructor Destroy; override;
43 procedure SetDatabase(Database: TIBDatabase);
44 end;
45
46 var
47 IBRefreshSQLEditorForm: TIBRefreshSQLEditorForm;
48
49 function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean;
50
51 implementation
52
53 {$R *.lfm}
54
55 function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean;
56 begin
57 Result := false;
58 if assigned(Database) then
59 try
60 Database.Connected := true;
61 except on E: Exception do
62 ShowMessage(E.Message)
63 end;
64
65 with TIBRefreshSQLEditorForm.Create(Application) do
66 try
67 SetDatabase(Database);
68 SQLText.Lines.Assign(SelectSQL);
69 Result := ShowModal = mrOK;
70 if Result then
71 SelectSQL.Assign(SQLText.Lines)
72 finally
73 Free
74 end;
75 end;
76
77 { TIBRefreshSQLEditorForm }
78
79 procedure TIBRefreshSQLEditorForm.FormShow(Sender: TObject);
80 var TableName: string;
81 begin
82 GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
83 TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
84 TableNamesCombo.Items.Clear;
85 FIBSystemTables.GetTableNames(TableNamesCombo.Items);
86 if TableNamesCombo.Items.Count > 0 then
87 begin
88 TableNamesCombo.ItemIndex := 0;
89 if Trim(SQLText.Text) <> '' then
90 begin
91 FIBSystemTables.GetTableAndColumns(SQLText.Text,TableName,nil);
92 TableNamesCombo.ItemIndex := TableNamesCombo.Items.IndexOf(TableName)
93 end;
94 FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items);
95 FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items);
96 end;
97 end;
98
99 procedure TIBRefreshSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject);
100 begin
101 SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex];
102 SQLText.SetFocus
103 end;
104
105 procedure TIBRefreshSQLEditorForm.FieldListDblClick(Sender: TObject);
106 begin
107 SQLText.SelText := FieldList.Items[FieldList.ItemIndex];
108 SQLText.SetFocus
109 end;
110
111 procedure TIBRefreshSQLEditorForm.GenerateBtnClick(Sender: TObject);
112 var FieldNames: TStrings;
113 begin
114 FieldNames := FIBSystemTables.GetFieldNames(FieldList);
115 try
116 FIBSystemTables.GenerateRefreshSQL(TableNamesCombo.Text,QuoteFields.Checked,FieldNames,SQLText.Lines)
117 finally
118 FieldNames.Free
119 end;
120 end;
121
122 procedure TIBRefreshSQLEditorForm.TestBtnClick(Sender: TObject);
123 begin
124 FIBSystemTables.TestSQL(SQLText.Lines.Text)
125 end;
126
127 procedure TIBRefreshSQLEditorForm.TableNamesComboCloseUp(Sender: TObject);
128 begin
129 FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items);
130 FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items);
131 end;
132
133 constructor TIBRefreshSQLEditorForm.Create(TheOwner: TComponent);
134 begin
135 inherited Create(TheOwner);
136 FIBSystemTables := TIBSystemTables.Create;
137 end;
138
139 destructor TIBRefreshSQLEditorForm.Destroy;
140 begin
141 if assigned(FIBSystemTables) then FIBSystemTables.Free;
142 inherited Destroy;
143 end;
144
145 procedure TIBRefreshSQLEditorForm.SetDatabase(Database: TIBDatabase);
146 begin
147 IBTransaction1.DefaultDatabase := Database;
148 FIBSystemTables.SelectDatabase(Database,IBTransaction1)
149 end;
150
151 end.
152