AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Feldtyp und -grösse ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Feldtyp und -grösse ermitteln

Ein Thema von fly_singapore · begonnen am 18. Jul 2011 · letzter Beitrag vom 18. Jul 2011
Antwort Antwort
fly_singapore

Registriert seit: 31. Mär 2007
Ort: Kolbnitz/Bonn Österreich/Deutschland
96 Beiträge
 
Delphi 2006 Enterprise
 
#1

Feldtyp und -grösse ermitteln

  Alt 18. Jul 2011, 12:24
Datenbank: Excel • Version: XP • Zugriff über: ADOConnection
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;
Peter Steffens
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Feldtyp und -grösse ermitteln

  Alt 18. Jul 2011, 13:19
so ist es vorgesehen:
Delphi-Quellcode:
   dataset.fieldByNAme('blub').FieldKind
   dataset.fieldByNAme('blub').Size
   dataset.fieldByNAme('blub').DataType

   dataset.fields[1].FieldKind
   dataset.fields[1].Size
   dataset.fields[1].DataType
Ob das mit Excel zuverlässig funktioniert, ist äußerst zweifelhaft.
Gruß, Jo
  Mit Zitat antworten Zitat
fly_singapore

Registriert seit: 31. Mär 2007
Ort: Kolbnitz/Bonn Österreich/Deutschland
96 Beiträge
 
Delphi 2006 Enterprise
 
#3

AW: Feldtyp und -grösse ermitteln

  Alt 18. Jul 2011, 14:06
Hallo Jo,

vielen Dank für Deine Bemühungen. Leider hats nicht funktioniert... Aber das hast Du schon angedeutet...
Peter Steffens
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Feldtyp und -grösse ermitteln

  Alt 18. Jul 2011, 14:41
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.
Gruß, Jo
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#5

AW: Feldtyp und -grösse ermitteln

  Alt 18. Jul 2011, 16:02
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.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
fly_singapore

Registriert seit: 31. Mär 2007
Ort: Kolbnitz/Bonn Österreich/Deutschland
96 Beiträge
 
Delphi 2006 Enterprise
 
#6

AW: Feldtyp und -grösse ermitteln

  Alt 18. Jul 2011, 16:27
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...


Vielen Dank für Deine/Eure Hinweise...
Peter Steffens

Geändert von fly_singapore (18. Jul 2011 um 16:32 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Feldtyp und -grösse ermitteln

  Alt 18. Jul 2011, 20:47
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
Gruß, Jo
  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 08:29 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