ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/ibselectsqleditor.pas
Revision: 81
Committed: Mon Jan 1 11:31:10 2018 UTC (6 years, 10 months ago) by tony
Content type: text/x-pascal
File size: 7889 byte(s)
Log Message:
Protect missing database name error in property editor

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 81 IBSQLEditFrame1.Database := DataSet.Database;
117     GenerateParams.Checked := DataSet.GenerateParamNames;
118 tony 33 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 81 if (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected then
155     IBSQLEditFrame1.UserTables.Active := true;
156 tony 33 end;
157    
158 tony 80 procedure TIBSelectSQLEditorForm.UserProceduresAfterScroll(DataSet: TDataSet);
159 tony 33 begin
160 tony 80 SelectProcedure.Visible := DataSet.FieldByName('RDB$PROCEDURE_TYPE').AsInteger = 2;
161 tony 33 end;
162    
163     procedure TIBSelectSQLEditorForm.FieldListDblClick(Sender: TObject);
164     begin
165 tony 80 IBSQLEditFrame1.InsertSelectedFieldName;
166 tony 33 end;
167    
168     procedure TIBSelectSQLEditorForm.GenerateBtnClick(Sender: TObject);
169     begin
170     if PageControl.ActivePage = ExecutePage then
171 tony 80 IBSQLEditFrame1.GenerateExecuteSQL(QuoteFields.Checked)
172 tony 33 else
173 tony 80 IBSQLEditFrame1.GenerateSelectSQL(QuoteFields.Checked);
174 tony 33 end;
175    
176 tony 80 procedure TIBSelectSQLEditorForm.FieldNamesGridDblClick(Sender: TObject);
177 tony 33 begin
178 tony 80 IBSQLEditFrame1.InsertSelectedFieldName;
179 tony 33 end;
180    
181 tony 80 procedure TIBSelectSQLEditorForm.IncludeSysTablesChange(Sender: TObject);
182 tony 33 begin
183 tony 80 IBSQLEditFrame1.IncludeSystemTables := IncludeSysTables.Checked;
184 tony 33 end;
185    
186 tony 80 procedure TIBSelectSQLEditorForm.InputProcGridDblClick(Sender: TObject);
187 tony 33 begin
188 tony 80 IBSQLEditFrame1.InsertSelectedInputParam;
189 tony 33 end;
190    
191 tony 80 procedure TIBSelectSQLEditorForm.OutputProcGridDblClick(Sender: TObject);
192 tony 33 begin
193 tony 80 IBSQLEditFrame1.InsertSelectedOutputParam;
194 tony 33 end;
195    
196 tony 80 procedure TIBSelectSQLEditorForm.PrimaryKeysGridDblClick(Sender: TObject);
197 tony 33 begin
198 tony 80 IBSQLEditFrame1.InsertSelectedPrimaryKey;
199 tony 33 end;
200    
201 tony 80 procedure TIBSelectSQLEditorForm.ProcedureNamesDblClick(Sender: TObject);
202 tony 33 begin
203 tony 80 IBSQLEditFrame1.InsertProcName;
204 tony 33 end;
205    
206 tony 80 procedure TIBSelectSQLEditorForm.SelectSelectAllChange(Sender: TObject);
207     begin
208     IBSQLEditFrame1.SelectAllFields(SelectSelectAll.Checked);
209     end;
210    
211     procedure TIBSelectSQLEditorForm.SelectTableNamesDblClick(Sender: TObject);
212     begin
213     IBSQLEditFrame1.InsertTableName;
214     end;
215    
216     procedure TIBSelectSQLEditorForm.TestBtnClick(Sender: TObject);
217     begin
218     IBSQLEditFrame1.TestSQL(GenerateParams.Checked)
219     end;
220    
221     procedure TIBSelectSQLEditorForm.ExecutePageShow(Sender: TObject);
222     begin
223 tony 81 if (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected then
224     IBSQLEditFrame1.UserProcedures.Active := true;
225 tony 80 end;
226    
227     procedure TIBSelectSQLEditorForm.HandleUserTablesOpened(Sender: TObject);
228     begin
229     SelectSelectAll.Checked := true;
230     SelectProcedure.Visible := false;
231     end;
232    
233     procedure TIBSelectSQLEditorForm.Loaded;
234     begin
235     inherited Loaded;
236     if IBSQLEditFrame1 <> nil then
237     begin
238     IBSQLEditFrame1.OnUserTablesOpened := @HandleUserTablesOpened;
239     if SelectTableNames <> nil then
240     SelectTableNames.ListSource := IBSQLEditFrame1.UserTableSource;
241     if FieldNamesGrid <> nil then
242     FieldNamesGrid.DataSource := IBSQLEditFrame1.FieldsSource;
243     if PrimaryKeysGrid <> nil then
244     PrimaryKeysGrid.DataSource := IBSQLEditFrame1.PrimaryKeySource;
245     if ProcedureNames <> nil then
246     ProcedureNames.ListSource := IBSQLEditFrame1.UserProcSource;
247     if InputProcGrid <> nil then
248     InputProcGrid.DataSource := IBSQLEditFrame1.ProcInputSource;
249     if OutputProcGrid <> nil then
250     OutputProcGrid.DataSource := IBSQLEditFrame1.ProcOutputSource;
251     end;
252     end;
253    
254     procedure TIBSelectSQLEditorForm.SetSQLStatementType(aType: TIBSQLStatementTypes
255     );
256     begin
257     case aType of
258     SQLExecProcedure:
259     PageControl.ActivePage := ExecutePage;
260     else
261     PageControl.ActivePage := SelectPage;
262     end;
263     end;
264    
265 tony 33 end.