Einzelnen Beitrag anzeigen

Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#1

In Excel Datenquelle automatisch wählen

  Alt 18. Feb 2008, 13:07
Datenbank: SQL • Zugriff über: SQL Abfrage
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

  Mit Zitat antworten Zitat