Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mit D2005PE über ADO(?) Exceldatei Auslesen (https://www.delphipraxis.net/56381-mit-d2005pe-ueber-ado-exceldatei-auslesen.html)

glkgereon 4. Nov 2005 19:20


Mit D2005PE über ADO(?) Exceldatei Auslesen
 
Hi

falls das die falsche Kategorie ist...einfach verschieben...wusst nicht so richitg wos hingehört.

Also, zum Problem

Ich habe eine xls-Datei die ich mit Delphi 2005 Personal auslesen will.
Die Daten möchte ich irgendwie per Hand auslesen, und später als String verwurschtelt an nen Server schicken der die in eine Datenbank einträgt.
Ein direkter Zugriff auf die Datenbank ist leider nicht vorgesehen/möglich/nutzbar.
Daher wollte ich die Daten direkt korrekt als Values vom MySQL-Query (INSERT INTO Bla VALUES (...)) als Parameter an ein Php-Script übergeben.

Ich habe nun nun (unteranderem hier) gelesen, das könne man relativ einfach mit ADO lösen.
nun zwei fragen:

Ist ADO nicht für Datenbanken? was hat das mit Excel zu tun?

zweitens:
Wo kriege ich ado her?
also ich habe zwar diesen Link zur MSDN gefunden, aber an Delphi hat es nichts geändert (was mich auch irgendwie gewundert hätte)
Edit: Diesen
Wie kann ich nun diese Sachen in Delphi importieren und/oder nutzen?

Jens Schumann 5. Nov 2005 17:52

Re: Mit D2005PE über ADO(?) Exceldatei Auslesen
 
Zitat:

Zitat von glkgereon
Ist ADO nicht für Datenbanken? was hat das mit Excel zu tun?

Ja - ADO ist für Datenbanken. Glücklicherweise läßt sich über ADO eine Exceltabelle als Datenbank ansprechen.
Der Zugriff erfolgt von Deinem Programm üder ADO -> JetEngine -> Excel.
Das ADO die Datenbank in einer Exceltabelle findet und über die JetEngine zugreiffen soll sagst Du über den ConnectionString:
Code:
sExcelConnectionString ='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"';
Um den Inhalt der Exceltabelle abzufragen verendest Du SQL. Der Excel-Tabellenblattname steht dann für den Tabellennamen innhalb des SQL-Statments. Achtung: Damit es funktioniert muss an den Tabellennamen ein $-Zeichen angehängt werden. Den Grund kennt bestimmt nur MS.
Code:
sExcelSQL = 'SELECT * FROM [%s$]';
  ...
  SQLStatement:=Format(sExcelSQL,['Tabelle1']);
Zitat:

Zitat von glkgereon
Wo kriege ich ado her?

Ab Win2000 ist ADO standartmäßig dabei.

Ungünstig ist nur, das D2005 Personal keine Typebibliotheken importieren kann. D.h Du kannst nicht auf die frühe Bindung (verwende ich immer) zurückgreifen. Dir bleibt also nur der Weg über die späte Bindung (mit CreateOleObject und Varinats u.s.). Damit kenne ich mich aber nicht so aus.

Hier gibt die aktuelle Version MDAC (enthält die ADO Objekte)

Update für die JetEngine

Dort gibt esHilfe zu ADO

glkgereon 5. Nov 2005 17:59

Re: Mit D2005PE über ADO(?) Exceldatei Auslesen
 
Zitat:

Zitat von Jens Schumann
Zitat:

Zitat von glkgereon
Ist ADO nicht für Datenbanken? was hat das mit Excel zu tun?

Ja - ADO ist für Datenbanken. Glücklicherweise läßt sich über ADO eine Exceltabelle als Datenbank ansprechen.
Der Zugriff erfolgt von Deinem Programm üder ADO -> JetEngine -> Excel.

danke, wieder was gelernt...hört sich komisch an, is aber so :mrgreen:

Zitat:

Zitat von Jens Schumann
Zitat:

Zitat von glkgereon
Wo kriege ich ado her?

Ab Win2000 ist ADO standartmäßig dabei.

Ungünstig ist nur, das D2005 Personal keine Typebibliotheken importieren kann. D.h Du kannst nicht auf die frühe Bindung (verwende ich immer) zurückgreifen.

Win2k hab ich... gibt es echt keine Möglichkeit das zu importieren?
Zum beispiel sources aus anderen D-Versionen anpassen oder so? (wahrscheinlich totaler Holzweg... :( )
Zitat:

Zitat von Jens Schumann
Dir bleibt also nur der Weg über die späte Bindung (mit CreateOleObject und Varinats u.s.). Damit kenne ich mich aber nicht so aus.

Sieht dann der Qt in etwa wie folgt aus?
Delphi-Quellcode:
CoInitialize(nil);
FExcel:=CreateOleObject('Excel.Application');
FExcel.Visible:=False;
FWorkBook:=FExcel.WorkBooks.Open(FileName:=FFileName, lcid:=GetUserDefaultLCID);
FExcel.WorkBooks.Open(FFileName, emptyParam, emptyParam, emptyParam,
  emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,
  emptyParam, emptyParam, emptyParam, emptyParam, GetUserDefaultLCID);}
FExcel.Close(False);
FExcel.Quit;
CoUnInitialize;
so versuche ich es bisher...hatte auf eine einfach alternative gehofft :(

Zitat:

Zitat von Jens Schumann

Hier gibt die aktuelle Version MDAC (enthält die ADO Objekte)

Update für die JetEngine

Dort gibt esHilfe zu ADO

Wer ich mir mal angucken...

Bernhard Geyer 6. Nov 2005 12:02

Re: Mit D2005PE über ADO(?) Exceldatei Auslesen
 
Zitat:

Zitat von Jens Schumann
Zitat:

Zitat von glkgereon
Ist ADO nicht für Datenbanken? was hat das mit Excel zu tun?

Ja - ADO ist für Datenbanken. Glücklicherweise läßt sich über ADO eine Exceltabelle als Datenbank ansprechen.

Nicht ganz. ADO kann flexibler verwendet werden und für alle Datenquellen verwendet werden für die es einen ADO/OLE DB-Provider gibt. So ist z.B. auch der Zugrif auf den Index-Diesnt oder den Directory Service über ADO möglich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr.

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