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 33 by tony, Sat Jul 18 12:30:52 2015 UTC vs.
Revision 209 by tony, Wed Mar 14 12:48:51 2018 UTC

# Line 23 | Line 23
23   *  Contributor(s): ______________________________________.
24   *
25   *)
26
26   unit ibinsertsqleditor;
27  
28   {$mode objfpc}{$H+}
# Line 31 | Line 30 | unit ibinsertsqleditor;
30   interface
31  
32   uses
33 <  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
34 <  StdCtrls, ComCtrls, IBSystemTables, IBDatabase, IBCustomDataSet;
33 >  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
34 >  StdCtrls, ComCtrls, ibselectsqleditor, IBSQLEditFrame, IBDatabase,
35 >  IBDynamicGrid, IBCustomDataset;
36  
37   type
38  
39    { TIBInsertSQLEditorForm }
40  
41 <  TIBInsertSQLEditorForm = class(TForm)
42 <    Button1: TButton;
43 <    Button2: TButton;
44 <    ExecuteOnlyIndicator: TLabel;
45 <    FieldList: TListBox;
46 <    GenerateBtn: TButton;
47 <    GenerateParams: TCheckBox;
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 <    procedure ExecutePageShow(Sender: TObject);
41 >  TIBInsertSQLEditorForm = class(TIBSelectSQLEditorForm)
42 >    IdentityGrid: TIBDynamicGrid;
43 >    Label5: TLabel;
44 >    Label6: TLabel;
45 >    ReadOnlyGrid: TIBDynamicGrid;
46      procedure GenerateBtnClick(Sender: TObject);
47 <    procedure InsertPageShow(Sender: TObject);
48 <    procedure ProcedureNamesCloseUp(Sender: TObject);
69 <    procedure TestBtnClick(Sender: TObject);
70 <    procedure FieldListDblClick(Sender: TObject);
71 <    procedure FormShow(Sender: TObject);
72 <    procedure TableNamesComboCloseUp(Sender: TObject);
47 >    procedure IdentityGridDblClick(Sender: TObject);
48 >    procedure ReadOnlyGridDblClick(Sender: TObject);
49    private
50 <    { private declarations }
51 <    FIBSystemTables: TIBSystemTables;
50 >
51 >  protected
52 >    procedure Loaded; override;
53 >
54    public
77    { public declarations }
78    constructor Create(TheOwner: TComponent); override;
79    destructor Destroy; override;
80    procedure SetDatabase(Database: TIBDatabase);
81  end;
55  
56 < var
84 <  IBInsertSQLEditorForm: TIBInsertSQLEditorForm;
56 >  end;
57  
58   function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
59  
60 < implementation
60 > var
61 >  IBInsertSQLEditorForm: TIBInsertSQLEditorForm;
62  
63 < uses IBSQL;
63 > implementation
64  
65   {$R *.lfm}
66  
67 < function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
67 > function EditSQL(DataSet: TIBCustomDataSet; SelectSQL: TStrings): boolean;
68   begin
69 < Result := false;
70 <
98 < if assigned(DataSet) and assigned(DataSet.Database) then
69 >  Result := false;
70 >  if assigned(DataSet) and assigned(DataSet.Database) then
71      try
72        DataSet.Database.Connected := true;
73      except on E: Exception do
# Line 106 | Line 78 | begin
78    try
79      if assigned(DataSet) then
80      begin
81 <      SetDatabase(DataSet.Database);
82 <      GenerateParams.Checked := DataSet.GenerateParamNames;
81 >        IBSQLEditFrame1.Database := DataSet.Database;
82 >        GenerateParams.Checked := DataSet.GenerateParamNames;
83 >    end;
84 >    with IBSQLEditFrame1 do
85 >    begin
86 >      IncludeReadOnlyFields := false;
87 >      ExecuteOnlyProcs := true;
88 >      ExcludeIdentityColumns := true;
89 >      SQLText.Lines.Assign(SelectSQL);
90      end;
112    SQLText.Lines.Assign(SelectSQL);
91      Result := ShowModal = mrOK;
92      if Result then
93      begin
94 <     SelectSQL.Assign(SQLText.Lines);
94 >     SelectSQL.Assign(IBSQLEditFrame1.SQLText.Lines);
95       if assigned(DataSet) then
96            DataSet.GenerateParamNames := GenerateParams.Checked
97      end;
# Line 124 | Line 102 | end;
102  
103   { TIBInsertSQLEditorForm }
104  
105 < procedure TIBInsertSQLEditorForm.FormShow(Sender: TObject);
128 < var IsProcedureName: boolean;
129 <    SQLType: TIBSQLTypes;
105 > procedure TIBInsertSQLEditorForm.GenerateBtnClick(Sender: TObject);
106   begin
107 <  GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
108 <  TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
109 < if Trim(SQLText.Text) <> '' then
110 < 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;
107 >  if PageControl.ActivePage = ExecutePage then
108 >    IBSQLEditFrame1.GenerateExecuteSQL(QuoteFields.Checked)
109 >  else
110 >    IBSQLEditFrame1.GenerateInsertSQL(QuoteFields.Checked);
111   end;
112  
113 < procedure TIBInsertSQLEditorForm.FieldListDblClick(Sender: TObject);
113 > procedure TIBInsertSQLEditorForm.IdentityGridDblClick(Sender: TObject);
114   begin
115 <  SQLText.SelText := FieldList.Items[FieldList.ItemIndex];
150 <  SQLText.SetFocus
115 >  IBSQLEditFrame1.InsertSelectedIdentityCol;
116   end;
117  
118 < procedure TIBInsertSQLEditorForm.GenerateBtnClick(Sender: TObject);
154 < var FieldNames: TStrings;
118 > procedure TIBInsertSQLEditorForm.ReadOnlyGridDblClick(Sender: TObject);
119   begin
120 < 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,
164 <               FieldNames,SQLText.Lines)
165 <  finally
166 <    FieldNames.Free
167 <  end;
168 < end;
120 >  IBSQLEditFrame1.InsertSelectedReadOnlyField;
121   end;
122  
123 < procedure TIBInsertSQLEditorForm.ExecutePageShow(Sender: TObject);
172 < var ProcName: string;
173 <    IsProcedureName: boolean;
123 > procedure TIBInsertSQLEditorForm.Loaded;
124   begin
125 <  FIBSystemTables.GetProcedureNames(ProcedureNames.Items,false);
126 <  if ProcedureNames.Items.Count > 0 then
125 >  inherited Loaded;
126 >  if IBSQLEditFrame1 <> nil then
127    begin
128 <    if (FIBSystemTables.GetStatementType(SQLText.Text,IsProcedureName) = SQLExecProcedure) or IsProcedureName then
129 <    begin
130 <      FIBSystemTables.GetTableAndColumns(SQLText.Text,ProcName,nil);
131 <      ProcedureNames.ItemIndex := ProcedureNames.Items.IndexOf(ProcName)
132 <    end
133 <    else
184 <      ProcedureNames.ItemIndex := 0;
128 >   if PrimaryKeysGrid <> nil then
129 >     PrimaryKeysGrid.DataSource := IBSQLEditFrame1.PrimaryKeySource;
130 >   if IdentityGrid <> nil then
131 >     IdentityGrid.DataSource := IBSQLEditFrame1.IdentityColsSource;
132 >    if ReadOnlyGrid <> nil then
133 >      ReadOnlyGrid.DataSource := IBSQLEditFrame1.ReadOnlyFieldsSource;
134    end;
186  ProcedureNamesCloseUp(nil);
135   end;
136  
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);
217 begin
218  FIBSystemTables.TestSQL(SQLText.Lines.Text,GenerateParams.Checked)
219 end;
220
221 procedure TIBInsertSQLEditorForm.TableNamesComboCloseUp(Sender: TObject);
222 begin
223  FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items,true,false);
224 end;
225
226 constructor TIBInsertSQLEditorForm.Create(TheOwner: TComponent);
227 begin
228  inherited Create(TheOwner);
229  FIBSystemTables := TIBSystemTables.Create;
230 end;
231
232 destructor TIBInsertSQLEditorForm.Destroy;
233 begin
234  if assigned(FIBSystemTables) then FIBSystemTables.Free;
235  inherited Destroy;
236 end;
237
238 procedure TIBInsertSQLEditorForm.SetDatabase(Database: TIBDatabase);
239 begin
240  IBTransaction1.DefaultDatabase := Database;
241  FIBSystemTables.SelectDatabase(Database,IBTransaction1)
242 end;
137  
138   end.
139 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines