2014-02-03 1 views
0

Подключения к БД Access в порядке, но у меня есть следующий вопрос:Проблемы с текущей дос Дельми xe4 64bit провайдером лукаво не поддерживает интерфейс для индекса

текущий поставщик не поддерживает интерфейс для индекса

с помощью Дельх xe4 64bit

используется поставщик Microsoft Jet 4.0 OLE DB Provider

Любой человек может мне помочь .... ТИА

ответ

1

AFAIK Jet is not supported any more on 64 bit as direct OleDB provider.

См what MSDN states:

Там нет 64-разрядной версии базы данных Jet Engine, драйвер Jet OLEDB, Драйвера Jet ODBC или Jet DAO доступен. В 64-разрядных версиях Windows 32-разрядная версия Jet работает под подсистемой Windows WOW64. Встроенные 64-разрядные приложения не могут взаимодействовать с 32-разрядными драйверами Jet, работающими в WOW64.

Необходимо, чтобы use the ODBC - OleDB bridge to connect to your mdb database.

Вы должны лучше планируете использовать другой двигатель:

Вместо Microsoft Jet, Microsoft рекомендует использовать Microsoft SQL Server Express Edition или Microsoft SQL Server Compact Edition при разработке новых, не-Microsoft приложения Access, требующие реляционных данных магазин. Эти новые или конвертированные приложения Jet могут продолжать использовать Jet с намерением использовать Microsoft Office 2003 и более ранние файлы (.mdb и .xls) для хранения непервичных данных. Однако для этих приложений вы должны планировать переход с Jet на драйвер системы Office 2007. Вы можете загрузить драйвер системы Office 2007, который позволяет вам читать и записывать ранее существующие файлы в Office 2003 (.mdb и .xls) или в Office 2007 (* .accdb, * .xlsm, * .xlsx и * .xlsb).

Или SQLite3, который довольно хорош.

0

Я использую эту функцию для доступа Access MDB файлов через Jet/ACE OLE на обоих 64-битных и 32-бит:

FUNCTION AccessConnStr(CONST FileName : STRING) : STRING; 
    BEGIN 
    {$IFDEF CPUX64 } 
     Result:='Provider=Microsoft.ACE.OLEDB.12.0;Data source='+FileName 
    {$ELSE } 
     Result:='Provider=Microsoft.Jet.OLEDB.4.0.0;Data Source='+FileName 
    {$ENDIF } 
    END; 

Просто дайте имя файла для функции, и она будет возвращать строка соединения, необходимая для доступа к файлу. Это работает, по крайней мере, с файлами доступа MDB - не пробовал ничего другого ...