Frage

Ich habe ein Problem mit dem Jet -Wurf -Fehler 3011, wenn ich versuche, eine Datei mit 2 "Erweiterungen" ("Dateiname.tst.csv") zu öffnen.

Laufzeitfehler '3011'

Die Microsoft Jet -Datenbankmotor konnte das Objekt "Dateiname.tst.csv" nicht finden. Stellen Sie sicher, dass das Objekt existiert und dass Sie seinen Namen und den Pfadnamen richtig buchstabieren.

Wo der Code so aussieht:

Dim db as Database, rs as Recordset
Set db = OpenDatabase("SELECT TOP 1 * FROM [" & fileName & "];")
Set rs = db.OpenRecordset("SELECT TOP 1 * FROM [" & fileName & "];")

Ich habe das Problem als die zweite Erweiterung (oder scheinbare Erweiterung) ".Tst" aufgespürt, aber ich bin mir nicht sicher, warum der Fehler auftritt und ich konnte keine Antwort über Google oder hier haben - aber hier - aber Ich denke, jemand könnte Einblicke in die Grenzen haben.

Dies verwendet DAO 3.6 in VB6.

War es hilfreich?

Lösung

Dies ist nicht genau die Situation, über die Sie sprechen, aber beim Lesen im Abschnitt der Ursache sehen die Informationen über einige Treiber, die lange Dateinamen nicht unterstützen, so aus, als würde dies zutreffen, da dies nicht in einem 8.3 -Format liegt.

http://social.technet.microsoft.com/search/en-us?query=3011&ac=8

Sie müssen also die Datei umbenennen oder eine andere Methode verwenden, um die Daten (z. B. die Verwendung eines StreamReaders) zu laden. Persönlich würde ich die Datei umbenennen. Es wäre viel einfacher.

Andere Tipps

Es ist ein bisschen Hackey, aber Sie könnten die Datei programmatisch umbenennen, bevor Sie sie für eine freundlichere Erweiterung öffnen. Behalten Sie einfach die alte Erweiterung herum, damit Sie sie wieder einstellen können, wenn Sie fertig sind.

Warum verwenden Sie nicht stattdessen den Short -Dateinamen? Es enthält nicht länger als eine Periode. Schauen Sie einfach in der CFileinfo -Klasse aus Dies Angebot von Karl E Petersons exzellenter Seite (es verfügt über eine Wrapper -Methode für die GetshortPathName API -Anruf).

Ich nehme an, der Band unterstützt möglicherweise keine Short -Dateinamen (es ist Optional).

Sie müssen entweder eine Schema.ini -Datei für Ihre Importdatei erstellen oder die Erweiterung zum HKEY_LOCAL_MACHINE Software Microsoft Jet 4.0 Engines Text Format -Registrierungsschlüssel hinzufügen. Es gibt eine detaillierte Erklärung bei http://msdn.microsoft.com/en-us/library/ms974559.aspx

Ich bin mir darüber nicht sicher, dass ich DAO nicht viel benutzt habe, seit es in VB6 veraltet wurde. Ich weiß, dass die Regeln von Jet zwischen dem OLE DB -Anbieter ODBC -Treiber und Dao sehr unterschiedlich sein können.

Haben Sie versucht, das "." Zeichen in diesen Dateinamen mit "#" Zeichen? Oder vielleicht nur der letzte? Nur in Ihrem SQL -Anweisungstext.

Meiner Meinung nach kann Ihre zweite Codezeile nichts zurückgeben!

Set db = OpenDatabase("SELECT TOP 1 * FROM [" & fileName & "];")

Sie können keine Datenbank mit einer Auswahlanweisung öffnen! Ihre Code -Shouls sehen aus wie

Set db = DBEngine.Workspaces(0).OpenDatabase(filenamne)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top