AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ADO ausgelesene Exceldaten nur teilweise sichtbar
Thema durchsuchen
Ansicht
Themen-Optionen

ADO ausgelesene Exceldaten nur teilweise sichtbar

Offene Frage von "Master_BB"
Ein Thema von Master_BB · begonnen am 11. Jul 2007 · letzter Beitrag vom 13. Jul 2007
Antwort Antwort
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#1

ADO ausgelesene Exceldaten nur teilweise sichtbar

  Alt 11. Jul 2007, 17:23
Hallo,
ich hab mit Delphi7 einen Import von Exceldaten geschrieben.
Dazu verwende ich TADOConnection und TADOTable.

Mein Problem
Es werden nur alle Zelleninhalte von meiner Routine ausgegeben die Strings sind,
oder wo im OpenOffice der Zelleninhalt so angegeben wird das 'zahl da steht.
Normale Zahlen kommen nicht bei mir an, Feld ist leer.
Also Zellen mit Inhalt "'3" geben bei der Routine "3" zurück (alles ohne ", ' ist beabsichtigt).
Bei diesen Zellen zeit mir OpenOffice unten rechts auch SUMME=0 an.
Bei Zellen wo mir OpenOffice SUMME=4433345 anzeigt wo der Zelleninhalt "4433345" ist
kommt bei mir nichts im Delphi an, es wird nicht ausgelesen.

Weiß jemand woran das liegt?
Hier noch der Code, ist nur nen Testapp ergo überseht den schlechten Stil bitte g:

Delphi-Quellcode:
var
  ACon : TADOConnection;
  ATable : TADOTable;
  AList : TStringList;
  AStr : String;
  i : integer;
  v : Variant;
begin
   //Connection öffnen
    ACon := TADOConnection.Create(Self);
    ACon.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
        'Provider=Microsoft.Jet.OLEDB.4.0; ' +
        'Data Source=D:\368113-368163_51.xls;' +
        'Extended Properties=Excel 8.0; ' +
        'Persist Security Info=False';
    ACon.LoginPrompt := False;
    ACon.Open;

    AList := TStringList.Create;
    ACon.GetTableNames(AList);
    //ShowMessage(AList.Text);
//Table öffnen
    ATable := TADOTable.Create(Self);
    ATable.Close;
    ATable.Connection := ACon;
    AStr := Copy(AList[0], 2, Length(AList[0]) - 2);
    ATable.TableName := AList[0];
    ATable.TableDirect := True;
    ATable.Open;
    ATable.First;
//Table langlatschen
    while not ATable.Eof do
    begin
      v := ATable.FieldValues['F1'];
      if not VarIsNull(v) then //wert nicht leer mach string draus
      begin
        v := VarAsType(v, varString);
        ShowMessage(v);
      end;
      ATable.Next;
    end;
    FreeAndNil(ATable);
    FreeAndNil(AList);
    ACon.Close;
Für jeden Tip wäre ich dankbar,
an dem AutoCalcFields von ADOTable liegts nicht, habs mir true und false probiert.

Gruß
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ADO ausgelesene Exceldaten nur teilweise sichtbar

  Alt 11. Jul 2007, 17:34
Moin Master_BB,

wie komplex ist denn die Excel-Tabelle?
Ich konnte schon einmal die Erfahrung machen, dass das Auslesen von Excel mit ADO nicht immer sauber funktioniert, und bin dann auf das direkte Auslesen per Com-Objekt umgeschwenkt.
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
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#3

Re: ADO ausgelesene Exceldaten nur teilweise sichtbar

  Alt 11. Jul 2007, 18:11
sehr klein grad mla 60 zeilen.

wie machst du das mit COM? muß man wenn man com benutzt excel installiert haben,
das will ich nämlich nicht.
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: ADO ausgelesene Exceldaten nur teilweise sichtbar

  Alt 11. Jul 2007, 22:59
Moin Master_BB,

Zitat von Master_BB:
muß man wenn man com benutzt excel installiert haben,
Ja, das ist sozusagen eine Fernsteuerung von Excel.

Zitat von Master_BB:
das will ich nämlich nicht.
deswegen hatte ich es auch mit ADO versucht
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
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: ADO ausgelesene Exceldaten nur teilweise sichtbar

  Alt 11. Jul 2007, 23:39
Kann es sein, dass in der Exceltabelle in einer Spalte die Typen gemischt sind? Excel hat mit Text und Zahlen in einer Spalte keine Probleme, eine Zahl kann aber nicht in einer Datenbank in einem Textfeld gespeichert werden.
  Mit Zitat antworten Zitat
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#6

Re: ADO ausgelesene Exceldaten nur teilweise sichtbar

  Alt 12. Jul 2007, 13:07
ja in den spalten sind die daten gemischt mal, eine Zelle String mal eine integer.
sieht so in etwa aus:

Probe
1
2
3
4
5

da gibt mir meine routine nur Probe aus für die Spalte F1 wenn das diese sein soll.
Mache ichs so
Probe
'1
2
3
4
5
Dann gibt er mit probe und 1 als Werte, anzeigen tut er für die '1 auch nur die 1 in der
zelle bloß in der bearbeiten zeile für die zelle sieht man dieses hochkomma.
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ADO ausgelesene Exceldaten nur teilweise sichtbar

  Alt 12. Jul 2007, 22:15
Dann würde ich eigentlich darauf tippen, dass da der Fehler liegt. Jet legt für das Datenbankfeld fest, dass es Text enthält und kann dementsprechend dort kein Integer einfügen. Du müsstest auch am Feldtyp sehen, wie Jet die Spalte interpretiert hat.

Wenn die Spalten so sind, wie bei deinem Beispiel, also Spaltenname und dann die Werte, ist aber auch etwas merkwürdig. Die Grundeinstellung bei mir auf dem Rechner ist, erste Zeile wird für die Feldnamen verwendet und es werden 8 Zeilen zur Typfestlegung durchsucht.
Bei "Probe" 1 2 3 sieht es eher danach aus, als verwendet er keine Feldnamen und sieht sich nur eine Zeile an. Was passiert bei 'Extended Properties="Excel 8.0;HDR=YES"' bzw. was ist unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engi nes\Excel eingestellt?

Sortenrein müssen, abgesehen von der ersten Zeile, die Spalten aber schon sein, entweder nur Text oder nur Zahlen.
  Mit Zitat antworten Zitat
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#8

Re: ADO ausgelesene Exceldaten nur teilweise sichtbar

  Alt 13. Jul 2007, 20:27
jap ich habs nun auch gemerkt,
es liegt daran das diese Zeilen gemischt sind.
Die Tabellenköpfe sind in der 8ten Zeile und danach kommen
die Werte und dadurch sind für ihn die Spalten gemischt und
es kommt zu diesem merkwürdigen fehlverhalten.

hab nun erstmal manuell die ersten zeilen gelöscht,
werde bald einen algo schreiben um diese wegzulassen,
mal sehn ob das bei ado möglich ist

Gruß
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:13 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