У меня есть приложение VB.NET, которое позволяет мне просматривать файлы .DBF, которые приходят от некоторых наших клиентов. Затем приложение пытается выложить CSV из этого файла, который мы затем можем использовать в наших различных средах.
Это приложение работало под Windows XP 32 бит. Недавно наша компания обновила большинство из нас до Windows 7 x64, что привело к сбою этого приложения. Я проверил, что целевой сборкой для этого приложения является x86, а не «любой процессор», и перестроил приложение, но возникают те же проблемы.
Изначально использовались 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 Driver Manager] Драйвер не поддерживает эту функцию».
Я заметил, что драйверы для VFP не были установлены и что драйверы Access DBF не работали аналогично сообщению здесь . Перечисленное здесь исправление относится к установке VFPro SP2, однако у нас нет установок FoxPro для установки пакета обновления поверх. Затем я попытался установить драйвер OLEDB для VFP 9.0 и теперь использую 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 для открытия этих файлов .DBF в Windows 7 x64?