AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBF-Datenbank einlesen

Ein Thema von Matze · begonnen am 16. Jul 2011 · letzter Beitrag vom 17. Jul 2011
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

DBF-Datenbank einlesen

  Alt 16. Jul 2011, 14:28
Datenbank: dBase? • Version: - • Zugriff über: C#
Hi zusammen,

ich habe hier eine DBF-Datei, die ich mit C# einlesen möchte. Leider klappt das hinten und vorne nicht.
Versucht habe ich es so (Leerzeichen in der Pfadangabe gehen leider nicht ):

Code:
string dbfPah = @"C:\Dokumente und Einstellungen\Eingeschraenkt\Desktop\tmp\";

StringBuilder dbfShortPath = new StringBuilder(255);
GetShortPathName(dbfPah, dbfShortPath, dbfShortPath.Capacity);

dbfPah = dbfShortPath.ToString();

OdbcConnection oConn = new OdbcConnection();
oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=" + dbfPah + ";Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
oConn.Open();

OdbcCommand oCmd = oConn.CreateCommand();
oCmd.CommandText = @"SELECT * FROM [" + dbfPah + "FILE.DBF]";
DataTable dt = new DataTable();
dt.Load(oCmd.ExecuteReader()); // Fehler
oConn.Close();

dataGridView1.DataSource = dt;
Bei
Code:
oCmd.ExecuteReader()
kommt immer der Fehler:

Zitat:
ERROR [42000] [Microsoft][ODBC dBASE Driver] Das Datenbankmodul kann 'C:\DOKUME~1\EINGES~1\Desktop\tmp\FILE.DBF' nicht finden. Stellen Sie sicher, dass es sich um einen gültigen Parameter oder Alias-Namen handelt, der keine ungültigen Zeichen oder falsche Zeichensetzung enthält und dessen Name nicht zu lang ist.
Der Pfad existiert jedoch genau so (C:\DOKUME~1\EINGES~1\Desktop\tmp\).

Wie funktioniert das?
Mit
Code:
System.Data.OleDb
geht's genauso wenig.

Grüße
Matze
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DBF-Datenbank einlesen

  Alt 16. Jul 2011, 14:33
Mal mit einem kürzeren Pfad getestet?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: DBF-Datenbank einlesen

  Alt 16. Jul 2011, 14:35
Ja, da kommt dann fast die gleiche Meldung:
Zitat:
ERROR [42S02] [Microsoft][ODBC dBASE Driver] Das Microsoft Jet-Datenbankmodul konnte das Objekt 'D:\tmp\FILE.DBF' nicht finden. Stellen Sie sicher, dass das Objekt existiert und dass die Namens- und Pfadangaben richtig eingegeben wurden.
Vielleicht ist die Art des Aufrufs auch falsch. Nur in einigen Foren wurde es so gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#4

AW: DBF-Datenbank einlesen

  Alt 16. Jul 2011, 15:58
Gibt die InnerException noch mehr Informationen?

//Edit:
Zitat:
Der Pfad existiert jedoch genau so (C:\DOKUME~1\EINGES~1\Desktop\tmp\).
Dadurch, dass es beim Aufbauen der Connection noch nicht knallt, gehe ich davon aus, dass er den Pfad auch findet.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell

Geändert von Mithrandir (16. Jul 2011 um 16:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#5

AW: DBF-Datenbank einlesen

  Alt 16. Jul 2011, 16:17
Eins noch: Sicher, dass es "echtes" dBase und nicht Visual Foxpro ist? Könnte sonst sein, dass du eher auf "VFPOLEDB" wechseln musst.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: DBF-Datenbank einlesen

  Alt 16. Jul 2011, 18:06
Ne, da geht gar nichts. Mal kommt die Pfad-Meldung, mal dass irgendeine Xbase-Memo-Datei nicht gefunden wird etc.

Edit: Halt, es geht. Danke.
Ich dachte, die Datenbank sei die DBF-Datei, aber die anderen Dateien in dem Verzeichnis gehören dazu!
Aber es geht nur mit dem ganz kurzen Pfad (D:\tmp\), mit dem langen (auch in Kurzform) nicht.

Geändert von Matze (16. Jul 2011 um 18:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#7

AW: DBF-Datenbank einlesen

  Alt 16. Jul 2011, 18:12
Äh, blöde Frage... der Pfad ist im Connectionstring schon komplett angegeben und Du selektierst dann nochmal aus einem File mit komplettem Pfad?
Sollte das nicht ein einfaches SELECT * FROM FILE.DBF sein wenn der Pfad im ConnectionString schonmal angegeben wurde??
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: DBF-Datenbank einlesen

  Alt 16. Jul 2011, 18:12
Hallo,
mal probiert die Datei in Exel oder Access einzulesen um sicher zu sein, dass die Datei auch eine DBF ist.

Ich habe in der Vergangenheit den Header der Datei verändert um somit einen kleinen Zugriffschutz zu realisieren, konnte dann von Handelsüblichen Anwendungen nicht geöffnet werden.
.
mfg wf
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: DBF-Datenbank einlesen

  Alt 16. Jul 2011, 18:49
Äh, blöde Frage... der Pfad ist im Connectionstring schon komplett angegeben und Du selektierst dann nochmal aus einem File mit komplettem Pfad?
Bingo, nun geht's auch mit langem Pfad, super danke.

mal probiert die Datei in Exel oder Access einzulesen um sicher zu sein, dass die Datei auch eine DBF ist.
Ich habe mir einen kostenlosen DBF-Viewer heruntergeladen und der zeigt den Inhalt an. Daher passt das schon und nun scheint es auch zu klappen.
Mal sehen, wie das mit dem Auslesen nun genau geht. Aber bisher sieht's gut aus.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: DBF-Datenbank einlesen

  Alt 17. Jul 2011, 10:23
Hm, bei einer anderen DBF-Datei erscheint beim Versuch, sie zu öffnen, folgender Fehler:
Zitat:
Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.
Was kann das nun wieder sein?
  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 21:51 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