打开带有 2 个“扩展名”的文件时出现 Jet 错误 3011

Posted

技术标签:

【中文标题】打开带有 2 个“扩展名”的文件时出现 Jet 错误 3011【英文标题】:Jet error 3011 when opening a file with 2 "extensions" 【发布时间】:2010-11-28 20:08:31 【问题描述】:

当我尝试使用 Jet 打开带有 2 个“扩展名”(“filename.tst.csv”)的文件时,遇到了 Jet 抛出错误 3011 的问题。

运行时错误'3011'

Microsoft Jet 数据库引擎找不到对象“filename.tst.csv”。确保对象存在并且正确拼写其名称和路径名。

代码如下所示:

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

我发现问题是第二个扩展名(或明显的扩展名)“.tst”,但我不确定为什么会发生错误,我无法通过 Google 或通过在这里 - 但我认为有人可能对这些限制有所了解。

这是在 VB6 中使用 DAO 3.6。

【问题讨论】:

我上面的代码中有一个错误 - 我要到下周三才能上班,但我通过不同的解决方法解决了这个错误(只需打开文件上的记录集并使用第一行 -本质上是一样的)。当我重新开始工作时,我将发布实际答案并使用实际存在的内容修复上述代码。 【参考方案1】:

这有点老套,但您可以在将文件打开为更友好的扩展名之前以编程方式重命名文件。只需保留旧的扩展程序,以便在完成后将其重新设置。

【讨论】:

是的,如果我找不到更好的解决方案,这可能是我会采用的解决方案 - 它只是用于导入(复制到内部格式),所以我只需将其复制到临时文件夹使用更好的文件名。【参考方案2】:

这并不完全是您所说的情况,但在阅读本文时,在 CAUSE 部分中,有关某些不支持长文件名的驱动程序的信息看起来会适用,因为这不是 8.3 格式。

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

因此,您需要重命名文件或使用其他方法来加载数据(例如使用 StreamReader)。就个人而言,我会重命名文件。这会容易得多。

【讨论】:

技术上不是我正在寻找的解决方案,但似乎提供了失败的原因,或者至少是我能找到的关于失败原因的最佳提示。【参考方案3】:

为什么不直接使用短文件名呢?它不会包含多个句点。只需从 Karl E Peterson 的优秀网站提供的 this 中放入 CFileInfo 类(它有一个用于 GetShortPathName API 调用的包装方法)。

我想该卷可能不支持短文件名(它是optional)。

【讨论】:

【参考方案4】:

您需要为您的导入文件创建一个 schema.ini 文件,或者将扩展名添加到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\Format 注册表项,以便 ADO 知道如何解析该文件。 http://msdn.microsoft.com/en-us/library/ms974559.aspx有详细说明

【讨论】:

Schema.ini 已经创建 - 这不是问题。另外我没有使用 ADO,我使用的是 DAO。 抱歉,我错过了 DAO。我之所以加入是因为几年前我遇到了这个问题,我将一个带有奇怪扩展名的 CSV 文件导入到 VFP 表中。【参考方案5】:

我不确定这一点,因为自从它在 VB6 中过时以来,我并没有过多地使用 DAO。我知道 Jet 的规则在 OLE DB 提供程序、ODBC 驱动程序和 DAO 之间可能会有很大不同。

您是否尝试过替换“。”这些文件名中的字符由“#”字符组成?或者也许只是最后一个?就在您的 SQL 语句文本中。

【讨论】:

我也想过这个,但是当我尝试时它似乎不起作用:(【参考方案6】:

据我说,你的第二行代码不能返回任何东西!

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

您不能使用 SELECT 指令打开数据库!你的代码应该是这样的

Set db = DBEngine.Workspaces(0).OpenDatabase(filenamne)

【讨论】:

以上是关于打开带有 2 个“扩展名”的文件时出现 Jet 错误 3011的主要内容,如果未能解决你的问题,请参考以下文章

导入没有 .vue 扩展名的 *.vue 文件时出现以下错误?

打开文件时出现assertion failure 怎么办

尝试使用 .htaccess 文件删除 .php 扩展名时出现 403 禁止错误

Ubuntu文件写入内容时出现错误 E121:无法打开并写入文件解决方案

在 R 中打开 CSV 文件时出现错误消息

去除复制内容时出现的后缀和弹框