Hi,
folgenden Code habe ich hier gefunden, um eine
SQL Abfrage direkt nach Excel zu exportieren.
Delphi-Quellcode:
var Excel:TExcelApplication;
lcid:integer;
Workbook:_Workbook;
Query, Range, Sheet:Variant;
User, Database, ODBCname:
string;
begin
Excel:=TExcelApplication.Create(Self);
try
lcid:=GetUserDefaultLCID;
Excel.Connect;
Excel.Visible[lcid] := true;
Excel.UserControl := true;
Workbook:=Excel.Workbooks.Add(EmptyParam, LCID);
User:='
Overclocker';
ODBCname:='
SQL-Server';
Database:='
DATA';
Sheet:=Workbook.ActiveSheet;
Range := Excel.Cells.Range['
A1', '
A1'];
Query:=Sheet.QueryTables.Add(
'
ODBC;' +
'
DSN=' + ODBCname + '
;' +
'
UID=' + User + '
;' +
'
APP=Microsoft® Query;' +
'
DATABASE=' + Database + '
;' +
'
Trusted_Connection=Yes',
Range
);
Query.CommandText:= excel_query;
Query.
Name:= '
Meine Abfrage von LocalServer';
Query.FieldNames := True;
Query.RowNumbers := False;
Query.FillAdjacentFormulas := False;
Query.PreserveFormatting := True;
Query.RefreshOnFileOpen := False;
Query.BackgroundQuery := True;
Query.RefreshStyle := xlInsertDeleteCells;
Query.SavePassword := True;
Query.SaveData := True;
Query.AdjustColumnWidth := True;
Query.RefreshPeriod := 0;
Query.PreserveColumnInfo := True;
Query.Refresh(False);
finally
Excel.Disconnect;
Excel.free;
end;
User:='Overclocker';
ODBCname:='
SQL-Server';
Database:='DATA';
Hier habe ich alle Sachen ausgefüllt, d. h. Username ist "Overclocker", der Server ist "
SQL-Server" und die Datenbank ist "Data".
Wenn ich das jetzt ausführ, funktioniert auch alles soweit wunderbar.
Nur sobald sich Excel öffnet, muss ich hier noch einmal die Datenquelle neu auswählen (also z.b. "
SQL Server" im Register DAtasources).
Wieso muss ich es hier nochmal auswählen, wenn es doch im Code schon hinterlegt ist??
Danke für die Hilfe