Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi In Excel Datenquelle automatisch wählen (https://www.delphipraxis.net/108717-excel-datenquelle-automatisch-waehlen.html)

Overclocker 18. Feb 2008 13:07

Datenbank: SQL • Zugriff über: SQL Abfrage

In Excel Datenquelle automatisch wählen
 
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

:)

Overclocker 19. Feb 2008 07:01

Re: In Excel Datenquelle automatisch wählen
 
Keiner eine Idee :(?

sx2008 19. Feb 2008 07:25

Re: In Excel Datenquelle automatisch wählen
 
Versuch mal:
Delphi-Quellcode:
'UID=' + User + ';' +
'Pwd="";'+
Wenn du ein Passwort in der DSN angibst, bräuchte Excel nicht mehr nachfragen...

Overclocker 19. Feb 2008 07:44

Re: In Excel Datenquelle automatisch wählen
 
Hey,
danke für deine Antwort.

Habe ich vorher schon probiert und jetzt auch nochmal, jetzt kommt das Fenster trotzdem noch,dann muss ich im Register: DataSources meinen Server auswählen und dann kommt eben ein Fenster: Gesicherte Verbindung hernehmen (oder so ähnlich) wo eben dann mein Username + Passwort schon hinterlegt sind,aber die störenden Fenster kommen immer noch

Gruß


//Noch als Zusatz: In meinen anderen ADOConnection Komponenten habe ich als Provider SQLOLEDB.1 angegeben, doch wenn ich das ODBC mit diesem ersetze kommt ein neuer Fehler,aber vielleicht liegts irgendwie daran

Overclocker 20. Feb 2008 07:09

Re: In Excel Datenquelle automatisch wählen
 
keiner hat wohl ne idee :(

mikhal 20. Feb 2008 07:32

Re: In Excel Datenquelle automatisch wählen
 
Hast du in deiner AdoConnection die Property LoginPrompt auf False gesetzt? Die steht standardmäßig auf True und ruft deshalb immer den Anmeldedialog auf.

Grüße
Mikhal

Overclocker 20. Feb 2008 07:46

Re: In Excel Datenquelle automatisch wählen
 
normal hat das nix mit der ADO CONnection zu tun,da diese in der Beziehung mit keiner anderen Komponente die ich hierfür benötige in verbindung steht.... und das loginprompt is bei mir auf false

Overclocker 20. Feb 2008 20:08

Re: In Excel Datenquelle automatisch wählen
 
Ich brauch eure hilfe,was mach ich falsch???


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz