Frage

Ich versuche, eine DBF-Datei abzufragen System.Data.Odbc.OdbcConnection verwenden. Es funktioniert richtig, wenn die Datei darin keinen Platz hat, aber ich bekomme die folgende Fehlermeldung „Fehler beim Öffnen der DBF-Datei: ERROR [42000] [Microsoft] [ODBC-dBase-Treiber] Syntaxfehler in FROM-Klausel“, wenn der Dateipfad oder Name hat einen Raum darin.

Ich verwende den folgenden Code ein:

= oConn neue System.Data.Odbc.OdbcConnection (); oConn.ConnectionString = "Driver = {Microsoft dBase-Treiber (* .dbf)}; Sourcetype = DBF; SourceDB = NA; Exclusive = Nein, Collate = Maschine; NULL = NO; deleted = NO; BACKGROUNDFETCH = NO";

oCmd.CommandText = "SELECT * FROM C: \ test 2 \ 12345678.dbf";

Der Befehl Text ist nicht hartcodiert. Ich schloss es nur auf diese Weise für Einfachheit. Die Anwendung ist die Installation ein Benutzer eine DBF-Datei zu wählen, und haben sie es angezeigt werden soll. Ich habe keine Kontrolle darüber, wo die Benutzer speichern die DBF-Dateien und würde lieber nicht haben, um sie daran erinnern, keine Leerzeichen im Dateinamen / Pfad zu setzen.

Wie entkommen ich den Raum, in dem Dateinamen / Pfad?

War es hilfreich?

Lösung

Wahrscheinliche es ist ein Problem im Zusammenhang mit dem „MS-DOS 8.3-Dateinamensformat“. Sie können die nächsten Links überprüfen:

Andere Tipps

Ich war in diesem Thema läuft auch. Das war mein # 1-Hit in Google, so dass ich nicht sehr hoffnungsvoll war. Allerdings konnten wir meinen Code zur Arbeit erhalten, indem das aktuelle Verzeichnis in das problematischen Verzeichnis wechseln und dann ohne den Pfad in dem Commandtext:

//Save the current directory
string currentDir = System.IO.Directory.GetCurrentDirectory();

//Select the path that we need to use
System.IO.Directory.SetCurrentDirectory("C:\\test 2\\");

//Now the path isn't required:
oCmd.CommandText = @"SELECT * FROM 12345678.dbf";

//Restore the old directory
System.IO.Directory.SetCurrentDirectory(currentDir);

Sie sind immer noch begrenzt in dem, was der Name der Datei sein (keine Leerzeichen und <= 8 char glaube ich), aber das ist etwas, was ich arbeiten kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top