From b185459ada04fd35d62c9f0ca45ac6c8a69d58ff Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Sun, 21 Aug 2011 06:21:57 +0000 Subject: [PATCH] Add "REPLACE INTO ..." to grid export output options. Fixes issue #2528. --- source/exportgrid.dfm | 1 + source/exportgrid.pas | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/source/exportgrid.dfm b/source/exportgrid.dfm index 0fc5ce58..5b9c0212 100644 --- a/source/exportgrid.dfm +++ b/source/exportgrid.dfm @@ -59,6 +59,7 @@ object frmExportGrid: TfrmExportGrid 'HTML table' 'XML' 'SQL INSERTs' + 'SQL REPLACEs' 'LaTeX' 'Wiki markup') TabOrder = 2 diff --git a/source/exportgrid.pas b/source/exportgrid.pas index 047313ca..887d597a 100644 --- a/source/exportgrid.pas +++ b/source/exportgrid.pas @@ -7,7 +7,7 @@ uses Dialogs, StdCtrls, ExtCtrls, Menus, VirtualTrees, SynExportHTML; type - TGridExportFormat = (efExcel, efCSV, efHTML, efXML, efSQL, efLaTeX, efWiki); + TGridExportFormat = (efExcel, efCSV, efHTML, efXML, efSQLInsert, efSQLReplace, efLaTeX, efWiki); TfrmExportGrid = class(TForm) btnOK: TButton; @@ -232,7 +232,7 @@ begin then ExportFormat := efCSV else if ext = 'html' then ExportFormat := efHTML else if ext = 'xml' then ExportFormat := efXML - else if ext = 'sql' then ExportFormat := efSQL + else if ext = 'sql' then ExportFormat := efSQLInsert else if ext = 'latex' then ExportFormat := efLaTeX else if ext = 'wiki' then ExportFormat := efWiki; end; @@ -524,8 +524,12 @@ begin efXML: tmp := #9'' + CRLF; - efSQL: begin - tmp := 'INSERT INTO '+GridData.Connection.QuoteIdent(Tablename); + efSQLInsert, efSQLReplace: begin + if ExportFormat = efSQLInsert then + tmp := 'INSERT' + else + tmp := 'REPLACE'; + tmp := tmp + ' INTO '+GridData.Connection.QuoteIdent(Tablename); if chkColumnHeader.Checked then begin tmp := tmp + ' ('; Col := Grid.Header.Columns.GetFirstVisibleColumn; @@ -590,7 +594,7 @@ begin end; end; - efSQL: begin + efSQLInsert, efSQLReplace: begin if GridData.IsNull(Col) then Data := 'NULL' else if GridData.DataType(Col).Index = dtBit then @@ -615,7 +619,7 @@ begin end; efXML: tmp := tmp + #9'' + CRLF; - efSQL: begin + efSQLInsert, efSQLReplace: begin Delete(tmp, Length(tmp)-1, 2); tmp := tmp + ');' + CRLF; end; @@ -649,7 +653,7 @@ begin if radioOutputCopyToClipboard.Checked then begin case ExportFormat of - efSQL: begin + efSQLInsert, efSQLReplace: begin Exporter := TSynExporterHTML.Create(Self); Exporter.Highlighter := MainForm.SynSQLSyn1; Exporter.ExportAll(Explode(CRLF, S.DataString));