12
12
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
13
13
SynEdit, ButtonPanel, SynHighlighterSQL, ComCtrls, SQLDb, db, DBGrids, Menus,
14
SrcEditorIntf,clipbrd;
14
SrcEditorIntf,clipbrd, StdCtrls;
20
20
TSQLStringsPropertyEditorDlg = class(TForm)
21
21
ButtonsPanel: TButtonPanel;
22
CbxMetaData: TComboBox;
22
26
ImageList: TImageList;
29
MIMetaColumns: TMenuItem;
23
30
MICheck: TMenuItem;
24
31
MICreateConstant: TMenuItem;
25
32
MICleanup: TMenuItem;
27
35
ResultDBGrid: TDBGrid;
28
36
SQLDataSource: TDatasource;
29
37
OpenDialog: TOpenDialog;
30
38
PageControl: TPageControl;
31
39
SaveDialog: TSaveDialog;
40
SQLDataSource1: TDatasource;
32
41
SQLEditor: TSynEdit;
33
42
SQLHighlighter: TSynSQLSyn;
34
43
EditorTabSheet: TTabSheet;
35
44
ResultTabSheet: TTabSheet;
36
45
SQLQuery: TSQLQuery;
46
MetaTabSheet: TTabSheet;
38
49
OpenToolButton: TToolButton;
39
50
SaveToolButton: TToolButton;
40
51
DividerToolButton: TToolButton;
41
52
ExecuteToolButton: TToolButton;
42
53
TBCheck: TToolButton;
54
procedure MetaDBGridDblClick(Sender: TObject);
43
55
procedure ExecuteToolButtonClick(Sender: TObject);
44
56
procedure FormShow(Sender: TObject);
45
57
procedure MICleanupClick(Sender: TObject);
46
58
procedure MICreateConstantClick(Sender: TObject);
59
procedure MIMetaColumnsClick(Sender: TObject);
60
procedure MIPasteClick(Sender: TObject);
47
61
procedure OpenToolButtonClick(Sender: TObject);
48
62
procedure SaveToolButtonClick(Sender: TObject);
63
procedure SQLEditorMouseDown(Sender: TObject; Button: TMouseButton;
64
Shift: TShiftState; X, Y: Integer);
49
65
procedure TBCheckClick(Sender: TObject);
51
67
{ private declarations }
68
FMetaFromSynedit: Boolean;
52
69
FConnection:TSQLConnection;
53
70
FISSQLScript: Boolean;
54
71
FTransaction:TSQLTransaction;
72
FWordUnderCursor:string;
56
73
function CheckConnection:boolean;
57
procedure CheckSQLSyntax(SQL: TStrings);
74
procedure CheckSQLSyntax({%H-}SQL: TStrings);
58
75
procedure CleanupDelphiCode;
59
76
procedure CreateConstant;
77
procedure ShowMetaData;
61
79
{ public declarations }
62
80
constructor Create(AOwner:TComponent);override;
98
SResultTabCaption = 'Results';
80
99
SSQLTabCaption = 'SQL Code';
81
SResultTabCaption = 'Results';
100
SMetaTabCaption = 'Metadata';
101
SMetaTables = 'Tables';
102
SMetaColumns = 'Columns';
103
SMetaProcedures = 'Procedures';
104
SMetaPleaseSpecifyATableInTheObjectField = 'Please specify a table in the '
106
SMetaSysTables = 'SysTables';
107
{$IFDEF HASSQLPARSER}
82
108
SSQLOK = 'SQL OK';
83
109
SQLSyntaxOK = 'No syntax errors in SQL statement.';
84
110
SSQLError = 'SQL Error';
85
111
SSQLSyntaxError = 'Syntax error in SQL statement:'+slineBreak+'%s';
87
114
{ TSQLStringsPropertyEditorDlg }
94
121
SourceEditorManagerIntf.GetHighlighterSettings(SQLHighlighter);
95
122
EditorTabSheet.Caption := SSQLTabCaption;
96
123
ResultTabSheet.Caption := SResultTabCaption;
124
MetaTabSheet.Caption := SMetaTabCaption;
125
CbxMetaData.Items.Add(SMetaTables);
126
CbxMetaData.Items.Add(SMetaSysTables);
127
CbxMetaData.Items.Add(SMetaColumns);
128
CbxMetaData.Items.Add(SMetaProcedures);
99
131
//----------------------------------------------------------//
113
145
//---------------------------------------------------------------------------//
114
146
procedure TSQLStringsPropertyEditorDlg.ExecuteToolButtonClick(Sender: TObject);
118
SQLQuery.SQL.Text := SQLEditor.Text;
120
PageControl.ActivePage := ResultTabSheet;
123
MessageDlg(e.Message, mtError, [mbOK], 0);
148
FMetaFromSynedit:=Sender.ClassNameIs('TMenuItem');
149
if PageControl.ActivePage=MetaTabSheet then
154
SQLQuery.SQL.Text := SQLEditor.Text;
156
PageControl.ActivePage := ResultTabSheet;
159
MessageDlg(e.Message, mtError, [mbOK], 0);
163
procedure TSQLStringsPropertyEditorDlg.MetaDBGridDblClick(Sender: TObject);
165
if assigned(MetaDBGrid.SelectedField) and (MetaDBGrid.SelectedField.Value <> NULL) then
166
if FMetaFromSynedit then
168
MIPasteClick(Sender);
171
EdtObject.Text:=MetaDBGrid.SelectedField.AsString;
127
174
//-------------------------------------------------------------//
153
200
SQLQuery.DataBase := FConnection;
154
201
SQLQuery.Transaction := FTransaction;
202
SQLMeta.DataBase := FConnection;
203
SQLMeta.Transaction := FTransaction;
155
204
ResultTabSheet.TabVisible := True;
205
MetaTabSheet.TabVisible := True;
156
206
ExecuteToolButton.Visible := True;
157
207
FConnection.GetTableNames(SQLHighLighter.TableNames);
161
211
ResultTabSheet.TabVisible := False;
212
MetaTabSheet.TabVisible := False;
162
213
ExecuteToolButton.Visible := False;
164
215
SQLHighlighter.SQLDIalect:=D;
165
216
SQLHighlighter.Enabled:=True;
217
CbxMetaData.ItemIndex:=0;
219
// keep this only because of gtk1
168
221
SQLEditor.Font.Name:='-adobe-courier-medium-r-normal-*-8-*-*-*-m-*-iso10646-1';
270
procedure TSQLStringsPropertyEditorDlg.MIMetaColumnsClick(Sender: TObject);
272
if FWordUnderCursor<>'' then
274
CbxMetaData.ItemIndex:=2; //stColumns
275
EdtObject.Text:=FWordUnderCursor;
276
PageControl.ActivePage:=MetaTabSheet;
277
ExecuteToolButtonClick(Sender);
281
procedure TSQLStringsPropertyEditorDlg.MIPasteClick(Sender: TObject);
284
if assigned(MetaDBGrid.SelectedField) and (MetaDBGrid.SelectedField.Value <> NULL) then
286
SQLEditor.InsertTextAtCaret(' '+TSQLConnection(SQLMeta.DataBase).FieldNameQuoteChars[0]+
287
trim(MetaDBGrid.SelectedField.AsString)+TSQLConnection(SQLMeta.DataBase).FieldNameQuoteChars[1]);
288
PageControl.ActivePage:=EditorTabSheet;
217
292
procedure TSQLStringsPropertyEditorDlg.CreateConstant;
232
308
Clipboard.AsText:=C;
311
procedure TSQLStringsPropertyEditorDlg.ShowMetaData;
313
SchemaType:TSchemaType;
315
case CbxMetaData.ItemIndex of
316
0:SchemaType:=stTables;
318
SchemaType:=stColumns;
319
if EdtObject.Text='' then
321
ShowMessage(SMetaPleaseSpecifyATableInTheObjectField);
325
3:SchemaType:=stProcedures;
326
1:SchemaType:=stSysTables;
328
SchemaType:=stNoSchema;
330
if SchemaType<>stNoSchema then
333
SQLMeta.SetSchemaInfo(SchemaType,EdtObject.Text,'');
337
MessageDlg(e.Message, mtError, [mbOK], 0);
235
341
//------------------------------------------------------------------------//
236
342
procedure TSQLStringsPropertyEditorDlg.SaveToolButtonClick(Sender: TObject);
239
345
SQLEditor.Lines.SaveToFile(UTF8ToSys(SaveDialog.FileName));
348
procedure TSQLStringsPropertyEditorDlg.SQLEditorMouseDown(Sender: TObject;
349
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
354
If Button=mbRight then // save word under cursor
356
FWordUnderCursor:='';
359
Caret:=SQLEditor.PhysicalToLogicalPos(SQLEditor.PixelsToLogicalPos(MPos));
360
FWordUnderCursor:=SQLEditor.GetWordAtRowCol(Caret);
242
364
procedure TSQLStringsPropertyEditorDlg.TBCheckClick(Sender: TObject);
244
366
CheckSQLSyntax(SQLEditor.Lines)