我有一个 VB.NET 应用程序,它可以让我预览来自我们的一些客户的 .DBF 文件。然后,该应用程序会尝试从该文件中生成 CSV,然后我们可以在各种环境中使用该 CSV。此应用程序在 Windows XP 32 位下运行。我们公司最近将我们大多数人升级到 Windows 7 x64,这导致此应用程序失败。我验证了此应用程序的目标构建是 x86 而不是“任何 CPU”,并重新构建了应用程序,但出现了同样的问题。
它最初使用System.Data.Odbc
和connection.ConnectionString = "Driver={Microsoft dBASE VFP Driver (*.dbf)};SourceType = DBF;SourceDB=" & dbfSourcePath & ";Exclusive=No; Collate=Machine;BACKGROUNDFETCH=NO;"
。故障的位置在connection.Open()
。给出的错误是:“ERROR [IM001] [Microsoft][ODBC Driver Manager] Driver does not support this function”。
我注意到没有安装 VFP 的驱动程序,并且 Access DBF 驱动程序的工作方式与此处的帖子类似。列出的修复是安装 VFPro SP2,但是,我们没有安装任何 FoxPro 来安装服务包。然后我尝试为 VFP 9.0 安装 OLEDB 驱动程序,现在正在使用System.Data.OleDb
,connection.ConnectionString = "Provider=VFPOLEDB.1;SourceDB=" & dbfSourcePath & ";"
但它现在告诉我该connection.Open()
行有此错误:“功能不可用”。
我完全不知道如何让这个应用程序在 Windows 7 x64 下工作。下面是代码的 2 个变体,为了便于阅读,删除了文件打开路径(我已经验证了路径和文件存在):
ODBC 版本:
Imports System.Data.Odbc
Dim strSelect As String
strSelect = "SELECT * FROM " & dbfSourceName
Dim connection As New Odbc.OdbcConnection
Dim adp As New Data.Odbc.OdbcDataAdapter
connection.ConnectionString = "Driver={Microsoft dBASE VFP Driver (*.dbf)};SourceType = DBF;SourceDB=" & dbfSourcePath & ";Exclusive=No; Collate=Machine;BACKGROUNDFETCH=NO;"
Dim command As New OdbcCommand(strSelect, connection)
connection.Open() ' Here is where it throws the error.
OLEDB版本:
Imports System.Data.OleDb
Dim strSelect As String
strSelect = "SELECT * FROM " & dbfSourceName
Dim connection As OleDbConnection = New OleDbConnection()
Dim adp As New Data.OleDb.OleDbDataAdapter
connection.ConnectionString = "Provider=VFPOLEDB.1;SourceDB=" & dbfSourcePath & ";"
Dim Command As New OleDbCommand(strSelect, connection)
connection.Open() 'Error occurs here.
如何使用 OLEDB 或 ODBC 连接在 Windows 7 x64 下打开这些 .DBF 文件?