|
@@ -178,8 +178,6 @@ type
|
|
|
procedure RemoveAllSingleLineComments(QueryList: TStringList);
|
|
|
procedure removeEmptyLines(QueryList: TStringList;
|
|
|
var SecondRealStart: Integer; const RealStartLine: Integer);
|
|
|
- procedure StartEdit(Sender: TObject; const Field: TField;
|
|
|
- var Value: string);
|
|
|
procedure InsertModifiedRecord(RecordNo, TabIndex: Integer);
|
|
|
procedure ApplyClick(Sender: TObject);
|
|
|
procedure EnableApplyButton;
|
|
@@ -219,6 +217,9 @@ implementation
|
|
|
|
|
|
uses main, SQLHistory;
|
|
|
|
|
|
+
|
|
|
+{ NewCommitButton: Create commit button for editable query result }
|
|
|
+
|
|
|
procedure TfmQueryWindow.NewCommitButton(const Pan: TPanel; var ATab: TTabSheet);
|
|
|
var
|
|
|
Commit: TBitBtn;
|
|
@@ -233,6 +234,9 @@ begin
|
|
|
AddResultControl(ATab, Commit);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ RemoveComments: Remove comments from Query window }
|
|
|
+
|
|
|
procedure TfmQueryWindow.RemoveComments(QueryList: TStringList; StartLine: Integer; var RealStartLine: Integer);
|
|
|
var
|
|
|
Comment: Boolean;
|
|
@@ -274,6 +278,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ RemoveAllSingleLineComments: remove single line comments from query }
|
|
|
+
|
|
|
procedure TfmQueryWindow.RemoveAllSingleLineComments(QueryList: TStringList);
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -289,7 +296,10 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
-procedure TfmQueryWindow.removeEmptyLines(QueryList: TStringList; var SecondRealStart: Integer;
|
|
|
+
|
|
|
+{ RemoveEmptyLines: remove empty lines in query }
|
|
|
+
|
|
|
+procedure TfmQueryWindow.RemoveEmptyLines(QueryList: TStringList; var SecondRealStart: Integer;
|
|
|
const RealStartLine: Integer);
|
|
|
var
|
|
|
i: integer;
|
|
@@ -306,16 +316,17 @@ end;
|
|
|
|
|
|
{ TQueryThread }
|
|
|
|
|
|
+
|
|
|
+{ FinishCellEditing: Insert current been edited record in ModifiedRecords array }
|
|
|
+
|
|
|
procedure TfmQueryWindow.FinishCellEditing(DataSet: TDataSet);
|
|
|
begin
|
|
|
InsertModifiedRecord(Dataset.RecNo, PageControl1.TabIndex);
|
|
|
end;
|
|
|
|
|
|
-procedure TfmQueryWindow.StartEdit(Sender: TObject; const Field: TField;
|
|
|
- var Value: string);
|
|
|
-begin
|
|
|
- ShowMessage('Editing started: ' + Value);
|
|
|
-end;
|
|
|
+
|
|
|
+
|
|
|
+{ InsertMOdifiedRecord: insert modified query record in ModifiedRecords array }
|
|
|
|
|
|
procedure TfmQueryWindow.InsertModifiedRecord(RecordNo, TabIndex: Integer);
|
|
|
var
|
|
@@ -350,6 +361,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ ApplyClick: Save Updates for the query }
|
|
|
+
|
|
|
procedure TfmQueryWindow.ApplyClick(Sender: TObject);
|
|
|
var
|
|
|
i, x: Integer;
|
|
@@ -468,6 +482,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ EnableApplyButton: enable save updates button when records has been modified }
|
|
|
+
|
|
|
procedure TfmQueryWindow.EnableApplyButton;
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -481,6 +498,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ EnableCommitButton: enable commit button after applying updates }
|
|
|
+
|
|
|
procedure TfmQueryWindow.EnableCommitButton;
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -494,6 +514,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ GetTableName: get table name from query text }
|
|
|
+
|
|
|
function TfmQueryWindow.GetTableName(SQLText: string): string;
|
|
|
begin
|
|
|
SQLText:= Trim(Copy(SQLText, Pos('from', LowerCase(SQLText)) + 4, Length(SQLText)));
|
|
@@ -514,6 +537,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ GetCurrentSQLText: return current SQL query text }
|
|
|
+
|
|
|
function TfmQueryWindow.GetCurrentSQLText: string;
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -527,12 +553,18 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ CommitResultClick: commit current transaction }
|
|
|
+
|
|
|
procedure TfmQueryWindow.CommitResultClick(Sender: TObject);
|
|
|
begin
|
|
|
SqlTrans.CommitRetaining;
|
|
|
(Sender as TBitBtn).Visible:= False;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ GetRecordSet: return result recordset of a page tab }
|
|
|
+
|
|
|
function TfmQueryWindow.GetRecordSet(TabIndex: Integer): TSQLQuery;
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -546,6 +578,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ GetQuerySQLType: get query type: select, script, execute from current string list }
|
|
|
+
|
|
|
function TfmQueryWindow.getQuerySQLType(QueryList: TStringList; var SecondRealStart: Integer; var IsDDL: Boolean): Integer;
|
|
|
var
|
|
|
SQLSegment: string;
|
|
@@ -558,8 +593,7 @@ begin
|
|
|
if (Pos('select', LowerCase(Trim(SQLSegment))) = 1) then
|
|
|
Result:= 1 // Selectable
|
|
|
else
|
|
|
- if Pos('setterm', LowerCase(StringReplace(SQLSegment, ' ', '', [rfReplaceAll
|
|
|
- ]))) = 1 then
|
|
|
+ if Pos('setterm', LowerCase(StringReplace(SQLSegment, ' ', '', [rfReplaceAll]))) = 1 then
|
|
|
Result:= 3 // Script
|
|
|
else
|
|
|
begin
|
|
@@ -571,6 +605,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ DoJob: Execute thread job: open query, execute, commit, rollback, etc }
|
|
|
+
|
|
|
procedure TQueryThread.DoJob;
|
|
|
begin
|
|
|
try
|
|
@@ -609,6 +646,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Execute: Query thread main loop }
|
|
|
+
|
|
|
procedure TQueryThread.Execute;
|
|
|
begin
|
|
|
try
|
|
@@ -627,6 +667,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Create query thread }
|
|
|
+
|
|
|
constructor TQueryThread.Create(aType: string);
|
|
|
begin
|
|
|
inherited Create(True);
|
|
@@ -634,12 +677,16 @@ begin
|
|
|
FreeOnTerminate:= False;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Display SQL script exception message }
|
|
|
+
|
|
|
procedure TfmQueryWindow.SQLScript1Exception(Sender: TObject;
|
|
|
Statement: TStrings; TheException: Exception; var Continue: boolean);
|
|
|
begin
|
|
|
ShowMessage(TheException.Message);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
procedure TfmQueryWindow.SynCompletion1CodeCompletion(var Value: string;
|
|
|
SourceValue: string; var SourceStart, SourceEnd: TPoint; KeyChar: TUTF8Char;
|
|
|
Shift: TShiftState);
|
|
@@ -647,12 +694,18 @@ begin
|
|
|
SynCompletion1.Deactivate;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Close button pressed: close current Query window and free parent page tab }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbCloseClick(Sender: TObject);
|
|
|
begin
|
|
|
Close;
|
|
|
Parent.Free;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Commit current transaction }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbCommitClick(Sender: TObject);
|
|
|
var
|
|
|
meResult: TMemo;
|
|
@@ -698,6 +751,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Commit retaining for current transaction }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbCommitRetainingClick(Sender: TObject);
|
|
|
var
|
|
|
QT: TQueryThread;
|
|
@@ -727,17 +783,26 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{HistoryClick: show SQL history form }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbHistoryClick(Sender: TObject);
|
|
|
begin
|
|
|
fmSQLHistory.Init(RegRec.Title, Self);
|
|
|
fmSQLHistory.Show;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Display popup menu }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbMenuClick(Sender: TObject);
|
|
|
begin
|
|
|
pmTab.PopUp;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ display New SQL Window tab }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbNewClick(Sender: TObject);
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -753,6 +818,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Read SQL query from text file }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbOpenClick(Sender: TObject);
|
|
|
begin
|
|
|
OpenDialog1.DefaultExt:= '.sql';
|
|
@@ -760,6 +828,9 @@ begin
|
|
|
meQuery.Lines.LoadFromFile(OpenDialog1.FileName);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ RollBack current transaction }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbRollbackClick(Sender: TObject);
|
|
|
var
|
|
|
meResult: TMemo;
|
|
@@ -801,6 +872,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Rollback retaning for current transaction }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbRollbackRetainingClick(Sender: TObject);
|
|
|
var
|
|
|
QT: TQueryThread;
|
|
@@ -822,11 +896,17 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Run current SQL, 0 for auto-detect type }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbRunClick(Sender: TObject);
|
|
|
begin
|
|
|
CallExecuteQuery(0);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Save current SQL in a text file }
|
|
|
+
|
|
|
procedure TfmQueryWindow.tbSaveClick(Sender: TObject);
|
|
|
begin
|
|
|
SaveDialog1.DefaultExt:= '.sql';
|
|
@@ -834,6 +914,9 @@ begin
|
|
|
meQuery.Lines.SaveToFile(SaveDialog1.FileName);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{GetNewTabNum: get last tab number and increase result by one }
|
|
|
+
|
|
|
function TfmQueryWindow.GetNewTabNum: string;
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -846,6 +929,9 @@ begin
|
|
|
Result:= IntToStr(Cnt);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Initialize query window: fill connection parameters from selected registered database }
|
|
|
+
|
|
|
procedure TfmQueryWindow.Init(dbIndex: Integer);
|
|
|
begin
|
|
|
fdbIndex:= dbIndex;
|
|
@@ -926,6 +1012,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ GetQuery: get query text from editor }
|
|
|
+
|
|
|
function TfmQueryWindow.GetQuery: string;
|
|
|
begin
|
|
|
Result:= meQuery.SelText;
|
|
@@ -933,6 +1022,9 @@ begin
|
|
|
Result:= meQuery.Lines.Text;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Create new result tab depending on query type }
|
|
|
+
|
|
|
function TfmQueryWindow.CreateResultTab(QueryType: Byte;
|
|
|
var aSqlQuery: TSQLQuery; var aSQLScript: TSqlScript; var meResult: TMemo;
|
|
|
AdditionalTitle: string): TTabSheet;
|
|
@@ -984,7 +1076,6 @@ begin
|
|
|
DBGrid.Align:= alClient;
|
|
|
DBGrid.OnDblClick:= @DBGrid1DblClick;
|
|
|
|
|
|
- DBGrid.OnFieldEditMask:= @StartEdit;
|
|
|
DBGrid.Tag:= ATab.TabIndex;
|
|
|
DBGrid.ReadOnly:= False;
|
|
|
DBGrid.AutoEdit:= True;
|
|
@@ -1288,6 +1379,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Execute script }
|
|
|
+
|
|
|
function TfmQueryWindow.ExecuteScript(Script: string): Boolean;
|
|
|
var
|
|
|
StartTime: TDateTime;
|
|
@@ -1328,6 +1422,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ AddResultControl: add new tab for query part result in current Query window }
|
|
|
+
|
|
|
procedure TfmQueryWindow.AddResultControl(ParentControl: TObject; AControl: TObject);
|
|
|
begin
|
|
|
SetLength(ResultControls, Length(ResultControls) + 1);
|
|
@@ -1336,6 +1433,9 @@ begin
|
|
|
ParentResultControls[High(ParentResultControls)]:= ParentControl;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Display new Save/Apply button for current query result been edited }
|
|
|
+
|
|
|
procedure TfmQueryWindow.NewApplyButton(var Pan: TPanel; var ATab: TTabSheet);
|
|
|
var
|
|
|
Apply: TBitBtn;
|
|
@@ -1350,6 +1450,9 @@ begin
|
|
|
AddResultControl(ATab, Apply);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Remove all run-time controls from current Query window }
|
|
|
+
|
|
|
procedure TfmQueryWindow.RemoveControls;
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -1372,6 +1475,9 @@ begin
|
|
|
SetLength(ParentResultControls, 0);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ FindSQLQuery: Return current TSQLQuery component from current query window }
|
|
|
+
|
|
|
function TfmQueryWindow.FindSqlQuery: TSqlQuery;
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -1390,6 +1496,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ GetSQLType: get SQL type of current SQL text }
|
|
|
+
|
|
|
function TfmQueryWindow.GetSQLType(Query: string; var Command: string): string;
|
|
|
begin
|
|
|
Query:= Trim(Query);
|
|
@@ -1405,6 +1514,9 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ GetSQLSeqment: read part of SQL end by ; }
|
|
|
+
|
|
|
function TfmQueryWindow.GetSQLSegment(QueryList: TStringList; StartLine: Integer; var QueryType, EndLine: Integer;
|
|
|
var SQLSegment: string; var IsDDL: Boolean): Boolean;
|
|
|
var
|
|
@@ -1476,12 +1588,17 @@ begin
|
|
|
end;
|
|
|
|
|
|
|
|
|
+
|
|
|
+{ Run query, 0 for auto-detect query type }
|
|
|
+
|
|
|
procedure TfmQueryWindow.bbRunClick(Sender: TObject);
|
|
|
begin
|
|
|
CallExecuteQuery(0);
|
|
|
end;
|
|
|
|
|
|
|
|
|
+{ Display Blob contents in a message box }
|
|
|
+
|
|
|
procedure TfmQueryWindow.DBGrid1DblClick(Sender: TObject);
|
|
|
begin
|
|
|
if (Sender as TDBGrid).SelectedField.DataType in [ftBlob, ftMemo] then
|
|
@@ -1490,6 +1607,9 @@ begin
|
|
|
ShowMessage((Sender as TDBGrid).SelectedField.KeyFields);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Sort by columns }
|
|
|
+
|
|
|
procedure TfmQueryWindow.DBGridTitleClick(column: TColumn);
|
|
|
var
|
|
|
SqlQuery: TSQLQuery;
|
|
@@ -1506,6 +1626,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Find text }
|
|
|
+
|
|
|
procedure TfmQueryWindow.FindDialog1Find(Sender: TObject);
|
|
|
begin
|
|
|
fOptions:= [];
|
|
@@ -1526,6 +1649,8 @@ begin
|
|
|
end;
|
|
|
|
|
|
|
|
|
+{ QueryWindow onClose event, commit active transaction, remove controls }
|
|
|
+
|
|
|
procedure TfmQueryWindow.FormClose(Sender: TObject;
|
|
|
var CloseAction: TCloseAction);
|
|
|
begin
|
|
@@ -1543,26 +1668,29 @@ begin
|
|
|
CloseAction:= caFree;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Initialize auto-completion text in QueryWindow OnCreate event }
|
|
|
+
|
|
|
procedure TfmQueryWindow.FormCreate(Sender: TObject);
|
|
|
var
|
|
|
F:TextFile;
|
|
|
str:string;
|
|
|
begin
|
|
|
- if FileExists('querycompletion.txt') then
|
|
|
- SynCompletion1.ItemList.LoadFromFile('querycompletion.txt')
|
|
|
- else
|
|
|
- begin
|
|
|
- SynCompletion1.ItemList.CommaText:= 'create,table,Select,From,INTEGER,FLOAT';
|
|
|
- SynCompletion1.ItemList.SaveToFile('querycompletion.txt');
|
|
|
- end;
|
|
|
- sortsyncompletion;
|
|
|
+ SynCompletion1.ItemList.CommaText:= 'create,table,Select,From,INTEGER,FLOAT';
|
|
|
+ Sortsyncompletion;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ focus on Query SQL window editor on form show }
|
|
|
+
|
|
|
procedure TfmQueryWindow.FormShow(Sender: TObject);
|
|
|
begin
|
|
|
meQuery.SetFocus;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Close current Query window }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmCloseTabClick(Sender: TObject);
|
|
|
begin
|
|
|
if (Trim(meQuery.Lines.Text) = '') or
|
|
@@ -1574,6 +1702,8 @@ begin
|
|
|
end;
|
|
|
|
|
|
|
|
|
+{ Save query result in a comma delemited file }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmCommaDelemitedClick(Sender: TObject);
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -1623,6 +1753,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Copy query result in Clipboard }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmCopyAllClick(Sender: TObject);
|
|
|
var
|
|
|
Grid: TDBGrid;
|
|
@@ -1670,32 +1803,48 @@ begin
|
|
|
grid.DataSource.DataSet.EnableControls;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Copy cell in clipboard }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmCopyCellClick(Sender: TObject);
|
|
|
begin
|
|
|
Clipboard.AsText:= TdbGrid(pmGrid.PopupComponent).SelectedField.AsString;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Copy query text into clipboard }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmCopyClick(Sender: TObject);
|
|
|
begin
|
|
|
meQuery.CopyToClipboard;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Cut query text into clipboard}
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmCutClick(Sender: TObject);
|
|
|
begin
|
|
|
meQuery.CutToClipboard;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Export to comma delimeted file }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmExportAsCommaClick(Sender: TObject);
|
|
|
begin
|
|
|
lmCommaDelemitedClick(nil);
|
|
|
end;
|
|
|
|
|
|
+{ Export as HTML }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmExportAsHTMLClick(Sender: TObject);
|
|
|
begin
|
|
|
lmHTMLClick(nil);
|
|
|
end;
|
|
|
|
|
|
|
|
|
+{ Save query result as HTML }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmHTMLClick(Sender: TObject);
|
|
|
var
|
|
|
i: Integer;
|
|
@@ -1751,58 +1900,88 @@ end;
|
|
|
|
|
|
|
|
|
|
|
|
+{ Paste from clipboard into SQL editor }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmPasteClick(Sender: TObject);
|
|
|
begin
|
|
|
meQuery.PasteFromClipboard;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ SQL Editor Redo }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmRedoClick(Sender: TObject);
|
|
|
begin
|
|
|
meQuery.Redo;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Run Query, auto type detection }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmRunClick(Sender: TObject);
|
|
|
begin
|
|
|
CallExecuteQuery(0);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Run query and force its type as executable statement}
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmRunExecClick(Sender: TObject);
|
|
|
begin
|
|
|
CallExecuteQuery(2);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Run query, and fore its type as script }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmRunScriptClick(Sender: TObject);
|
|
|
begin
|
|
|
CallExecuteQuery(3);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Run query, force its type as select statement }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmRunSelectClick(Sender: TObject);
|
|
|
begin
|
|
|
CallExecuteQuery(1);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ select all in SQL Editor }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmSelectAllClick(Sender: TObject);
|
|
|
begin
|
|
|
meQuery.SelectAll;
|
|
|
end;
|
|
|
|
|
|
|
|
|
+{ SQL Editor undo }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmUndoClick(Sender: TObject);
|
|
|
begin
|
|
|
meQuery.Undo;
|
|
|
end;
|
|
|
|
|
|
|
|
|
+{ Search in SQL Editor }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmFindClick(Sender: TObject);
|
|
|
begin
|
|
|
FindDialog1.Execute;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Find again }
|
|
|
+
|
|
|
procedure TfmQueryWindow.lmFindAgainClick(Sender: TObject);
|
|
|
begin
|
|
|
meQuery.SearchReplace(FindDialog1.FindText, '', fOptions);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Run query by pressing Ktrl + Enter }
|
|
|
+
|
|
|
procedure TfmQueryWindow.meQueryKeyDown(Sender: TObject; var Key: Word;
|
|
|
Shift: TShiftState);
|
|
|
begin
|
|
@@ -1815,6 +1994,8 @@ begin
|
|
|
end;
|
|
|
|
|
|
|
|
|
+{ Scrolling in query result recordset }
|
|
|
+
|
|
|
procedure TfmQueryWindow.QueryAfterScroll(DataSet: TDataSet);
|
|
|
var
|
|
|
TabSheet: TTabSheet;
|
|
@@ -1845,6 +2026,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ Execute query according to passed query ype }
|
|
|
+
|
|
|
procedure TfmQueryWindow.CallExecuteQuery(aQueryType: Integer);
|
|
|
begin
|
|
|
fList:= TStringList.Create;
|
|
@@ -1879,6 +2063,9 @@ begin
|
|
|
EnableButtons;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ sort auto completion options }
|
|
|
+
|
|
|
procedure TfmQueryWindow.sortsyncompletion;
|
|
|
var
|
|
|
sortinglis:TStringList;
|
|
@@ -1894,6 +2081,9 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{ SQL thread termination }
|
|
|
+
|
|
|
procedure TfmQueryWindow.ThreadTerminated(Sender: TObject);
|
|
|
begin
|
|
|
// Raise exception if an error occured during thread execution (Open)
|
|
@@ -1927,6 +2117,8 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+{ Enable SQL buttons: Run, Commit, Rollbak after thread termination }
|
|
|
+
|
|
|
procedure TfmQueryWindow.EnableButtons;
|
|
|
begin
|
|
|
tbRun.Enabled:= True;
|