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

# User Rev Content
1 tony 33 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.