【问题标题】:Access 2013 Linked Tables to DBF files访问 2013 链接表到 DBF 文件
【发布时间】:2014-08-11 21:00:45
【问题描述】:

我已经在这里和谷歌搜索过,到目前为止还没有解决方案。

问题是 Access 2013 不再想要连接到 DBF。

每个月,我都会得到 33 个 DBF 文件(每个都有一个 CDX 文件),我必须将它们导入 MySQL。其前端是 Access 2013。
我已经构建了一些执行类似功能的其他应用程序,因此我将针对这些新数据调整其中一个。

我不知道原始数据的实际来源,但我的理解是dbase和visual foxpro使用相同的格式。

该应用程序旨在链接到数据文件,我将在其中运行查询(可能还包括 VBA)以将数据移植到链接到 MySQL 的表中。所有表都使用 VBA 和 DSN-Less 连接进行链接。

我可以使用 VFPOleDb 或其他东西,只要它能满足我的需求。我实际上已经安装了这个,但无法弄清楚我需要的代码。

我正在运行 64 位 Access 和 Windows 7。

谢谢。

【问题讨论】:

标签: odbc oledb ms-access-2013 dbf visual-foxpro


【解决方案1】:

您能否启动一个 VB 程序将文件转换为 xlsx。我的一个朋友也遇到了同样的情况,我们终于在一个论坛上找到了这个(不记得是哪一个,我只是把这段代码复制到我发给她的一个 word doc 中。)

Function dbf2xlsx(dbffile)
Dim xlapp, objWorkbook As Object
Dim SaveFile As String

SaveFile = Left(dbffile, Len(dbffile) - 3) & "xlsx"

Set xlapp = CreateObject("EXCEL.application")
Set objWorkbook = xlapp.workbooks.Open(dbffile)
xlapp.Application.Visible = False
xlapp.Application.DisplayAlerts = False
xlapp.ActiveWorkbook.SaveAs SaveFile
xlapp.ActiveWorkbook.Close

End Function

现在她只有 1 个文件要导入,所以我不知道这可能有多有效。

【讨论】:

    【解决方案2】:

    我最终使用了 Intelligent Converters 的一个名为 DBF to MySQL 的外部程序。除了它不转换索引这一事实外,它做得很好。它有一个命令行界面,所以我使用 Access 来提供选项,构建命令字符串,然后执行它。

    回想起来,我想我宁愿阅读原始数据文件并以这种方式提取数据。

    【讨论】:

      【解决方案3】:

      对于遇到此问题的任何人,您可以使用类似于下面的代码链接到 DBF 表(请注意,应该包括错误检查等)并且显然将硬编码名称更改为所需的任何内容

      Dim tdf As TableDef
      Set tdf = CurrentDb.CreateTableDef("NameYouWant")
      tdf.Connect = "Dbase III;Database=c:\test\dbase\"
      tdf.SourceTableName = "example.dbf"
      CurrentDb.TableDefs.Append tdf
      

      【讨论】:

        【解决方案4】:

        使用访问作为前端似乎不是一个好主意。

        无论如何,如果您想将 VFP 数据导入 MySQL,那么可以通过多种方式完成。不幸的是,具有 64 位的 VBA 不是其中之一(可以使用来自 Sybase ADS 的驱动程序,但恕我直言不值得努力)。

        您可以使用 VFP 本身或 C#,或任何其他语言,如 Go、Python ...

        使用 VFP 本身,您将创建一个 cursorAdapter 或远程视图或 SPT 游标到您的 MySQL,然后将数据从 VFP 表推送到该游标并提交。这是一个简单的过程。

        使用 C#,您可以同时打开与 MySQL 和 VFP 的连接(使用 VFPOLEDB),然后将数据从一个泵送到另一个(与其他语言相同)。

        AFAIK,access 没有直接从 OLEDB 源获取数据的选项(Excel 有),如果你的办公室是 32 位的,你可以使用它。

        (如果是MS SQL Server,可以在.Net中使用BulkCopy类)

        【讨论】:

          【解决方案5】:

          Access 2013 不再支持 DBF 文件。它在尝试打开链接的 DBF 表时显示错误 Could not find installable ISAM。但是您可以安装支持 DBF 文件的 Access 2010 组件并在 Access 2013 中继续使用它们。

          首先,下载并安装Microsoft Access Database Engine 2010 Redistributable(免费,包含32位和64位版本)。这将安装(除其他外)所需的 ACEXBE.DLL 库以直接访问 dBase 文件。但这还不够,因为它安装在 OFFICE14 (2010) 下,而不是 OFFICE15 (2013)。

          现在您需要将 4 个注册表项从 Office 14 复制到 Office 15。此注册表补丁将为您完成此任务,但强烈建议您了解它的作用。 这个是 64 位 Office 的

          Windows Registry Editor Version 5.00
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Xbase]
          "win32"="C:\\PROGRA~1\\COMMON~1\\MICROS~1\\OFFICE14\\ACEXBE.DLL"
          "DbcsStr"=hex:01
          "Mark"=dword:00000000
          "Date"="MDY"
          "Exact"=hex:00
          "Deleted"=hex:01
          "Century"=hex:00
          "CollatingSequence"="Ascii"
          "DataCodePage"="OEM"
          "NetworkAccess"=hex:01
          "PageTimeout"=dword:00000258
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\ISAM Formats\dBASE III]
          "Engine"="Xbase"
          "ExportFilter"="dBASE III (*.dbf)"
          "ImportFilter"="dBASE III (*.dbf)"
          "CanLink"=hex:01
          "OneTablePerFile"=hex:01
          "IsamType"=dword:00000000
          "IndexDialog"=hex:00
          "CreateDBOnExport"=hex:00
          "SupportsLongNames"=hex:00
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\ISAM Formats\dBASE IV]
          "Engine"="Xbase"
          "ExportFilter"="dBASE IV (*.dbf)"
          "ImportFilter"="dBASE IV (*.dbf)"
          "CanLink"=hex:01
          "OneTablePerFile"=hex:01
          "IsamType"=dword:00000000
          "IndexDialog"=hex:00
          "CreateDBOnExport"=hex:00
          "SupportsLongNames"=hex:00
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\ISAM Formats\dBASE 5.0]
          "Engine"="Xbase"
          "ExportFilter"="dBASE 5 (*.dbf)"
          "ImportFilter"="dBASE 5 (*.dbf)"
          "CanLink"=hex:01
          "OneTablePerFile"=hex:01
          "IsamType"=dword:00000000
          "IndexDialog"=hex:00
          "CreateDBOnExport"=hex:00
          "SupportsLongNames"=hex:00
          

          对于在 64 位 Windows 上运行的 32 位 Office 2013,情况略有不同:

          Windows Registry Editor Version 5.00
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Xbase]
          "win32"="C:\\PROGRA~2\\COMMON~1\\MICROS~1\\OFFICE14\\ACEXBE.DLL"
          "DbcsStr"=hex:01
          "Mark"=dword:00000000
          "Date"="MDY"
          "Exact"=hex:00
          "Deleted"=hex:01
          "Century"=hex:00
          "CollatingSequence"="Ascii"
          "DataCodePage"="OEM"
          "NetworkAccess"=hex:01
          "PageTimeout"=dword:00000258
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\ISAM Formats\dBASE III]
          "Engine"="Xbase"
          "ExportFilter"="dBASE III (*.dbf)"
          "ImportFilter"="dBASE III (*.dbf)"
          "CanLink"=hex:01
          "OneTablePerFile"=hex:01
          "IsamType"=dword:00000000
          "IndexDialog"=hex:00
          "CreateDBOnExport"=hex:00
          "SupportsLongNames"=hex:00
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\ISAM Formats\dBASE IV]
          "Engine"="Xbase"
          "ExportFilter"="dBASE IV (*.dbf)"
          "ImportFilter"="dBASE IV (*.dbf)"
          "CanLink"=hex:01
          "OneTablePerFile"=hex:01
          "IsamType"=dword:00000000
          "IndexDialog"=hex:00
          "CreateDBOnExport"=hex:00
          "SupportsLongNames"=hex:00
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\ISAM Formats\dBASE 5.0]
          "Engine"="Xbase"
          "ExportFilter"="dBASE 5 (*.dbf)"
          "ImportFilter"="dBASE 5 (*.dbf)"
          "CanLink"=hex:01
          "OneTablePerFile"=hex:01
          "IsamType"=dword:00000000
          "IndexDialog"=hex:00
          "CreateDBOnExport"=hex:00
          "SupportsLongNames"=hex:00
          

          请注意,由于 8dot3 名称分配,win32 路径在您的系统上可能会有所不同。

          在此注册表补丁之后,您的带有链接 DBF 文件的数据库将像以前的 Access 版本一样工作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-04-05
            • 2012-01-21
            相关资源
            最近更新 更多