Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#1

Excel mit ADO auslesen klappt nur sporadisch

  Alt 23. Feb 2006, 00:35
Datenbank: Excel • Version: 2003 • Zugriff über: ADO
Moin Zusammen,

vorab:
Ich versuche mich gerade in ADO einzuarbeiten, und benötige gerade den Zugriff auf Excel-Daten, so ist es zu diesem "Einstiegsprojekt" für ADO gekommen.

Hierbei muss ich eine Tabelle einer Excel-Datei (mehrere Arbeitsblätter) über ADO auslesen.
Zum testen verwende ich hierfür eine ADOConnection und eine ADOTable.
Delphi-Quellcode:
  AdoConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
                                     OpenDialog1.FileName +
                                     ';Extended Properties="Excel 8.0;HDR=No";Persist Security Info=False;';
  AdoConnection1.Open;
Das funktioniert.
Delphi-Quellcode:
  AdoTable1.Connection := AdoConnection1;
  AdoTable1.TableName := '[Tabelle1$]';
  AdoTable1.Active := true;
Soweit ist noch alles gut

Dann wähle ich mir die erste für mich interessante Zeile aus.
  AdoTable1.RecNo := 23; Auch das klappt wie erwartet.
Jetzt gehe ich in einer Schleife durch die Tabelle, um mir die verschiedenen Spalten der Zeilen auszulesen.
Dazu prüfe ich erst einmal, ob die Zelle Inhalt hat
if AdoTable1.FieldByName('F'+IntToStr(i)).Value = null then begin falls ja, wird über den Datentyp die Art der Umwandlung in lesbaren Inhalt bestimmt
case AdoTable1.FieldDefList.FieldDefs[i].DataType of Wird hierbei ein von mir nicht berücksichtiger Typ gefunden, so lasse ich mir den Feldnamen und die Nummer des Typs ausgeben.
Auf diesem Wege konnte ich feststellen, dass die Zellen entweder vom Typ ftDateTime oder vom Typ ftWideString sind.

Das Problem ist:
Nur die erste Spalte (Typ ftWideString), in der Tageskürzel stehen (MO, DI ...), und die dritte (auch ftWideString) in der Zeiten stehen, werden mir korrekt ausgegeben, der Rest der Felder wird mit <leer> gefüllt
In der Datei ist die erste Spalte vom Format "Normal", die zweite hat das Format Datum (tt.mm.jj), und alle restlichen das gleiche Benutzerdefinierte Format ([h]:mm;@), auch die, deren Inhalt in Spalte drei angezeigt werden

Mit D7 und D2006 erhalte ich jeweils das gleiche Ergebnis.

Hat jemand einen Tip für mich, woran das liegen könnte?

Vielen Dank im Voraus.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat