ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/design/ibinsertsqleditor.pas
Revision: 19
Committed: Mon Jul 7 13:00:15 2014 UTC (10 years, 5 months ago) by tony
Content type: text/x-pascal
Original Path: ibx/trunk/design/ibinsertsqleditor.pas
File size: 5145 byte(s)
Log Message:
Committing updates for Release R1-1-0

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 ibinsertsqleditor;
28
29 {$mode objfpc}{$H+}
30
31 interface
32
33 uses
34 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
35 StdCtrls, IBSystemTables, IBDatabase, IBCustomDataSet;
36
37 type
38
39 { TIBInsertSQLEditorForm }
40
41 TIBInsertSQLEditorForm = class(TForm)
42 Button1: TButton;
43 Button2: TButton;
44 GenerateBtn: TButton;
45 GenerateParams: TCheckBox;
46 TestBtn: TButton;
47 FieldList: TListBox;
48 IBTransaction1: TIBTransaction;
49 Label1: TLabel;
50 Label2: TLabel;
51 Label3: TLabel;
52 QuoteFields: TCheckBox;
53 SQLText: TMemo;
54 TableNamesCombo: TComboBox;
55 procedure GenerateBtnClick(Sender: TObject);
56 procedure TestBtnClick(Sender: TObject);
57 procedure FieldListDblClick(Sender: TObject);
58 procedure FormShow(Sender: TObject);
59 procedure TableNamesComboCloseUp(Sender: TObject);
60 private
61 { private declarations }
62 FIBSystemTables: TIBSystemTables;
63 public
64 { public declarations }
65 constructor Create(TheOwner: TComponent); override;
66 destructor Destroy; override;
67 procedure SetDatabase(Database: TIBDatabase);
68 end;
69
70 var
71 IBInsertSQLEditorForm: TIBInsertSQLEditorForm;
72
73 function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
74
75 implementation
76
77 {$R *.lfm}
78
79 function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
80 begin
81 Result := false;
82
83 if assigned(DataSet) and assigned(DataSet.Database) then
84 try
85 DataSet.Database.Connected := true;
86 except on E: Exception do
87 ShowMessage(E.Message)
88 end;
89
90 with TIBInsertSQLEditorForm.Create(Application) do
91 try
92 if assigned(DataSet) then
93 begin
94 SetDatabase(DataSet.Database);
95 GenerateParams.Checked := DataSet.GenerateParamNames;
96 end;
97 SQLText.Lines.Assign(SelectSQL);
98 Result := ShowModal = mrOK;
99 if Result then
100 begin
101 SelectSQL.Assign(SQLText.Lines);
102 if assigned(DataSet) then
103 DataSet.GenerateParamNames := GenerateParams.Checked
104 end;
105 finally
106 Free
107 end;
108 end;
109
110 { TIBInsertSQLEditorForm }
111
112 procedure TIBInsertSQLEditorForm.FormShow(Sender: TObject);
113 var TableName: string;
114 begin
115 GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
116 TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
117 TableNamesCombo.Items.Clear;
118 try
119 FIBSystemTables.GetTableNames(TableNamesCombo.Items);
120 if TableNamesCombo.Items.Count > 0 then
121 begin
122 TableNamesCombo.ItemIndex := 0;
123 if Trim(SQLText.Text) <> '' then
124 begin
125 FIBSystemTables.GetTableAndColumns(SQLText.Text,TableName,nil);
126 TableNamesCombo.ItemIndex := TableNamesCombo.Items.IndexOf(TableName)
127 end;
128 FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items,true,false);
129 end;
130 except {ignore}
131 end;
132 end;
133
134 procedure TIBInsertSQLEditorForm.FieldListDblClick(Sender: TObject);
135 begin
136 SQLText.SelText := FieldList.Items[FieldList.ItemIndex];
137 SQLText.SetFocus
138 end;
139
140 procedure TIBInsertSQLEditorForm.GenerateBtnClick(Sender: TObject);
141 var FieldNames: TStrings;
142 begin
143 FieldNames := FIBSystemTables.GetFieldNames(FieldList);
144 try
145 FIBSystemTables.GenerateInsertSQL(TableNamesCombo.Text,QuoteFields.Checked,
146 FieldNames,SQLText.Lines)
147 finally
148 FieldNames.Free
149 end;
150 end;
151
152 procedure TIBInsertSQLEditorForm.TestBtnClick(Sender: TObject);
153 begin
154 FIBSystemTables.TestSQL(SQLText.Lines.Text,GenerateParams.Checked)
155 end;
156
157 procedure TIBInsertSQLEditorForm.TableNamesComboCloseUp(Sender: TObject);
158 begin
159 FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items,true,false);
160 end;
161
162 constructor TIBInsertSQLEditorForm.Create(TheOwner: TComponent);
163 begin
164 inherited Create(TheOwner);
165 FIBSystemTables := TIBSystemTables.Create;
166 end;
167
168 destructor TIBInsertSQLEditorForm.Destroy;
169 begin
170 if assigned(FIBSystemTables) then FIBSystemTables.Free;
171 inherited Destroy;
172 end;
173
174 procedure TIBInsertSQLEditorForm.SetDatabase(Database: TIBDatabase);
175 begin
176 IBTransaction1.DefaultDatabase := Database;
177 FIBSystemTables.SelectDatabase(Database,IBTransaction1)
178 end;
179
180 end.
181