AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Exceltabelle über ADO und FieldType festlegen
Thema durchsuchen
Ansicht
Themen-Optionen

Exceltabelle über ADO und FieldType festlegen

Ein Thema von Jens Schumann · begonnen am 31. Mär 2004 · letzter Beitrag vom 22. Feb 2005
Antwort Antwort
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

Exceltabelle über ADO und FieldType festlegen

  Alt 31. Mär 2004, 13:20
Hallo,
ich habe das Problem, dass ich mehrere Exceldateien in eine Interbase(Firebird RC 1.5) einlesen muss.
Das öffnen mit ADO ist kein Problem. Die Werte in Interbase zu spielen auch nicht.
So könnte z.B. der ConnectionString aussehen:
Code:
sExcelConnectionString ='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Exceldatei.xls;Extended Properties=Excel 8.0;Persist Security Info=False';
und so das SQL-Statement SELECT * FROM [Tabelle1$] Das Problem ist, dass wenn ich über ADO ein Excelarbeitsblatt als Datenbank öffne bestimmt ADO den FieldType. Ich vermute mal das geschieht über den ersten Datensatz. Wenn die Tabelle aber wie folgt auf gebaut ist, kommt das Problem:
Code:
A   B    C
EX1  1234  Ein Text
VBN A400  Noch ein Text
Wenn ADO den FieldType über den ersten Datensatz bestimmt wird Spalte B zum Type Double(ADO nimmt wirklich Double anstatt Integer). Wenn jetzt der zweite Datensatz gelesen wird kommt es bei Spalte B zum einem Fehler. Es steht ja ein Text im zweiten Datensatz in Spalte B.

Jetzt die Frage: Wie kann ich die Fieldtypen bestimmen.

Dann würde ich von vornherein sagen dass Spalte B einen String enthält.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Exceltabelle über ADO und FieldType festlegen

  Alt 31. Mär 2004, 13:33
Zitat von Jens Schumann:
Jetzt die Frage: Wie kann ich die Fieldtypen bestimmen.
Dann würde ich von vornherein sagen dass Spalte B einen String enthält.
Spalte B in Excel markieren, rechte Maustaste, Zellen formatieren,
Kategorie Text wählen. Notfalls lässt sich dies auch über OLE-Automatisierung
erledigen.

Der Connectionstring für Excel hat übrigens 2 interessante Eigenschaften:
"HDR=Yes;" indicates that the first row contains columnnames, not data
"IMEX=1;" tells the driver to always read "intermixed" data columns as text

Beispiel:
Code:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\xfiles.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"
IMEX=1 wäre also für deinen Fall das Richtige.
Richtig formatierte Excelspalten sind aber zu bevorzugen.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Exceltabelle über ADO und FieldType festlegen

  Alt 31. Mär 2004, 13:59
Hallo shmia,
GENIAL

vielen Dank
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Exceltabelle über ADO und FieldType festlegen

  Alt 22. Feb 2005, 16:34
Hallo,

was bedeutet "Installierbares ISAM nicht gefunden"? Das kommt wenn ich bei ADOConnection die Connection auf "True" setze.

Besten Dank im voraus.
Peeters
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Exceltabelle über ADO und FieldType festlegen

  Alt 22. Feb 2005, 16:47
Zitat von Peeters:
Hallo,

was bedeutet "Installierbares ISAM nicht gefunden"? Das kommt wenn ich bei ADOConnection die Connection auf "True" setze.

Besten Dank im voraus.
Keine Ahnung, aber zeig doch mal den Connectionstring.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Exceltabelle über ADO und FieldType festlegen

  Alt 22. Feb 2005, 16:57
Microsoft.Jet.OLEDB.4.0;Data Source=C:\Programmieren\EDI4\excel\tabelle.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1
Peeters
  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Exceltabelle über ADO und FieldType festlegen

  Alt 22. Feb 2005, 17:38
Habe die Lösung gefunden, liegt an Windows. Eine dll mußte neu registriert werden.
Peeters
  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Exceltabelle über ADO und FieldType festlegen

  Alt 22. Feb 2005, 18:22
Leider doch nicht und zwar, wenn ich diesen Connectionstring nehme:

'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Exceldatei.xls;Extended Properties=Excel 8.0;Persist Security Info=False' funktioniert es, aber wenn ich diesen verwende:

'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Exceldatei.xls;Extended Properties="Excel 8.0;Persist Security Info=False;IMEX=1' nicht. Da der Tipp von shmia nicht schlecht ist und auch bei mir eintritt, benötige ich leider die zweite Möglichkeit.

IMEX=1 nur dann kommt der fehler mit "ISAM". Kann mir eine eventuell eine andere Möglichkeit nennen?

Gruß
Peeters
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Exceltabelle über ADO und FieldType festlegen

  Alt 22. Feb 2005, 19:46
Zitat von Peeters:
was bedeutet "Installierbares ISAM nicht gefunden"? Das kommt wenn ich bei ADOConnection die Connection auf "True" setze.
siehe: http://www.activevb.de/rubriken/faq/isam.html
Du solltest auch mal speziell Ausschau nach dem aktuellsten Servicepack für die Jet-Engine halten.
MSDN-Library durchsuchenjet database engine service pack
Andreas
  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 18:40 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