ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/ibselectsqleditor.pas
Revision: 80
Committed: Mon Jan 1 11:31:07 2018 UTC (6 years, 4 months ago) by tony
Content type: text/x-pascal
File size: 7723 byte(s)
Log Message:
Fixes merged into public release

File Contents

# User Rev Content
1 tony 33 (*
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 tony 80 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
35     ComCtrls, db, IBSQLEditFrame, IBDatabase, IBCustomDataSet,
36     IBLookupComboEditBox, IBDynamicGrid, IB;
37 tony 33
38     type
39    
40     { TIBSelectSQLEditorForm }
41    
42     TIBSelectSQLEditorForm = class(TForm)
43     Button1: TButton;
44     Button2: TButton;
45 tony 80 InputProcGrid: TIBDynamicGrid;
46     OutputProcGrid: TIBDynamicGrid;
47     IncludeSysTables: TCheckBox;
48 tony 33 GenerateBtn: TButton;
49     GenerateParams: TCheckBox;
50 tony 80 FieldNamesGrid: TIBDynamicGrid;
51     PrimaryKeysGrid: TIBDynamicGrid;
52     IBSQLEditFrame1: TIBSQLEditFrame;
53     ProcedureNames: TIBLookupComboEditBox;
54 tony 33 SelectProcedure: TLabel;
55 tony 80 SelectSelectAll: TCheckBox;
56     SelectTableNames: TIBLookupComboEditBox;
57 tony 33 TestBtn: TButton;
58     Label1: TLabel;
59     Label16: TLabel;
60     Label17: TLabel;
61     Label18: TLabel;
62     Label2: TLabel;
63     Label3: TLabel;
64     Label4: TLabel;
65     PageControl: TPageControl;
66     QuoteFields: TCheckBox;
67     SelectPage: TTabSheet;
68     ExecutePage: TTabSheet;
69 tony 80 procedure FieldNamesGridDblClick(Sender: TObject);
70 tony 33 procedure GenerateBtnClick(Sender: TObject);
71 tony 80 procedure IncludeSysTablesChange(Sender: TObject);
72     procedure InputProcGridDblClick(Sender: TObject);
73     procedure OutputProcGridDblClick(Sender: TObject);
74     procedure PrimaryKeysGridDblClick(Sender: TObject);
75     procedure ProcedureNamesDblClick(Sender: TObject);
76     procedure SelectSelectAllChange(Sender: TObject);
77     procedure SelectTableNamesDblClick(Sender: TObject);
78 tony 33 procedure TestBtnClick(Sender: TObject);
79     procedure ExecutePageShow(Sender: TObject);
80     procedure FieldListDblClick(Sender: TObject);
81     procedure FormShow(Sender: TObject);
82     procedure PrimaryKeyListDblClick(Sender: TObject);
83     procedure SelectPageShow(Sender: TObject);
84 tony 80 procedure UserProceduresAfterScroll(DataSet: TDataSet);
85 tony 33 private
86     { private declarations }
87 tony 80 procedure HandleUserTablesOpened(Sender: TObject);
88     protected
89     procedure Loaded; override;
90     procedure SetSQLStatementType(aType: TIBSQLStatementTypes); virtual;
91 tony 33 public
92     { public declarations }
93 tony 80 end;
94 tony 33
95    
96     function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
97    
98     implementation
99    
100     {$R *.lfm}
101    
102     function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
103     begin
104     Result := false;
105     if assigned(DataSet) and assigned(DataSet.Database) then
106     try
107     DataSet.Database.Connected := true;
108     except on E: Exception do
109     ShowMessage(E.Message)
110     end;
111    
112     with TIBSelectSQLEditorForm.Create(Application) do
113     try
114     if assigned(DataSet) then
115     begin
116 tony 80 IBSQLEditFrame1.Database := DataSet.Database;
117 tony 33 GenerateParams.Checked := DataSet.GenerateParamNames;
118     end;
119 tony 80 IBSQLEditFrame1.SQLText.Lines.Assign(SelectSQL);
120 tony 33 Result := ShowModal = mrOK;
121     if Result then
122     begin
123 tony 80 SelectSQL.Assign(IBSQLEditFrame1.SQLText.Lines);
124 tony 33 if assigned(DataSet) then
125     DataSet.GenerateParamNames := GenerateParams.Checked
126     end;
127     finally
128     Free
129     end;
130     end;
131    
132     { TIBSelectSQLEditorForm }
133    
134     procedure TIBSelectSQLEditorForm.FormShow(Sender: TObject);
135     begin
136 tony 80 GenerateBtn.Enabled := (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected;
137     TestBtn.Enabled := (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected;
138     PageControl.ActivePage := SelectPage;
139     if Trim(IBSQLEditFrame1.SQLText.Text) <> '' then
140 tony 33 begin
141     try
142 tony 80 SetSQLStatementType(IBSQLEditFrame1.SyncQueryBuilder);
143 tony 33 except end;
144 tony 80 end;
145 tony 33 end;
146    
147     procedure TIBSelectSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject);
148     begin
149 tony 80 IBSQLEditFrame1.InsertSelectedPrimaryKey;
150 tony 33 end;
151    
152 tony 80 procedure TIBSelectSQLEditorForm.SelectPageShow(Sender: TObject);
153 tony 33 begin
154 tony 80 IBSQLEditFrame1.UserTables.Active := true;
155 tony 33 end;
156    
157 tony 80 procedure TIBSelectSQLEditorForm.UserProceduresAfterScroll(DataSet: TDataSet);
158 tony 33 begin
159 tony 80 SelectProcedure.Visible := DataSet.FieldByName('RDB$PROCEDURE_TYPE').AsInteger = 2;
160 tony 33 end;
161    
162     procedure TIBSelectSQLEditorForm.FieldListDblClick(Sender: TObject);
163     begin
164 tony 80 IBSQLEditFrame1.InsertSelectedFieldName;
165 tony 33 end;
166    
167     procedure TIBSelectSQLEditorForm.GenerateBtnClick(Sender: TObject);
168     begin
169     if PageControl.ActivePage = ExecutePage then
170 tony 80 IBSQLEditFrame1.GenerateExecuteSQL(QuoteFields.Checked)
171 tony 33 else
172 tony 80 IBSQLEditFrame1.GenerateSelectSQL(QuoteFields.Checked);
173 tony 33 end;
174    
175 tony 80 procedure TIBSelectSQLEditorForm.FieldNamesGridDblClick(Sender: TObject);
176 tony 33 begin
177 tony 80 IBSQLEditFrame1.InsertSelectedFieldName;
178 tony 33 end;
179    
180 tony 80 procedure TIBSelectSQLEditorForm.IncludeSysTablesChange(Sender: TObject);
181 tony 33 begin
182 tony 80 IBSQLEditFrame1.IncludeSystemTables := IncludeSysTables.Checked;
183 tony 33 end;
184    
185 tony 80 procedure TIBSelectSQLEditorForm.InputProcGridDblClick(Sender: TObject);
186 tony 33 begin
187 tony 80 IBSQLEditFrame1.InsertSelectedInputParam;
188 tony 33 end;
189    
190 tony 80 procedure TIBSelectSQLEditorForm.OutputProcGridDblClick(Sender: TObject);
191 tony 33 begin
192 tony 80 IBSQLEditFrame1.InsertSelectedOutputParam;
193 tony 33 end;
194    
195 tony 80 procedure TIBSelectSQLEditorForm.PrimaryKeysGridDblClick(Sender: TObject);
196 tony 33 begin
197 tony 80 IBSQLEditFrame1.InsertSelectedPrimaryKey;
198 tony 33 end;
199    
200 tony 80 procedure TIBSelectSQLEditorForm.ProcedureNamesDblClick(Sender: TObject);
201 tony 33 begin
202 tony 80 IBSQLEditFrame1.InsertProcName;
203 tony 33 end;
204    
205 tony 80 procedure TIBSelectSQLEditorForm.SelectSelectAllChange(Sender: TObject);
206     begin
207     IBSQLEditFrame1.SelectAllFields(SelectSelectAll.Checked);
208     end;
209    
210     procedure TIBSelectSQLEditorForm.SelectTableNamesDblClick(Sender: TObject);
211     begin
212     IBSQLEditFrame1.InsertTableName;
213     end;
214    
215     procedure TIBSelectSQLEditorForm.TestBtnClick(Sender: TObject);
216     begin
217     IBSQLEditFrame1.TestSQL(GenerateParams.Checked)
218     end;
219    
220     procedure TIBSelectSQLEditorForm.ExecutePageShow(Sender: TObject);
221     begin
222     IBSQLEditFrame1.UserProcedures.Active := true;
223     end;
224    
225     procedure TIBSelectSQLEditorForm.HandleUserTablesOpened(Sender: TObject);
226     begin
227     SelectSelectAll.Checked := true;
228     SelectProcedure.Visible := false;
229     end;
230    
231     procedure TIBSelectSQLEditorForm.Loaded;
232     begin
233     inherited Loaded;
234     if IBSQLEditFrame1 <> nil then
235     begin
236     IBSQLEditFrame1.OnUserTablesOpened := @HandleUserTablesOpened;
237     if SelectTableNames <> nil then
238     SelectTableNames.ListSource := IBSQLEditFrame1.UserTableSource;
239     if FieldNamesGrid <> nil then
240     FieldNamesGrid.DataSource := IBSQLEditFrame1.FieldsSource;
241     if PrimaryKeysGrid <> nil then
242     PrimaryKeysGrid.DataSource := IBSQLEditFrame1.PrimaryKeySource;
243     if ProcedureNames <> nil then
244     ProcedureNames.ListSource := IBSQLEditFrame1.UserProcSource;
245     if InputProcGrid <> nil then
246     InputProcGrid.DataSource := IBSQLEditFrame1.ProcInputSource;
247     if OutputProcGrid <> nil then
248     OutputProcGrid.DataSource := IBSQLEditFrame1.ProcOutputSource;
249     end;
250     end;
251    
252     procedure TIBSelectSQLEditorForm.SetSQLStatementType(aType: TIBSQLStatementTypes
253     );
254     begin
255     case aType of
256     SQLExecProcedure:
257     PageControl.ActivePage := ExecutePage;
258     else
259     PageControl.ActivePage := SelectPage;
260     end;
261     end;
262    
263 tony 33 end.