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 5 by tony, Fri Feb 18 16:26:16 2011 UTC vs.
Revision 7 by tony, Sun Aug 5 18:28:19 2012 UTC

# Line 1 | Line 1
1 + (*
2 + *  IBX For Lazarus (Firebird Express)
3 + *
4 + *  The contents of this file are subject to the Initial Developer's
5 + *  Public License Version 1.0 (the "License"); you may not use this
6 + *  file except in compliance with the License. You may obtain a copy
7 + *  of the License here:
8 + *
9 + *    http://www.firebirdsql.org/index.php?op=doc&id=idpl
10 + *
11 + *  Software distributed under the License is distributed on an "AS
12 + *  IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
13 + *  implied. See the License for the specific language governing rights
14 + *  and limitations under the License.
15 + *
16 + *  The Initial Developer of the Original Code is Tony Whyman.
17 + *
18 + *  The Original Code is (C) 2011 Tony Whyman, MWA Software
19 + *  (http://www.mwasoftware.co.uk).
20 + *
21 + *  All Rights Reserved.
22 + *
23 + *  Contributor(s): ______________________________________.
24 + *
25 + *)
26 +
27   unit ibinsertsqleditor;
28  
29   {$mode objfpc}{$H+}
# Line 5 | Line 31 | unit ibinsertsqleditor;
31   interface
32  
33   uses
34 <  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
34 >  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
35    StdCtrls, IBSystemTables, IBDatabase;
36  
37   type
# Line 15 | Line 41 | type
41    TIBInsertSQLEditorForm = class(TForm)
42      Button1: TButton;
43      Button2: TButton;
44 <    Button3: TButton;
45 <    Button4: TButton;
44 >    GenerateBtn: TButton;
45 >    TestBtn: TButton;
46      FieldList: TListBox;
47 +    IBTransaction1: TIBTransaction;
48      Label1: TLabel;
49      Label2: TLabel;
50      Label3: TLabel;
51      QuoteFields: TCheckBox;
52      SQLText: TMemo;
53      TableNamesCombo: TComboBox;
54 <    procedure Button3Click(Sender: TObject);
55 <    procedure Button4Click(Sender: TObject);
54 >    procedure GenerateBtnClick(Sender: TObject);
55 >    procedure TestBtnClick(Sender: TObject);
56      procedure FieldListDblClick(Sender: TObject);
57      procedure FormShow(Sender: TObject);
58      procedure TableNamesComboCloseUp(Sender: TObject);
# Line 36 | Line 63 | type
63      { public declarations }
64      constructor Create(TheOwner: TComponent); override;
65      destructor Destroy; override;
66 <    procedure SetDatabase(Database: TIBDatabase; Transaction: TIBTransaction);
66 >    procedure SetDatabase(Database: TIBDatabase);
67    end;
68  
69   var
70    IBInsertSQLEditorForm: TIBInsertSQLEditorForm;
71  
72 < function EditSQL(Database: TIBDatabase; Transaction: TIBTransaction; SelectSQL: TStrings): boolean;
72 > function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean;
73  
74   implementation
75  
76 < function EditSQL(Database: TIBDatabase; Transaction: TIBTransaction; SelectSQL: TStrings): boolean;
76 > {$R *.lfm}
77 >
78 > function EditSQL(Database: TIBDatabase; SelectSQL: TStrings): boolean;
79   begin
80   Result := false;
81 +
82   if assigned(Database) then
83 <  begin
84 <    if not assigned(Transaction) then
85 <    begin
86 <      if not assigned(Database.DefaultTransaction)then
57 <      begin
58 <        ShowMessage('No Default Transaction!');
59 <        Exit
60 <      end;
61 <      Transaction := Database.DefaultTransaction
83 >    try
84 >      Database.Connected := true;
85 >    except on E: Exception do
86 >      ShowMessage(E.Message)
87      end;
88  
64    Database.Connected := true;
65  end;
66
89    with TIBInsertSQLEditorForm.Create(Application) do
90    try
91 <    SetDatabase(Database,Transaction);
91 >    SetDatabase(Database);
92      SQLText.Lines.Assign(SelectSQL);
93      Result := ShowModal = mrOK;
94      if Result then
# Line 79 | Line 101 | end;
101   { TIBInsertSQLEditorForm }
102  
103   procedure TIBInsertSQLEditorForm.FormShow(Sender: TObject);
104 + var TableName: string;
105   begin
106 +  GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
107 +  TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
108    TableNamesCombo.Items.Clear;
109 +  try
110    FIBSystemTables.GetTableNames(TableNamesCombo.Items);
111    if TableNamesCombo.Items.Count > 0 then
112    begin
113      TableNamesCombo.ItemIndex := 0;
114 <    FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items);
114 >    if Trim(SQLText.Text) <> '' then
115 >    begin
116 >      FIBSystemTables.GetTableAndColumns(SQLText.Text,TableName,nil);
117 >      TableNamesCombo.ItemIndex := TableNamesCombo.Items.IndexOf(TableName)
118 >    end;
119 >    FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items,true,false);
120 >  end;
121 >  except {ignore}
122    end;
123   end;
124  
# Line 95 | Line 128 | begin
128    SQLText.SetFocus
129   end;
130  
131 < procedure TIBInsertSQLEditorForm.Button3Click(Sender: TObject);
132 < var FieldNames: TStringList;
100 <    I: integer;
131 > procedure TIBInsertSQLEditorForm.GenerateBtnClick(Sender: TObject);
132 > var FieldNames: TStrings;
133   begin
134 <  if FieldList.SelCount = 0 then
134 >  FieldNames :=  FIBSystemTables.GetFieldNames(FieldList);
135 >  try
136      FIBSystemTables.GenerateInsertSQL(TableNamesCombo.Text,QuoteFields.Checked,
104               FieldList.Items,SQLText.Lines)
105  else
106  begin
107    FieldNames := TStringList.Create;
108    try
109      for I := 0 to FieldList.Items.Count - 1 do
110        if FieldList.Selected[I] then
111          FieldNames.Add(FieldList.Items[I]);
112      FIBSystemTables.GenerateInsertSQL(TableNamesCombo.Text,QuoteFields.Checked,
137                 FieldNames,SQLText.Lines)
138 <    finally
139 <      FieldNames.Free
116 <    end;
138 >  finally
139 >    FieldNames.Free
140    end;
141   end;
142  
143 < procedure TIBInsertSQLEditorForm.Button4Click(Sender: TObject);
143 > procedure TIBInsertSQLEditorForm.TestBtnClick(Sender: TObject);
144   begin
145    FIBSystemTables.TestSQL(SQLText.Lines.Text)
146   end;
147  
148   procedure TIBInsertSQLEditorForm.TableNamesComboCloseUp(Sender: TObject);
149   begin
150 <  FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items);
150 >  FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items,true,false);
151   end;
152  
153   constructor TIBInsertSQLEditorForm.Create(TheOwner: TComponent);
# Line 139 | Line 162 | begin
162    inherited Destroy;
163   end;
164  
165 < procedure TIBInsertSQLEditorForm.SetDatabase(Database: TIBDatabase; Transaction: TIBTransaction);
165 > procedure TIBInsertSQLEditorForm.SetDatabase(Database: TIBDatabase);
166   begin
167 <  FIBSystemTables.SelectDatabase(Database,Transaction)
167 >  IBTransaction1.DefaultDatabase := Database;
168 >  FIBSystemTables.SelectDatabase(Database,IBTransaction1)
169   end;
170  
147 initialization
148  {$I ibinsertsqleditor.lrs}
149
171   end.
172  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines