![]() |
Datenbank: Excel • Version: XP • Zugriff über: ADOConnection
Feldtyp und -grösse ermitteln
Hallo Allerseits,
über eine ADOconnection habe ich eine Ecxeltabelle angezapft. Das ging auch ohne grössere Probleme. Zusätzlich konnte ich auch die Spaltennamen der ersten Spalte erkennen. Dies ging auch sehr gut. Nun möchte ich aber gerne auch den Feldtyp und die Grösse ermitteln. Geht das?
Delphi-Quellcode:
adoconnection2.Provider := 'Microsoft.Jet.OLEDB.4.0'; adoconnection2.ConnectionString := 'Data Source=C:\temp\Exceltest.xls; Extended Properties=Excel 8.0' ; adoconnection2.LoginPrompt := false; adoconnection2.Open; ADOQuery2.SQL.Text := 'SELECT * FROM [Tabelle1$]'; ADOQuery2.Active := true; // gibt den Wert der ersten Spalte zurück cfield := ADOQuery2.fieldbyname('ObjID').AsString; // ermittelt den Feldnamen cfield := ADOQuery2.Fields.Fields[0].FieldName; |
AW: Feldtyp und -grösse ermitteln
so ist es vorgesehen:
Delphi-Quellcode:
Ob das mit Excel zuverlässig funktioniert, ist äußerst zweifelhaft.
dataset.fieldByNAme('blub').FieldKind
dataset.fieldByNAme('blub').Size dataset.fieldByNAme('blub').DataType dataset.fields[1].FieldKind dataset.fields[1].Size dataset.fields[1].DataType |
AW: Feldtyp und -grösse ermitteln
Hallo Jo,
vielen Dank für Deine Bemühungen. Leider hats nicht funktioniert... Aber das hast Du schon angedeutet... :cry: |
AW: Feldtyp und -grösse ermitteln
Excel wird ja gern als DB missbraucht. Du solltest Dich fragen, warum es Excel sein soll.
M.E. gehören Daten in eine Datenbank. Excel darf dann gern als Report-, Auswertungstool verwendet werden. Wenn Du unter Folter versprechen musstest, Exceldaten auf diesem Wege anzusprechen, auszulesen oder oder oder, dann prüfst Du Dich wahrscheinlich tot. ;) Vorgehen wäre dann eher, eine funktionierende Umgebung (Excelsheets, -Spalten, -Formatierung, .. ) zu definieren und dann bei Fehlern mit entsprechenden Hinweisen auszusteigen. |
AW: Feldtyp und -grösse ermitteln
Grauslich, stimmt. Manchmal muss man aber EXCEL-Tabellen importieren.
Dann sollte das Datenformat vorher klar sein. Wenn es denn sein muss, kann man auch versuchen, durch ein paar Tests den Datentyp selbst herauszubekommen. Ich habe es mal so gemacht: Ich deklariere mir eine Variable vom Typ "SET OF TFieldType" und belege sie mit allen sinnvollen Datentypen. Die Variable sei "MoeglicheDatentypen". Ich definiere mir eine Variable pro Spalte. Nun lese ich die Tabelle ein: Betrachten wir mal nur eine Spalte, deren Zelleninhalt sei V. 1. Ist V leer? 2. Wenn NEIN 2.1 Kann ich V in eine Integerzahl umwandeln? Wenn nein, entferne ich 'ftInteger' aus den möglichen Datentypen. 2.2 Kann ich V in eine Float-Zahl umwandeln? Wenn nein... 2.3 Ist V='1' oder '0' oder 'Wahr' oder 'Falsch' oder 'True' oder 'False' ...,? Nein? Dann ftBoolean entfernen ... Für alle unterstützten Datentypen wiederholen. Zum Schluss bleibt eine Menge von Datentypen übrig. In der Reihenfolge Bool->Int->Float->String prüft man, ob einer der Datentypen in der Menge ist und nimmt dann den ersten Datentyp. Fertig. |
AW: Feldtyp und -grösse ermitteln
Hallo FredlFesl und Jo
genau, so habe ich dann auch weiter gedacht. Ich muss halt die Exceltabelle auf ihre Bestandteile analysieren. >Und... Es ist ja eben der Sinn, Daten aus Excel zu importieren um eben diesen Irrglauben von Excel als Datenbankersatz aus den weg zu räumen. Nun, manchmal bekommt man aber die Daten im Excelformat. Man kann auch in Word eine schöne Tabelle aufbauen. eine Datenbank ist es trotzdem nicht. Mit Excel kann man auch schöne Texte schreiben, dafür ist aber Excel nicht gedacht. Das erinnert mich ans alte DOS-Tool Edlin. Es gab doch Zeitgenossen, die wollten damit Korrespondenz machen... :roll: Vielen Dank für Deine/Eure Hinweise... |
AW: Feldtyp und -grösse ermitteln
Ok, wenn Du unformatierte Exceldaten in ein definiertes DB System bringen willst, dann hast Du ja schon mal eine Masterdefinition, Deine Zieltabellen. Dazu gäbe es mehrere Möglichkeiten.
Vorab eine Unterscheidung: Stammen die Excel Daten aus "gewachsenen" Excel Sheets oder handelt es sich um automatisch/ programmatisch erzeugte Dateien? Im ersten Fall wird's anstrengend, im 2. kann man vielleicht einen Großteil problemlos in die DB bringen, weil es zuvor konsistent ausgegeben wurde. Aber für Fall 1: a) Vorgaben aus der Zieltabelle nehmen und per COM als Formatierung auf die Excelspalten legen a1) Dann Dein Verfahren anwenden b) Import von Excel in Interfacetabellen, die nur aus (genügend großen und vielen) Textspalten aufgebaut sind b1) Interfacetabelle gemäß Zieltabelle analysieren, sortieren, sieben b2) finalen Import in Zieltabelle durchführen Je nachdem ob es sich um wiederkehrende, variierende usw Formate, Daten, Spalten handelt, evtl. auch fertige Tools nutzen, Stichwort: ETL |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 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