ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/ibrefreshsqleditor.pas
Revision: 33
Committed: Sat Jul 18 12:30:52 2015 UTC (8 years, 8 months ago) by tony
Content type: text/x-pascal
File size: 4516 byte(s)
Log Message:
Committing updates for Release R1-3-1

File Contents

# Content
1 unit ibrefreshsqleditor;
2
3 {$mode objfpc}{$H+}
4
5 interface
6
7 uses
8 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
9 StdCtrls, IBSystemTables, IBDatabase, IBCustomDataSet;
10
11 type
12
13 { TIBRefreshSQLEditorForm }
14
15 TIBRefreshSQLEditorForm = class(TForm)
16 Button1: TButton;
17 Button2: TButton;
18 GenerateBtn: TButton;
19 GenerateParams: TCheckBox;
20 TestBtn: TButton;
21 FieldList: TListBox;
22 IBTransaction1: TIBTransaction;
23 Label1: TLabel;
24 Label2: TLabel;
25 Label3: TLabel;
26 Label4: TLabel;
27 PrimaryKeyList: TListBox;
28 QuoteFields: TCheckBox;
29 SQLText: TMemo;
30 TableNamesCombo: TComboBox;
31 procedure GenerateBtnClick(Sender: TObject);
32 procedure TestBtnClick(Sender: TObject);
33 procedure FieldListDblClick(Sender: TObject);
34 procedure FormShow(Sender: TObject);
35 procedure PrimaryKeyListDblClick(Sender: TObject);
36 procedure TableNamesComboCloseUp(Sender: TObject);
37 private
38 { private declarations }
39 FIBSystemTables: TIBSystemTables;
40 public
41 { public declarations }
42 constructor Create(TheOwner: TComponent); override;
43 destructor Destroy; override;
44 procedure SetDatabase(Database: TIBDatabase);
45 end;
46
47 var
48 IBRefreshSQLEditorForm: TIBRefreshSQLEditorForm;
49
50 function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
51
52 implementation
53
54 {$R *.lfm}
55
56 function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
57 begin
58 Result := false;
59 if assigned(DataSet) and assigned(DataSet.Database) then
60 try
61 DataSet.Database.Connected := true;
62 except on E: Exception do
63 ShowMessage(E.Message)
64 end;
65
66 with TIBRefreshSQLEditorForm.Create(Application) do
67 try
68 if assigned(DataSet) then
69 begin
70 SetDatabase(DataSet.Database);
71 GenerateParams.Checked := DataSet.GenerateParamNames;
72 end;
73 SQLText.Lines.Assign(SelectSQL);
74 Result := ShowModal = mrOK;
75 if Result then
76 begin
77 SelectSQL.Assign(SQLText.Lines);
78 if assigned(DataSet) then
79 DataSet.GenerateParamNames := GenerateParams.Checked
80 end;
81 finally
82 Free
83 end;
84 end;
85
86 { TIBRefreshSQLEditorForm }
87
88 procedure TIBRefreshSQLEditorForm.FormShow(Sender: TObject);
89 var TableName: string;
90 begin
91 GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
92 TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
93 TableNamesCombo.Items.Clear;
94 FIBSystemTables.GetTableNames(TableNamesCombo.Items);
95 if TableNamesCombo.Items.Count > 0 then
96 begin
97 TableNamesCombo.ItemIndex := 0;
98 if Trim(SQLText.Text) <> '' then
99 begin
100 FIBSystemTables.GetTableAndColumns(SQLText.Text,TableName,nil);
101 TableNamesCombo.ItemIndex := TableNamesCombo.Items.IndexOf(TableName)
102 end;
103 FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items);
104 FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items);
105 end;
106 end;
107
108 procedure TIBRefreshSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject);
109 begin
110 SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex];
111 SQLText.SetFocus
112 end;
113
114 procedure TIBRefreshSQLEditorForm.FieldListDblClick(Sender: TObject);
115 begin
116 SQLText.SelText := FieldList.Items[FieldList.ItemIndex];
117 SQLText.SetFocus
118 end;
119
120 procedure TIBRefreshSQLEditorForm.GenerateBtnClick(Sender: TObject);
121 var FieldNames: TStrings;
122 begin
123 FieldNames := FIBSystemTables.GetFieldNames(FieldList);
124 try
125 FIBSystemTables.GenerateRefreshSQL(TableNamesCombo.Text,QuoteFields.Checked,FieldNames,SQLText.Lines)
126 finally
127 FieldNames.Free
128 end;
129 end;
130
131 procedure TIBRefreshSQLEditorForm.TestBtnClick(Sender: TObject);
132 begin
133 FIBSystemTables.TestSQL(SQLText.Lines.Text,GenerateParams.Checked)
134 end;
135
136 procedure TIBRefreshSQLEditorForm.TableNamesComboCloseUp(Sender: TObject);
137 begin
138 FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items);
139 FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items);
140 end;
141
142 constructor TIBRefreshSQLEditorForm.Create(TheOwner: TComponent);
143 begin
144 inherited Create(TheOwner);
145 FIBSystemTables := TIBSystemTables.Create;
146 end;
147
148 destructor TIBRefreshSQLEditorForm.Destroy;
149 begin
150 if assigned(FIBSystemTables) then FIBSystemTables.Free;
151 inherited Destroy;
152 end;
153
154 procedure TIBRefreshSQLEditorForm.SetDatabase(Database: TIBDatabase);
155 begin
156 IBTransaction1.DefaultDatabase := Database;
157 FIBSystemTables.SelectDatabase(Database,IBTransaction1)
158 end;
159
160 end.