【发布时间】:2010-12-20 17:25:03
【问题描述】:
我有一个 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 驱动程序的工作方式与here 的帖子类似。列出的修复是安装 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 文件?
【问题讨论】:
-
是的,在我发帖之前已经访问了那个网站。问题是 connection.Open() 在 Windows 7 x64 下失败。 ODBC 版本在 Windows XP 下正常工作。
标签: .net vb.net dbf oledbconnection