Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Hilfe mit Excel über AdoConnection! (https://www.delphipraxis.net/72304-hilfe-mit-excel-ueber-adoconnection.html)

smartmod 28. Jun 2006 12:43

Datenbank: Excel • Version: 8 • Zugriff über: AdoConnection

Hilfe mit Excel über AdoConnection!
 
Hallo,

ich habe folgendes Problem.
Ich möchte Daten aus einer Exceldatei in eine ListView einlesen. Dazu benutze ich eine AdoConnection und eine AdoTable.
Das funktioniert auch alles ganz prima, nur leider liest er Werte manchmal ein, und manchmal nicht. Ich weiß leider nicht woran das liegt.

Beispiel:

Das ist die Tabelle, die eingelesen werden soll:

Zitat:

Gruppe-Team | Tore / Sieger
Achtel1-Deutschland | 2
Achtel1-Schweden | 1
Achtel1Sieg | Deutschland
Achtel2-Argentinien | 4
Achtel2-Mexiko | 1
Achtel2Sieg | Argentinien
Achtel3-England | 2
Achtel3-Ecuador | 0
Achtel3Sieg | England
Achtel4-Portugal | 1
Achtel4-Niederlande | 1
Achtel4Sieg | Portugal
Das ist der dazu genutzte Code:

Delphi-Quellcode:
ListView3.Clear;

Seperator := '-';


  AdoTable2.Active := false;
  AdoTable2.Connection := AdoConnection2;
  AdoTable2.TableName := '['+ListView14.Items[ListView14.ItemIndex].Caption+'$]';
  AdoTable2.Active := true;

  i := 0;
  AdoTable2.First;
  with Adotable2 do

  begin

    While not EoF do

    begin

      ListView3.Items.Add;
      iPos := Pos(Seperator, AdoTable2.Fields.FieldByNumber(1).Text);
      ListView3.Items[i].Caption := Copy(AdoTable2.Fields.FieldByNumber(1).Text, 0, iPos-2);
      ListView3.Items[i].SubItems.Add(Copy(AdoTable2.Fields.FieldByNumber(1).Text, iPos+1, Length(AdoTable2.Fields.FieldByNumber(1).Text)));
      ListView3.Items[i].SubItems.Add(AdoTable2.Fields.FieldByNumber(2).Text);
      ListView3.Items[i].SubItems.Add(' : ');
      Next;
      ListView3.Items[i].SubItems.Add(AdoTable2.Fields.FieldByNumber(2).Text);
      iPos := Pos(Seperator, AdoTable2.Fields.FieldByNumber(1).Text);
      ListView3.Items[i].SubItems.Add(Copy(AdoTable2.Fields.FieldByNumber(1).Text, iPos+1, Length(AdoTable2.Fields.FieldByNumber(1).Text)));
      Next;
      ListView3.Items[i].SubItems.Add(AdoTable2.Fields.FieldByNumber(2).Text);
      Next;

      inc(i);
    end;
  ProgressBar1.Position := 0;
  Label1.Caption := IntToStr(Points);
  end;

  ListView3.ItemFocused := ListView3.Items[0];
  ListView3.Enabled := true;

  end;
Er liest die Werte der ersten Spalte ohne Probleme ein, in der zweiten aber nur die Zahlen. Text grundsätzlich nicht. Kopiere ich nun aber die Werte der ersten Spalte im Original Excelsheet in die zweite, liest er auch die ein.

Ich hoffe mein Problem ist verständlich.

Vielen Dank schonmal für die Hilfe!

Bernhard Geyer 28. Jun 2006 13:32

Re: Hilfe mit Excel über AdoConnection!
 
Solche Probleme gibt es öfter das man über ADO nicht den Zelleninhalt bekommt wenn die Formatierung der Zellen nicht paßt. Sicherer ist es über die COM-Schnittstelle von Excel die Daten einzulesen oder mittels nativer Komponente die XLS-Datei direkt zu lesen.

smartmod 28. Jun 2006 14:19

Re: Hilfe mit Excel über AdoConnection!
 
Wie müsste ich denn die Zellen formatieren? Die sind als Standard formatiert. Ich hab nämlich eigentlich keine Lust das ganze Ding jetzt wieder umzustellen (der Quellcode ist 1000 Zeilen lang und überall wird die Ado genutzt.)

Bernhard Geyer 28. Jun 2006 14:40

Re: Hilfe mit Excel über AdoConnection!
 
Zitat:

Zitat von smartmod
Wie müsste ich denn die Zellen formatieren? Die sind als Standard formatiert. Ich hab nämlich eigentlich keine Lust das ganze Ding jetzt wieder umzustellen (der Quellcode ist 1000 Zeilen lang und überall wird die Ado genutzt.)

Da ich nür über COM auf Excel zugreife und die Probleme über ADO hier und in anderen Foren immer wieder auftreten kann ich dir nur den Tipp gehen die Forensuche zu bemühen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 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 by Thomas Breitkreuz