访问2013链接表到DBF文件

时间:2014-08-11 21:00:45

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

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

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

每个月,我将获得33个DBF文件(每个文件都有一个CDX文件),我必须将其导入MySQL。这方面的前端是Access 2013.
我已经构建了一些其他类似功能的应用程序,所以我只是调整其中一个来获取这些新数据。

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

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

如果它能得到我想要的东西,我可以使用VFPOleDb或其他东西。我实际上已经安装了这个,但无法找出代码来做我需要的。

我正在运行64位Access& Windows 7.

感谢。

5 个答案:

答案 0 :(得分:0)

您可以启动VB程序将文件转换为xlsx。我的一个朋友有同样的情况,我们终于在一个论坛上找到了这个(不记得哪一个,我把这个代码复制到我发给她的文字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 :(得分:0)

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

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

答案 2 :(得分:0)

对于有此问题的任何人,您可以使用类似于下面的代码链接到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

答案 3 :(得分:0)

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

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

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

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

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

AFAIK,访问没有选择直接从OLEDB源获取数据的方法(Excel则是这样做的),如果您的办公室是32位的,则可以使用它。

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

答案 4 :(得分:0)

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 版本中一样工作。