Как читать из файла DBF в 64-битной ОС с помощью VB.Net?
Как читать из файла DBF в 64-битной ОС с помощью VB.Net?
Ответы (3)
Во-первых, вам потребуются распространяемые 64-разрядные файлы доступа, доступные по адресу: ="nofollow">http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en
Затем вы можете настроить источник данных ODBC в панели управления, средствах администрирования, источниках данных (ODBC).
Затем я смог сделать это на С# со следующим: это должно быть похоже на VB.NET:
var connectionString = "Driver={Microsoft dBASE Driver (*.dbf)};" +
"Driverid=277;" +
@"Dbq=C:\temp\";
var query = "SELECT * FROM UPDATED" //file is "updated.dbf"
using (var oConn = new OdbcConnection { ConnectionString = connectionString })
{
try
{
oConn.Open();
var oCmd = oConn.CreateCommand();
oCmd.CommandText = Query;
var dr = oCmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
// get your data from your dbf!
}
}
}
finally
{
oConn.Close();
}
}
Вам нужно скомпилировать вашу программу как 32-битную; он по-прежнему будет работать нормально на 64-битной ОС. Измените целевую платформу на «x86» вместо «Любой процессор» или «x64». Затем вы можете использовать поставщик Ole Db Visual FoxPro для доступа к файлу dbf.
Вместо Microsoft.Jet.OLEDB... вы должны использовать Microsoft.ACE.OLEDB... в строке подключения в Win7. Дополнительную информацию можно получить на сайте www.connectionstrings.com в разделе accdb. Вы можете подключиться к файлу DBF как к таблице и запросить данные/схему.
Если ваша Win7 64-битная, а MS Office установлен 32-битный (Taskmanager winword.exe * 32), драйверы ACE будут установлены в 32-битном режиме, и, следовательно, ваша программа/исходный код не будет подключаться к файлу DBF.
Как найти.
Откройте 32-битный эмулятор ODBC в папке C:\windows\sysWoW64\odbcad32.exe и перейдите на вкладку "Драйверы". Вы должны увидеть множество драйверов для подключения, в которых вы найдете провайдера ACE.
Откройте 64-битный администратор ODBC в C:\windows\system32\odbcad32.exe и перейдите на вкладку «Драйверы». Вы должны увидеть только драйвер «SQL server» или несколько драйверов, специфичных для 64-битной версии, но не драйвер ACE.
Решение
- Скомпилируйте текущую программу в режиме x86, чтобы использовать 32-битные драйверы эмулятора.
- Другое решение — выяснить, можете ли вы удалить 32-разрядную версию MS Office и получить 64-разрядную версию. Это решит все проблемы автоматически.
Удачи
Венкат