ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/ibselectsqleditor.pas
Revision: 141
Committed: Thu Jan 25 14:18:12 2018 UTC (6 years, 10 months ago) by tony
Content type: text/x-pascal
File size: 8108 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 IncludeSysTables.Checked := IBSQLEditFrame1.IncludeSystemTables;
146 except end;
147 end;
148 end;
149
150 procedure TIBSelectSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject);
151 begin
152 IBSQLEditFrame1.InsertSelectedPrimaryKey;
153 end;
154
155 procedure TIBSelectSQLEditorForm.SelectPageShow(Sender: TObject);
156 begin
157 if (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected then
158 IBSQLEditFrame1.UserTables.Active := true;
159 end;
160
161 procedure TIBSelectSQLEditorForm.FieldListDblClick(Sender: TObject);
162 begin
163 IBSQLEditFrame1.InsertSelectedFieldName;
164 end;
165
166 procedure TIBSelectSQLEditorForm.GenerateBtnClick(Sender: TObject);
167 begin
168 if PageControl.ActivePage = ExecutePage then
169 IBSQLEditFrame1.GenerateExecuteSQL(QuoteFields.Checked)
170 else
171 IBSQLEditFrame1.GenerateSelectSQL(QuoteFields.Checked);
172 end;
173
174 procedure TIBSelectSQLEditorForm.FieldNamesGridDblClick(Sender: TObject);
175 begin
176 IBSQLEditFrame1.InsertSelectedFieldName;
177 end;
178
179 procedure TIBSelectSQLEditorForm.IncludeSysTablesChange(Sender: TObject);
180 begin
181 IBSQLEditFrame1.IncludeSystemTables := IncludeSysTables.Checked;
182 end;
183
184 procedure TIBSelectSQLEditorForm.InputProcGridDblClick(Sender: TObject);
185 begin
186 IBSQLEditFrame1.InsertSelectedInputParam;
187 end;
188
189 procedure TIBSelectSQLEditorForm.OutputProcGridDblClick(Sender: TObject);
190 begin
191 IBSQLEditFrame1.InsertSelectedOutputParam;
192 end;
193
194 procedure TIBSelectSQLEditorForm.PackageNamesDblClick(Sender: TObject);
195 begin
196 IBSQLEditFrame1.InsertPackageName;
197 end;
198
199 procedure TIBSelectSQLEditorForm.PrimaryKeysGridDblClick(Sender: TObject);
200 begin
201 IBSQLEditFrame1.InsertSelectedPrimaryKey;
202 end;
203
204 procedure TIBSelectSQLEditorForm.ProcedureNamesDblClick(Sender: TObject);
205 begin
206 IBSQLEditFrame1.InsertProcName;
207 end;
208
209 procedure TIBSelectSQLEditorForm.SelectSelectAllChange(Sender: TObject);
210 begin
211 IBSQLEditFrame1.SelectAllFields(SelectSelectAll.Checked);
212 end;
213
214 procedure TIBSelectSQLEditorForm.SelectTableNamesDblClick(Sender: TObject);
215 begin
216 IBSQLEditFrame1.InsertTableName;
217 end;
218
219 procedure TIBSelectSQLEditorForm.TestBtnClick(Sender: TObject);
220 begin
221 IBSQLEditFrame1.TestSQL(GenerateParams.Checked)
222 end;
223
224 procedure TIBSelectSQLEditorForm.ExecutePageShow(Sender: TObject);
225 begin
226 if (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected then
227 IBSQLEditFrame1.OpenUserProcedures;
228 end;
229
230 procedure TIBSelectSQLEditorForm.HandleUserTablesOpened(Sender: TObject);
231 begin
232 SelectSelectAll.Checked := true;
233 end;
234
235 procedure TIBSelectSQLEditorForm.Loaded;
236 begin
237 inherited Loaded;
238 if IBSQLEditFrame1 <> nil then
239 begin
240 if PageControl <> nil then
241 PageControl.ActivePage := SelectPage;
242 IBSQLEditFrame1.OnUserTablesOpened := @HandleUserTablesOpened;
243 if SelectTableNames <> nil then
244 SelectTableNames.ListSource := IBSQLEditFrame1.UserTableSource;
245 if FieldNamesGrid <> nil then
246 FieldNamesGrid.DataSource := IBSQLEditFrame1.FieldsSource;
247 if PrimaryKeysGrid <> nil then
248 PrimaryKeysGrid.DataSource := IBSQLEditFrame1.PrimaryKeySource;
249 if PackageNames <> nil then
250 PackageNames.ListSource := IBSQLEditFrame1.PackageNameSource;
251 if ProcedureNames <> nil then
252 ProcedureNames.ListSource := IBSQLEditFrame1.UserProcSource;
253 if InputProcGrid <> nil then
254 InputProcGrid.DataSource := IBSQLEditFrame1.ProcInputSource;
255 if OutputProcGrid <> nil then
256 OutputProcGrid.DataSource := IBSQLEditFrame1.ProcOutputSource;
257 end;
258 end;
259
260 procedure TIBSelectSQLEditorForm.SetSQLStatementType(aType: TIBSQLStatementTypes
261 );
262 begin
263 case aType of
264 SQLExecProcedure:
265 PageControl.ActivePage := ExecutePage;
266 else
267 PageControl.ActivePage := SelectPage;
268 end;
269 end;
270
271 end.