代码之家  ›  专栏  ›  技术社区  ›  Corazu

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

  •  1
  • Corazu  · 技术社区  · 17 年前

    运行时错误“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”的问题,但我不确定为什么会出现错误,我还无法通过谷歌或通过这里找到答案,但我想可能有人对这些限制有一些见解。

    6 回复  |  直到 6 年前
        1
  •  2
  •   Ryan Michela    17 年前

        2
  •  1
  •   David    17 年前

    这并不完全是您所说的情况,但是在阅读本文的原因部分,关于一些不支持长文件名的驱动程序的信息似乎适用,因为这不是8.3格式。

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

        3
  •  1
  •   MarkJ    17 年前

    this 来自Karl E Peterson的优秀站点的产品(它为 GetShortPathName API调用)。

    optional ).

        4
  •  0
  •   jac    17 年前

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

        5
  •  0
  •   Bob77    17 年前

    我不确定这一点,因为自从DAO在VB6中过时后,我就很少使用它了。我知道Jet的规则在OLEDB提供程序、ODBC驱动程序和DAO之间可能非常不同。

    您是否尝试过将这些文件名中的“.”字符替换为“#”字符?还是最后一个?就在SQL语句文本中。

        6
  •  0
  •   Philippe Grondier    17 年前

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

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

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

    Set db = DBEngine.Workspaces(0).OpenDatabase(filenamne)
    
    推荐文章