ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/ibinsertsqleditor.pas
(Generate patch)

Comparing ibx/trunk/design/ibinsertsqleditor.pas (file contents):
Revision 20 by tony, Mon Jul 7 13:00:15 2014 UTC vs.
Revision 21 by tony, Thu Feb 26 10:33:34 2015 UTC

# Line 32 | Line 32 | interface
32  
33   uses
34    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
35 <  StdCtrls, IBSystemTables, IBDatabase, IBCustomDataSet;
35 >  StdCtrls, ComCtrls, IBSystemTables, IBDatabase, IBCustomDataSet;
36  
37   type
38  
# Line 41 | Line 41 | type
41    TIBInsertSQLEditorForm = class(TForm)
42      Button1: TButton;
43      Button2: TButton;
44 +    ExecuteOnlyIndicator: TLabel;
45 +    FieldList: TListBox;
46      GenerateBtn: TButton;
47      GenerateParams: TCheckBox;
46    TestBtn: TButton;
47    FieldList: TListBox;
48    IBTransaction1: TIBTransaction;
48      Label1: TLabel;
49 +    Label16: TLabel;
50 +    Label17: TLabel;
51 +    Label18: TLabel;
52      Label2: TLabel;
53 +    PageControl: TPageControl;
54 +    ProcedureNames: TComboBox;
55 +    ProcInputList: TListBox;
56 +    ProcOutputList: TListBox;
57 +    TableNamesCombo: TComboBox;
58 +    InsertPage: TTabSheet;
59 +    ExecutePage: TTabSheet;
60 +    TestBtn: TButton;
61 +    IBTransaction1: TIBTransaction;
62      Label3: TLabel;
63      QuoteFields: TCheckBox;
64      SQLText: TMemo;
65 <    TableNamesCombo: TComboBox;
65 >    procedure ExecutePageShow(Sender: TObject);
66      procedure GenerateBtnClick(Sender: TObject);
67 +    procedure InsertPageShow(Sender: TObject);
68 +    procedure ProcedureNamesCloseUp(Sender: TObject);
69      procedure TestBtnClick(Sender: TObject);
70      procedure FieldListDblClick(Sender: TObject);
71      procedure FormShow(Sender: TObject);
# Line 74 | Line 87 | function EditSQL(DataSet: TIBCustomDataS
87  
88   implementation
89  
90 + uses IBSQL;
91 +
92   {$R *.lfm}
93  
94   function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
# Line 110 | Line 125 | end;
125   { TIBInsertSQLEditorForm }
126  
127   procedure TIBInsertSQLEditorForm.FormShow(Sender: TObject);
128 < var TableName: string;
128 > var IsProcedureName: boolean;
129 >    SQLType: TIBSQLTypes;
130   begin
131    GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
132    TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
133 <  TableNamesCombo.Items.Clear;
134 <  try
135 <  FIBSystemTables.GetTableNames(TableNamesCombo.Items);
136 <  if TableNamesCombo.Items.Count > 0 then
137 <  begin
138 <    TableNamesCombo.ItemIndex := 0;
139 <    if Trim(SQLText.Text) <> '' then
140 <    begin
141 <      FIBSystemTables.GetTableAndColumns(SQLText.Text,TableName,nil);
142 <      TableNamesCombo.ItemIndex := TableNamesCombo.Items.IndexOf(TableName)
143 <    end;
144 <    FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items,true,false);
129 <  end;
130 <  except {ignore}
131 <  end;
133 > if Trim(SQLText.Text) <> '' then
134 > begin
135 >   try
136 >     SQLType := FIBSystemTables.GetStatementType(SQLText.Text,IsProcedureName);
137 >   except  end;
138 >   if SQLType = SQLExecProcedure then
139 >     PageControl.ActivePage := ExecutePage
140 >   else
141 >     PageControl.ActivePage := InsertPage;
142 > end
143 > else
144 >   PageControl.ActivePage := InsertPage;
145   end;
146  
147   procedure TIBInsertSQLEditorForm.FieldListDblClick(Sender: TObject);
# Line 140 | Line 153 | end;
153   procedure TIBInsertSQLEditorForm.GenerateBtnClick(Sender: TObject);
154   var FieldNames: TStrings;
155   begin
156 + if PageControl.ActivePage = ExecutePage then
157 +   FIBSystemTables.GenerateExecuteSQL(ProcedureNames.Text,QuoteFields.Checked,true,
158 +         ProcInputList.Items,ProcOutputList.Items,SQLText.Lines)
159 + else
160 + begin
161    FieldNames :=  FIBSystemTables.GetFieldNames(FieldList);
162    try
163      FIBSystemTables.GenerateInsertSQL(TableNamesCombo.Text,QuoteFields.Checked,
# Line 147 | Line 165 | begin
165    finally
166      FieldNames.Free
167    end;
168 + end;
169 + end;
170 +
171 + procedure TIBInsertSQLEditorForm.ExecutePageShow(Sender: TObject);
172 + var ProcName: string;
173 +    IsProcedureName: boolean;
174 + begin
175 +  FIBSystemTables.GetProcedureNames(ProcedureNames.Items,false);
176 +  if ProcedureNames.Items.Count > 0 then
177 +  begin
178 +    if (FIBSystemTables.GetStatementType(SQLText.Text,IsProcedureName) = SQLExecProcedure) or IsProcedureName then
179 +    begin
180 +      FIBSystemTables.GetTableAndColumns(SQLText.Text,ProcName,nil);
181 +      ProcedureNames.ItemIndex := ProcedureNames.Items.IndexOf(ProcName)
182 +    end
183 +    else
184 +      ProcedureNames.ItemIndex := 0;
185 +  end;
186 +  ProcedureNamesCloseUp(nil);
187 + end;
188 +
189 + procedure TIBInsertSQLEditorForm.InsertPageShow(Sender: TObject);
190 + var TableName: string;
191 + begin
192 +  TableNamesCombo.Items.Clear;
193 +  try
194 +  FIBSystemTables.GetTableNames(TableNamesCombo.Items);
195 +  if TableNamesCombo.Items.Count > 0 then
196 +  begin
197 +    TableNamesCombo.ItemIndex := 0;
198 +    if Trim(SQLText.Text) <> '' then
199 +    begin
200 +      FIBSystemTables.GetTableAndColumns(SQLText.Text,TableName,nil);
201 +      TableNamesCombo.ItemIndex := TableNamesCombo.Items.IndexOf(TableName)
202 +    end;
203 +    FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items,true,false);
204 +  end;
205 +  except {ignore}
206 +  end;
207 + end;
208 +
209 + procedure TIBInsertSQLEditorForm.ProcedureNamesCloseUp(Sender: TObject);
210 + var ExecuteOnly: boolean;
211 + begin
212 +  FIBSystemTables.GetProcParams(ProcedureNames.Text,ExecuteOnly,ProcInputList.Items,ProcOutputList.Items);
213 +  ExecuteOnlyIndicator.Visible := ExecuteOnly;
214   end;
215  
216   procedure TIBInsertSQLEditorForm.TestBtnClick(Sender: TObject);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines