我有一个VB.NET应用程序,它可以让我预览来自某些客户端的.DBF文件。应用程序然后尝试从这个文件中吐出一个CSV文件,然后我们可以在我们的各种环境中使用它。 此应用程序在Windows XP 32位下工作。我们公司最近将大多数人升级到Windows 7 x64,导致此应用程序失败。我验证了此应用程序的目标版本是x86而不是“任何CPU”并重新构建了应用程序,但出现了相同的问题。无法在Windows 7中打开.DBF文件,曾在XP下工作
它最初用于System.Data.Odbc
和connection.ConnectionString = "Driver={Microsoft dBASE VFP Driver (*.dbf)};SourceType = DBF;SourceDB=" & dbfSourcePath & ";Exclusive=No; Collate=Machine;BACKGROUNDFETCH=NO;"
。 失败的位置在connection.Open()
。给出的错误是:“错误[IM001] [Microsoft] [ODBC驱动程序管理器]驱动程序不支持此功能”。
我注意到VFP的驱动程序没有安装,并且Access DBF驱动程序不能像here那样工作。列出的修复程序将安装VFPro SP2,但是,我们没有任何安装Service Pack的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.
如何在Windows 7 x64下使用OLEDB或ODBC连接打开这些.DBF文件?
检查:http://connectionstrings.com/dbf-foxpro – 2010-12-20 18:26:49
是的,去了该网站之前,我张贴在这里。问题是connection.Open()在Windows 7 x64下失败。 ODBC版本在Windows XP下正常工作。 – wergeld 2010-12-20 18:29:31