ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/ibdeletesqleditor.pas
Revision: 17
Committed: Sat Dec 28 19:22:24 2013 UTC (6 years, 6 months ago) by tony
File size: 4634 byte(s)
Log Message:
Committing updates for Release R1-0-5
Line File contents
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 ibdeletesqleditor;
28
29 {$mode objfpc}{$H+}
30
31 interface
32
33 uses
34 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
35 StdCtrls, IBSystemTables, IBDatabase;
36
37 type
38
39 { TIBDeleteSQLEditorForm }
40
41 TIBDeleteSQLEditorForm = class(TForm)
42 Button1: TButton;
43 Button2: TButton;
44 GenerateBtn: TButton;
45 TestBtn: TButton;
46 IBTransaction1: TIBTransaction;
47 Label1: TLabel;
48 Label3: TLabel;
49 Label4: TLabel;
50 PrimaryKeyList: TListBox;
51 QuoteFields: TCheckBox;
52 SQLText: TMemo;
53 TableNamesCombo: TComboBox;
54 procedure GenerateBtnClick(Sender: TObject);
55 procedure TestBtnClick(Sender: TObject);
56 procedure FormShow(Sender: TObject);
57 procedure PrimaryKeyListDblClick(Sender: TObject);
58 procedure TableNamesComboCloseUp(Sender: TObject);
59 private
60 { private declarations }
61 FIBSystemTables: TIBSystemTables;
62 public
63 { public declarations }
64 constructor Create(TheOwner: TComponent); override;
65 destructor Destroy; override;
66 procedure SetDatabase(Database: TIBDatabase);
67 end;
68
69 var
70 IBDeleteSQLEditorForm: TIBDeleteSQLEditorForm;
71
72 function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean;
73
74 implementation
75
76 {$R *.lfm}
77
78 function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean;
79 begin
80 Result := false;
81 if assigned(Database) then
82 try
83 Database.Connected := true;
84 except on E: Exception do
85 ShowMessage(E.Message)
86 end;
87
88 with TIBDeleteSQLEditorForm.Create(Application) do
89 try
90 SetDatabase(Database);
91 SQLText.Lines.Assign(SelectSQL);
92 Result := ShowModal = mrOK;
93 if Result then
94 SelectSQL.Assign(SQLText.Lines)
95 finally
96 Free
97 end;
98 end;
99
100 { TIBDeleteSQLEditorForm }
101
102 procedure TIBDeleteSQLEditorForm.FormShow(Sender: TObject);
103 var TableName: string;
104 begin
105 GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
106 TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
107 TableNamesCombo.Items.Clear;
108 try
109 FIBSystemTables.GetTableNames(TableNamesCombo.Items);
110 if TableNamesCombo.Items.Count > 0 then
111 begin
112 TableNamesCombo.ItemIndex := 0;
113 if Trim(SQLText.Text) <> '' then
114 begin
115 FIBSystemTables.GetTableAndColumns(SQLText.Text,TableName,nil);
116 TableNamesCombo.ItemIndex := TableNamesCombo.Items.IndexOf(TableName)
117 end;
118 FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items);
119 end;
120 except {ignore} end;
121 end;
122
123 procedure TIBDeleteSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject);
124 begin
125 SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex];
126 SQLText.SetFocus
127 end;
128
129 procedure TIBDeleteSQLEditorForm.GenerateBtnClick(Sender: TObject);
130 begin
131 FIBSystemTables.GenerateDeleteSQL(TableNamesCombo.Text,QuoteFields.Checked,SQLText.Lines)
132 end;
133
134 procedure TIBDeleteSQLEditorForm.TestBtnClick(Sender: TObject);
135 begin
136 FIBSystemTables.TestSQL(SQLText.Lines.Text)
137 end;
138
139 procedure TIBDeleteSQLEditorForm.TableNamesComboCloseUp(Sender: TObject);
140 begin
141 FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items);
142 end;
143
144 constructor TIBDeleteSQLEditorForm.Create(TheOwner: TComponent);
145 begin
146 inherited Create(TheOwner);
147 FIBSystemTables := TIBSystemTables.Create;
148 end;
149
150 destructor TIBDeleteSQLEditorForm.Destroy;
151 begin
152 if assigned(FIBSystemTables) then FIBSystemTables.Free;
153 inherited Destroy;
154 end;
155
156 procedure TIBDeleteSQLEditorForm.SetDatabase(Database: TIBDatabase);
157 begin
158 IBTransaction1.DefaultDatabase := Database;
159 FIBSystemTables.SelectDatabase(Database,IBTransaction1)
160 end;
161
162 end.
163