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

Comparing ibx/trunk/design/ibdeletesqleditor.pas (file contents):
Revision 7 by tony, Sun Aug 5 18:28:19 2012 UTC vs.
Revision 33 by tony, Sat Jul 18 12:30:52 2015 UTC

# Line 32 | Line 32 | interface
32  
33   uses
34    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
35 <  StdCtrls, IBSystemTables, IBDatabase;
35 >  StdCtrls, ComCtrls, IBSystemTables, IBDatabase, IBCustomDataSet;
36  
37   type
38  
# Line 41 | Line 41 | type
41    TIBDeleteSQLEditorForm = class(TForm)
42      Button1: TButton;
43      Button2: TButton;
44 +    ExecuteOnlyIndicator: TLabel;
45      GenerateBtn: TButton;
46 <    TestBtn: TButton;
46 <    IBTransaction1: TIBTransaction;
46 >    GenerateParams: TCheckBox;
47      Label1: TLabel;
48 <    Label3: TLabel;
48 >    Label16: TLabel;
49 >    Label17: TLabel;
50 >    Label18: TLabel;
51      Label4: TLabel;
52 +    PageControl: TPageControl;
53      PrimaryKeyList: TListBox;
54 +    ProcedureNames: TComboBox;
55 +    ProcInputList: TListBox;
56 +    ProcOutputList: TListBox;
57 +    TableNamesCombo: TComboBox;
58 +    DeletePage: TTabSheet;
59 +    ExecutePage: TTabSheet;
60 +    TestBtn: TButton;
61 +    IBTransaction1: TIBTransaction;
62 +    Label3: TLabel;
63      QuoteFields: TCheckBox;
64      SQLText: TMemo;
65 <    TableNamesCombo: TComboBox;
65 >    procedure DeletePageShow(Sender: TObject);
66 >    procedure ExecutePageShow(Sender: TObject);
67      procedure GenerateBtnClick(Sender: TObject);
68 +    procedure ProcedureNamesCloseUp(Sender: TObject);
69      procedure TestBtnClick(Sender: TObject);
70      procedure FormShow(Sender: TObject);
71      procedure PrimaryKeyListDblClick(Sender: TObject);
# Line 69 | Line 83 | type
83   var
84    IBDeleteSQLEditorForm: TIBDeleteSQLEditorForm;
85  
86 < function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean;
86 > function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
87  
88   implementation
89  
90 + uses IBSQL;
91 +
92   {$R *.lfm}
93  
94 < function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean;
94 > function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
95   begin
96    Result := false;
97 <  if assigned(Database) then
97 >  if assigned(DataSet) and assigned(DataSet.Database) then
98      try
99 <      Database.Connected := true;
99 >      DataSet.Database.Connected := true;
100      except on E: Exception do
101        ShowMessage(E.Message)
102      end;
103  
104    with TIBDeleteSQLEditorForm.Create(Application) do
105    try
106 <    SetDatabase(Database);
106 >    if assigned(DataSet) then
107 >    begin
108 >        SetDatabase(DataSet.Database);
109 >        GenerateParams.Checked := DataSet.GenerateParamNames;
110 >    end;
111      SQLText.Lines.Assign(SelectSQL);
112      Result := ShowModal = mrOK;
113      if Result then
114 <     SelectSQL.Assign(SQLText.Lines)
114 >    begin
115 >     SelectSQL.Assign(SQLText.Lines);
116 >     if assigned(DataSet) then
117 >          DataSet.GenerateParamNames := GenerateParams.Checked
118 >    end;
119    finally
120      Free
121    end;
# Line 100 | Line 124 | end;
124   { TIBDeleteSQLEditorForm }
125  
126   procedure TIBDeleteSQLEditorForm.FormShow(Sender: TObject);
127 < var TableName: string;
127 > var IsProcedureName: boolean;
128 >    SQLType: TIBSQLTypes;
129   begin
130    GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
131    TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
132 +  if Trim(SQLText.Text) <> '' then
133 +  begin
134 +    try
135 +      SQLType := FIBSystemTables.GetStatementType(SQLText.Text,IsProcedureName);
136 +    except  end;
137 +    if SQLType = SQLExecProcedure then
138 +      PageControl.ActivePage := ExecutePage
139 +    else
140 +      PageControl.ActivePage := DeletePage;
141 +  end
142 +  else
143 +    PageControl.ActivePage := DeletePage;
144 + end;
145 +
146 + procedure TIBDeleteSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject);
147 + begin
148 +  SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex];
149 +  SQLText.SetFocus
150 + end;
151 +
152 + procedure TIBDeleteSQLEditorForm.GenerateBtnClick(Sender: TObject);
153 + begin
154 +  if PageControl.ActivePage = ExecutePage then
155 +    FIBSystemTables.GenerateExecuteSQL(ProcedureNames.Text,QuoteFields.Checked,true,
156 +          ProcInputList.Items,ProcOutputList.Items,SQLText.Lines)
157 +  else
158 +    FIBSystemTables.GenerateDeleteSQL(TableNamesCombo.Text,QuoteFields.Checked,SQLText.Lines)
159 + end;
160 +
161 + procedure TIBDeleteSQLEditorForm.ProcedureNamesCloseUp(Sender: TObject);
162 + var ExecuteOnly: boolean;
163 + begin
164 +  FIBSystemTables.GetProcParams(ProcedureNames.Text,ExecuteOnly,ProcInputList.Items,ProcOutputList.Items);
165 +  ExecuteOnlyIndicator.Visible := ExecuteOnly;
166 + end;
167 +
168 + procedure TIBDeleteSQLEditorForm.DeletePageShow(Sender: TObject);
169 + var TableName: string;
170 + begin
171    TableNamesCombo.Items.Clear;
172    try
173    FIBSystemTables.GetTableNames(TableNamesCombo.Items);
# Line 120 | Line 184 | begin
184    except {ignore} end;
185   end;
186  
187 < procedure TIBDeleteSQLEditorForm.PrimaryKeyListDblClick(Sender: TObject);
187 > procedure TIBDeleteSQLEditorForm.ExecutePageShow(Sender: TObject);
188 > var ProcName: string;
189 >    IsProcedureName: boolean;
190   begin
191 <  SQLText.SelText := PrimaryKeyList.Items[PrimaryKeyList.ItemIndex];
192 <  SQLText.SetFocus
193 < end;
194 <
195 < procedure TIBDeleteSQLEditorForm.GenerateBtnClick(Sender: TObject);
196 < begin
197 <  FIBSystemTables.GenerateDeleteSQL(TableNamesCombo.Text,QuoteFields.Checked,SQLText.Lines)
191 >  FIBSystemTables.GetProcedureNames(ProcedureNames.Items,false);
192 >  if ProcedureNames.Items.Count > 0 then
193 >  begin
194 >    if (FIBSystemTables.GetStatementType(SQLText.Text,IsProcedureName) = SQLExecProcedure) or IsProcedureName then
195 >    begin
196 >      FIBSystemTables.GetTableAndColumns(SQLText.Text,ProcName,nil);
197 >      ProcedureNames.ItemIndex := ProcedureNames.Items.IndexOf(ProcName)
198 >    end
199 >    else
200 >      ProcedureNames.ItemIndex := 0;
201 >  end;
202 >  ProcedureNamesCloseUp(nil);
203   end;
204  
205   procedure TIBDeleteSQLEditorForm.TestBtnClick(Sender: TObject);
206   begin
207 <  FIBSystemTables.TestSQL(SQLText.Lines.Text)
207 >  FIBSystemTables.TestSQL(SQLText.Lines.Text,GenerateParams.Checked)
208   end;
209  
210   procedure TIBDeleteSQLEditorForm.TableNamesComboCloseUp(Sender: TObject);
# Line 160 | Line 231 | begin
231   end;
232  
233   end.
163

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines