ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/ibselectsqleditor.pas
Revision: 107
Committed: Thu Jan 18 14:37:40 2018 UTC (6 years, 3 months ago) by tony
Content type: text/x-pascal
File size: 8037 byte(s)
Log Message:
Fixes merged

File Contents

# Content
1 (*
2 * IBX For Lazarus (Firebird Express)
3 *
4 * The contents of this file are subject to the Initial Developer's
5 * Public License Version 1.0 (the "License"); you may not use this
6 * file except in compliance with the License. You may obtain a copy
7 * of the License here:
8 *
9 * http://www.firebirdsql.org/index.php?op=doc&id=idpl
10 *
11 * Software distributed under the License is distributed on an "AS
12 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
13 * implied. See the License for the specific language governing rights
14 * and limitations under the License.
15 *
16 * The Initial Developer of the Original Code is Tony Whyman.
17 *
18 * The Original Code is (C) 2011 Tony Whyman, MWA Software
19 * (http://www.mwasoftware.co.uk).
20 *
21 * All Rights Reserved.
22 *
23 * Contributor(s): ______________________________________.
24 *
25 *)
26
27 unit ibselectsqleditor;
28
29 {$mode objfpc}{$H+}
30
31 interface
32
33 uses
34 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
35 ComCtrls, db, IBSQLEditFrame, IBDatabase, IBCustomDataSet,
36 IBLookupComboEditBox, IBDynamicGrid, IB;
37
38 type
39
40 { TIBSelectSQLEditorForm }
41
42 TIBSelectSQLEditorForm = class(TForm)
43 Button1: TButton;
44 Button2: TButton;
45 PackageNames: TIBLookupComboEditBox;
46 InputProcGrid: TIBDynamicGrid;
47 PackageNameLabel: TLabel;
48 OutputProcGrid: TIBDynamicGrid;
49 IncludeSysTables: TCheckBox;
50 GenerateBtn: TButton;
51 GenerateParams: TCheckBox;
52 FieldNamesGrid: TIBDynamicGrid;
53 PrimaryKeysGrid: TIBDynamicGrid;
54 IBSQLEditFrame1: TIBSQLEditFrame;
55 ProcedureNames: TIBLookupComboEditBox;
56 SelectSelectAll: TCheckBox;
57 SelectTableNames: TIBLookupComboEditBox;
58 TestBtn: TButton;
59 Label1: TLabel;
60 Label16: TLabel;
61 Label17: TLabel;
62 Label18: TLabel;
63 Label2: TLabel;
64 Label3: TLabel;
65 Label4: TLabel;
66 PageControl: TPageControl;
67 QuoteFields: TCheckBox;
68 SelectPage: TTabSheet;
69 ExecutePage: TTabSheet;
70 procedure FieldNamesGridDblClick(Sender: TObject);
71 procedure GenerateBtnClick(Sender: TObject);
72 procedure IncludeSysTablesChange(Sender: TObject);
73 procedure InputProcGridDblClick(Sender: TObject);
74 procedure OutputProcGridDblClick(Sender: TObject);
75 procedure PackageNamesDblClick(Sender: TObject);
76 procedure PrimaryKeysGridDblClick(Sender: TObject);
77 procedure ProcedureNamesDblClick(Sender: TObject);
78 procedure SelectSelectAllChange(Sender: TObject);
79 procedure SelectTableNamesDblClick(Sender: TObject);
80 procedure TestBtnClick(Sender: TObject);
81 procedure ExecutePageShow(Sender: TObject);
82 procedure FieldListDblClick(Sender: TObject);
83 procedure FormShow(Sender: TObject);
84 procedure PrimaryKeyListDblClick(Sender: TObject);
85 procedure SelectPageShow(Sender: TObject);
86 private
87 { private declarations }
88 procedure HandleUserTablesOpened(Sender: TObject);
89 protected
90 procedure Loaded; override;
91 procedure SetSQLStatementType(aType: TIBSQLStatementTypes); virtual;
92 public
93 { public declarations }
94 end;
95
96
97 function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
98
99 implementation
100
101 {$R *.lfm}
102
103 function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
104 begin
105 Result := false;
106 if assigned(DataSet) and assigned(DataSet.Database) then
107 try
108 DataSet.Database.Connected := true;
109 except on E: Exception do
110 ShowMessage(E.Message)
111 end;
112
113 with TIBSelectSQLEditorForm.Create(Application) do
114 try
115 if assigned(DataSet) then
116 begin
117 IBSQLEditFrame1.Database := DataSet.Database;
118 GenerateParams.Checked := DataSet.GenerateParamNames;
119 end;
120 IBSQLEditFrame1.SQLText.Lines.Assign(SelectSQL);
121 IBSQLEditFrame1.SelectProcs := true;
122 Result := ShowModal = mrOK;
123 if Result then
124 begin
125 SelectSQL.Assign(IBSQLEditFrame1.SQLText.Lines);
126 if assigned(DataSet) then
127 DataSet.GenerateParamNames := GenerateParams.Checked
128 end;
129 finally
130 Free
131 end;
132 end;
133
134 { TIBSelectSQLEditorForm }
135
136 procedure TIBSelectSQLEditorForm.FormShow(Sender: TObject);
137 begin
138 GenerateBtn.Enabled := (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected;
139 TestBtn.Enabled := (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected;
140 PageControl.ActivePage := SelectPage;
141 if Trim(IBSQLEditFrame1.SQLText.Text) <> '' then
142 begin
143 try
144 SetSQLStatementType(IBSQLEditFrame1.SyncQueryBuilder);
145 except end;
146 end;
147 end;
148
149 procedure TIBSelectSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject);
150 begin
151 IBSQLEditFrame1.InsertSelectedPrimaryKey;
152 end;
153
154 procedure TIBSelectSQLEditorForm.SelectPageShow(Sender: TObject);
155 begin
156 if (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected then
157 IBSQLEditFrame1.UserTables.Active := true;
158 end;
159
160 procedure TIBSelectSQLEditorForm.FieldListDblClick(Sender: TObject);
161 begin
162 IBSQLEditFrame1.InsertSelectedFieldName;
163 end;
164
165 procedure TIBSelectSQLEditorForm.GenerateBtnClick(Sender: TObject);
166 begin
167 if PageControl.ActivePage = ExecutePage then
168 IBSQLEditFrame1.GenerateExecuteSQL(QuoteFields.Checked)
169 else
170 IBSQLEditFrame1.GenerateSelectSQL(QuoteFields.Checked);
171 end;
172
173 procedure TIBSelectSQLEditorForm.FieldNamesGridDblClick(Sender: TObject);
174 begin
175 IBSQLEditFrame1.InsertSelectedFieldName;
176 end;
177
178 procedure TIBSelectSQLEditorForm.IncludeSysTablesChange(Sender: TObject);
179 begin
180 IBSQLEditFrame1.IncludeSystemTables := IncludeSysTables.Checked;
181 end;
182
183 procedure TIBSelectSQLEditorForm.InputProcGridDblClick(Sender: TObject);
184 begin
185 IBSQLEditFrame1.InsertSelectedInputParam;
186 end;
187
188 procedure TIBSelectSQLEditorForm.OutputProcGridDblClick(Sender: TObject);
189 begin
190 IBSQLEditFrame1.InsertSelectedOutputParam;
191 end;
192
193 procedure TIBSelectSQLEditorForm.PackageNamesDblClick(Sender: TObject);
194 begin
195 IBSQLEditFrame1.InsertPackageName;
196 end;
197
198 procedure TIBSelectSQLEditorForm.PrimaryKeysGridDblClick(Sender: TObject);
199 begin
200 IBSQLEditFrame1.InsertSelectedPrimaryKey;
201 end;
202
203 procedure TIBSelectSQLEditorForm.ProcedureNamesDblClick(Sender: TObject);
204 begin
205 IBSQLEditFrame1.InsertProcName;
206 end;
207
208 procedure TIBSelectSQLEditorForm.SelectSelectAllChange(Sender: TObject);
209 begin
210 IBSQLEditFrame1.SelectAllFields(SelectSelectAll.Checked);
211 end;
212
213 procedure TIBSelectSQLEditorForm.SelectTableNamesDblClick(Sender: TObject);
214 begin
215 IBSQLEditFrame1.InsertTableName;
216 end;
217
218 procedure TIBSelectSQLEditorForm.TestBtnClick(Sender: TObject);
219 begin
220 IBSQLEditFrame1.TestSQL(GenerateParams.Checked)
221 end;
222
223 procedure TIBSelectSQLEditorForm.ExecutePageShow(Sender: TObject);
224 begin
225 if (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected then
226 IBSQLEditFrame1.OpenUserProcedures;
227 end;
228
229 procedure TIBSelectSQLEditorForm.HandleUserTablesOpened(Sender: TObject);
230 begin
231 SelectSelectAll.Checked := true;
232 end;
233
234 procedure TIBSelectSQLEditorForm.Loaded;
235 begin
236 inherited Loaded;
237 if IBSQLEditFrame1 <> nil then
238 begin
239 if PageControl <> nil then
240 PageControl.ActivePage := SelectPage;
241 IBSQLEditFrame1.OnUserTablesOpened := @HandleUserTablesOpened;
242 if SelectTableNames <> nil then
243 SelectTableNames.ListSource := IBSQLEditFrame1.UserTableSource;
244 if FieldNamesGrid <> nil then
245 FieldNamesGrid.DataSource := IBSQLEditFrame1.FieldsSource;
246 if PrimaryKeysGrid <> nil then
247 PrimaryKeysGrid.DataSource := IBSQLEditFrame1.PrimaryKeySource;
248 if PackageNames <> nil then
249 PackageNames.ListSource := IBSQLEditFrame1.PackageNameSource;
250 if ProcedureNames <> nil then
251 ProcedureNames.ListSource := IBSQLEditFrame1.UserProcSource;
252 if InputProcGrid <> nil then
253 InputProcGrid.DataSource := IBSQLEditFrame1.ProcInputSource;
254 if OutputProcGrid <> nil then
255 OutputProcGrid.DataSource := IBSQLEditFrame1.ProcOutputSource;
256 end;
257 end;
258
259 procedure TIBSelectSQLEditorForm.SetSQLStatementType(aType: TIBSQLStatementTypes
260 );
261 begin
262 case aType of
263 SQLExecProcedure:
264 PageControl.ActivePage := ExecutePage;
265 else
266 PageControl.ActivePage := SelectPage;
267 end;
268 end;
269
270 end.