Access mdb и 64-битная Lazarus-программа
Модератор: Модераторы
Access mdb и 64-битная Lazarus-программа
В 32битной версии связка работает через
1.новый драйвер Microsoft Access Driver (*.mdb, *.accdb)
2.старый драйвер Microsoft Access Driver (*.mdb)
3.DSN файлы (хрень, исп. п1 или 2)
В 64битной не работает ни один способ.
Как открыть Access *.mdb из 64-битной Lazarus-программы? Работать с ним не планируется (для "переводчиков" на современные СУБД)
1.новый драйвер Microsoft Access Driver (*.mdb, *.accdb)
2.старый драйвер Microsoft Access Driver (*.mdb)
3.DSN файлы (хрень, исп. п1 или 2)
В 64битной не работает ни один способ.
Как открыть Access *.mdb из 64-битной Lazarus-программы? Работать с ним не планируется (для "переводчиков" на современные СУБД)
Последний раз редактировалось Aleh 27.03.2017 16:34:58, всего редактировалось 1 раз.
Ищите родной 64битный акксовский движок
как пример тут:
http://www.microsoft.com/downloads/en/d ... laylang=en
AccessDatabaseEngine_X64.exe
ODBC предоставляет движки в виде dll-ки, они битнозависимые.
как пример тут:
http://www.microsoft.com/downloads/en/d ... laylang=en
AccessDatabaseEngine_X64.exe
ODBC предоставляет движки в виде dll-ки, они битнозависимые.
AccessDatabaseEngine_X64.exe выдал
You cannnot install the 64-bit version of Microsoft Access Database
Engine 2010 because you currently have 32-bit Office products
installed. If you want to install 64-bit Microsoft Access Database
Engine 2010, you will first need to remove the 32-bit installation of
Office products. After uninstalling the following product(s), rerun
setup in order to install 64-bit version of Microsoft Access Database
Engine 2010:
Microsoft Office Professional Plus 2010, Microsoft Office -
профессиональный выпуск версии 2003
потом добавил
Installation ended prematurely because of an error.
буду dll-ки искать
You cannnot install the 64-bit version of Microsoft Access Database
Engine 2010 because you currently have 32-bit Office products
installed. If you want to install 64-bit Microsoft Access Database
Engine 2010, you will first need to remove the 32-bit installation of
Office products. After uninstalling the following product(s), rerun
setup in order to install 64-bit version of Microsoft Access Database
Engine 2010:
Microsoft Office Professional Plus 2010, Microsoft Office -
профессиональный выпуск версии 2003
потом добавил
Installation ended prematurely because of an error.
буду dll-ки искать
32-bit работает в 64-bit
распаковал
msiexec /a AceRedist.msi /qb TARGETDIR=d:1
там dll-к 39 шт.....
Добавлено спустя 7 минут 28 секунд:
Ага, вот так
Could not connect with connection string
"DRIVER={Microsoft Access Driver (*.mdb,
*.accdb)};DBQ=D:BasesBase.mdb;Locale
Identifier=1031;ExtendedAnsiSQL=l;CHARSET=ansi;".
ODBC error details: LastReturnCode: SQL_ERROR; Record
1: SqIState: IM002; NativeError: 0; Message:
[Microsoft][Диспетчер драйверов ODBC] Источник
данных не найден и не указан драйвер,
используемый по умолчанию;.
Нажмите 'ОК' чтобы игнорировать и подвергнуться
риску повреждения данных.
Нажмите 'Отмена' для закрытия программы.
Добавлено спустя 1 час 7 минут 25 секунд:
odbc32.dll вроде как нужна, но её среди 39 нет
Добавлено спустя 11 минут 9 секунд:
Нашел на компе odbc32.dll 64бит, подложил проге - не прокатило.
msiexec /a AceRedist.msi /qb TARGETDIR=d:1
там dll-к 39 шт.....
Добавлено спустя 7 минут 28 секунд:
mig-31 писал(а):32-bit работает в 64-bit
Ага, вот так
Could not connect with connection string
"DRIVER={Microsoft Access Driver (*.mdb,
*.accdb)};DBQ=D:BasesBase.mdb;Locale
Identifier=1031;ExtendedAnsiSQL=l;CHARSET=ansi;".
ODBC error details: LastReturnCode: SQL_ERROR; Record
1: SqIState: IM002; NativeError: 0; Message:
[Microsoft][Диспетчер драйверов ODBC] Источник
данных не найден и не указан драйвер,
используемый по умолчанию;.
Нажмите 'ОК' чтобы игнорировать и подвергнуться
риску повреждения данных.
Нажмите 'Отмена' для закрытия программы.
Добавлено спустя 1 час 7 минут 25 секунд:
odbc32.dll вроде как нужна, но её среди 39 нет
Добавлено спустя 11 минут 9 секунд:
Нашел на компе odbc32.dll 64бит, подложил проге - не прокатило.
https://support.microsoft.com/ru-ru/hel ... of-windows
поставте Microsoft Office 64бит
Добавлено спустя 10 минут 1 секунду:
похожая проблема:
https://habrahabr.ru/post/219415/
Добавлено спустя 12 минут 31 секунду:
Это нормально, даже в линухе так происходит. Dll-ки могут работать с другими dll-ками, а там просто найти конфликты во версиях.. это обычно при портированнии на иные системы.
Сначала идет поиск в памяти(файловый кэш), а вдруг уже dll-ka кем то подгружена.. далее по директории где exe-шник.. и дальше по переменным Path..
Есть проги которые могут показывать какие ресурсы подключены к процессу. Одна из таких "Process explorer", с помощью её я решал зависимости либл. Бывало так, что чужая либла требовала нового сервиспака.
поставте Microsoft Office 64бит
Добавлено спустя 10 минут 1 секунду:
похожая проблема:
https://habrahabr.ru/post/219415/
Добавлено спустя 12 минут 31 секунду:
Aleh писал(а):Нашел на компе odbc32.dll 64бит, подложил проге - не прокатило.
Это нормально, даже в линухе так происходит. Dll-ки могут работать с другими dll-ками, а там просто найти конфликты во версиях.. это обычно при портированнии на иные системы.
Сначала идет поиск в памяти(файловый кэш), а вдруг уже dll-ka кем то подгружена.. далее по директории где exe-шник.. и дальше по переменным Path..
Есть проги которые могут показывать какие ресурсы подключены к процессу. Одна из таких "Process explorer", с помощью её я решал зависимости либл. Бывало так, что чужая либла требовала нового сервиспака.
Легко сказать "портируете и все".
Бывает руководство, особенно если оно любит экономить копейки, которое сложно переубедить в обновлении чего то..
Я позавчера ходил в свою "службу трудоустройство", там видел кинескопные мониторы в терминалах по поиску работы.. сами терминалы сделаны из дерева, а управление ведется через прорезь сделанную лобзикам, где виднеется цифровой набор клавиатуры - для управления поиском.
Ну а сам софт - винда 98, терминальный удаленный доступ к серверу, где программа работает в текстовом 80х24 символов режиме, либо dbf либо фокспро.. возможно даже написана на паскале + парадокс...
- вы им предложите перейти на постгрес.
Бывает руководство, особенно если оно любит экономить копейки, которое сложно переубедить в обновлении чего то..
Я позавчера ходил в свою "службу трудоустройство", там видел кинескопные мониторы в терминалах по поиску работы.. сами терминалы сделаны из дерева, а управление ведется через прорезь сделанную лобзикам, где виднеется цифровой набор клавиатуры - для управления поиском.
Ну а сам софт - винда 98, терминальный удаленный доступ к серверу, где программа работает в текстовом 80х24 символов режиме, либо dbf либо фокспро.. возможно даже написана на паскале + парадокс...
- вы им предложите перейти на постгрес.
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
olegy123 писал(а):Легко сказать "портируете и все".
Рано или поздно это придется сделать. MS Jet не поддерживает базы больше 2 Гб, скорость работы в 2 раза меньше, чем у SQLite.
olegy123 писал(а):Я позавчера ходил в свою "службу трудоустройство", там видел кинескопные мониторы в терминалах по поиску работы..
Я примерно такие и перевожу на SQlite. Это неизбежно, поскольку железо 20-летней давности ремонту и замене уже не подлежит.
serbod писал(а):Рано или поздно это придется сделать.
Да, но учтите финансирование на переезд не всегда выделяют.
serbod писал(а):MS Jet не поддерживает базы больше 2 Гб, скорость работы в 2 раза меньше, чем у SQLite.
Сферы и возможности применения SQLite и Access разные. Я видел как на Access-е делали расчетные системы не программисты.
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
olegy123 писал(а):Да, но учтите финансирование на переезд не всегда выделяют.
На что вам нужно финансирование? Лазарь бесплатный, компоненты и базы данных бесплатные, Линукс или ReactOS тоже бесплатные. На железо деньги всегда дают. Спокойно делайте свою работу, без авралов и выебонов. А будут сверху погонять - улыбнитесь и попросите помочь делом. Протестировать программу, обновить документацию и данные в базе.
Добавлено спустя 11 минут 35 секунд:
olegy123 писал(а):Сферы и возможности применения SQLite и Access разные. Я видел как на Access-е делали расчетные системы не программисты.
Тема началась с использования базы данных MS Jet, которую часто называют Access. Хотя на самом деле MS Jet встроен в виндовс, а Access отдельный пакет в составе MS Office.
olegy123 писал(а):Сферы и возможности применения SQLite и Access разные. Я видел как на Access-е делали расчетные системы не программисты.
Вот они "золотые слова". База данных (русская!!!)+ Непревзойдённый построитель запросов + толковый генератор отчетов. Каждый компонент хорош собой, а в связке они, круче некуда. Я видел как лохи создавали запросы, в которых я не мог разобраться, и всё это работало.
но это так, к слову...
Может кто знает про нативные(без длл) компоненты или классы для чтения старых баз mdb, я когда-то про такое где-то слышал..
Установка AccessDatabaseEngine_x64.exe /passiveвсё равно сносит 32битную версию и вызовет другие проблемы, в которых заслуженно обвинят меня. Установка обоих версий-танцы с бубном, и как я понял из нерусского блога всё равно нужен реестровый "переключатель".
odbc32.dll в моём понимании врапер, который взаймодействует с другими длл для работы с конкретной БД(с некоторыми или всеми 37шт. для аксеса), и настроить вручную локальную систему доступа я не представляю как. Тупо свалить 37шт в каталог с прогой не прокатило.
olegy123 писал(а):Это нормально, даже в линухе так происходит. Dll-ки могут работать с другими dll-ками, а там просто найти конфликты во версиях.. это обычно при портированнии на иные системы.
Ну в линухе дела с битностью обстоят намного хуже(как я слышал). А в 64битной винде 32битная прога 32битные дллки грузит на ура. 64битная может и не загрузить 64битную длл (требуется ещё 64длл типа vcomp120.dll или msvcm90.dll в отличие от 32битной). Я даже напоролся на bzip2.dll, которая "наплевала" на битность, и грузилась в обе системы(привет от вирусомисателей).
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Aleh писал(а):Ну в линухе дела с битностью обстоят намного хуже(как я слышал).
ГЫ
ключевое - (как я слышал)
А по теме - лучший вариант уже предложили - отказать от этого Г и взять нормальную СУБД.
Ну в линухе дела с битностью обстоят намного хуже(как я слышал).
Вот именно что слышал. В Линух с битностью с самого начала все ок и 64-бит Линух появился намного раньше 64-бит ХП, которую никто толком не использовал.
Aleh писал(а):Как открыть Access *.mdb из 64-битной Lazarus-программы?
Дык как бы просто...
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
begin
//если ехе х-64 то эта строка
odbcconn.Driver:='Microsoft Access Driver (*.mdb, *.accdb)';
//если ехе х86 то эта
//odbcconn.Driver:='Microsoft Access Driver (*.mdb)';
odbcconn.Params.Add('DBQ=D:\scripts\new_cbdb.MDB');
odbcconn.Params.add('Uid=Admin');
odbcconn.Params.Add('Pwd=');
odbcconn.Params.add('ExtendedAnsiSQL=1');
odbcconn.Connected:=true;
end; Только что проверил в windows 10 x64 lazarus 1.6.4 x86-64
Если есть кириллица в тексте, то в базе она храниться в 1251 по умолчанию.
