Невозможно открыть файлы .DBF в Windows 7, которые работали под XP - PullRequest
2 голосов
/ 20 декабря 2010

У меня есть приложение 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?

1 Ответ

4 голосов
/ 20 декабря 2010

Вы пробовали несколько альтернативных строк подключения?Взгляните на www.connectionstrings.com / dbf-foxpro

connection.ConnectionString = _
  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
  dbfSourcePath & ";Extended Properties=dBASE IV;"

Также см. Примечание об использовании Jet for Access в 64-битных системах

Обновление: В качестве альтернативы использованию драйвера Jet вы можете получить прямой доступ к DBF, к счастью, формат файла относительно прост.Вот существующее решение Code Project, демонстрирующее этот прямой доступ.

http://www.codeproject.com/KB/bugs/LoadDBF.aspx

...