Access mdb и 64-битная Lazarus-программа

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Access mdb и 64-битная Lazarus-программа

Сообщение Aleh » 24.03.2017 12:45:05

В 32битной версии связка работает через
1.новый драйвер Microsoft Access Driver (*.mdb, *.accdb)
2.старый драйвер Microsoft Access Driver (*.mdb)
3.DSN файлы (хрень, исп. п1 или 2)
В 64битной не работает ни один способ.

Как открыть Access *.mdb из 64-битной Lazarus-программы? Работать с ним не планируется (для "переводчиков" на современные СУБД)
Последний раз редактировалось Aleh 27.03.2017 17:34:58, всего редактировалось 1 раз.
Aleh
новенький
 
Сообщения: 43
Зарегистрирован: 08.08.2016 12:27:45

Re: Access mdb и 64-битная Lazarus-программа

Сообщение olegy123 » 24.03.2017 13:24:40

Ищите родной 64битный акксовский движок
как пример тут:
http://www.microsoft.com/downloads/en/d ... laylang=en
AccessDatabaseEngine_X64.exe

ODBC предоставляет движки в виде dll-ки, они битнозависимые.
olegy123
энтузиаст
 
Сообщения: 521
Зарегистрирован: 25.02.2016 12:10:20

Re: Access mdb и 64-битная Lazarus-программа

Сообщение Aleh » 24.03.2017 14:16:29

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-ки искать
Aleh
новенький
 
Сообщения: 43
Зарегистрирован: 08.08.2016 12:27:45

Re: Access mdb и 64-битная Lazarus-программа

Сообщение mig-31 » 24.03.2017 14:37:22

32-bit работает в 64-bit
mig-31
постоялец
 
Сообщения: 166
Зарегистрирован: 14.07.2011 13:46:48

Re: Access mdb и 64-битная Lazarus-программа

Сообщение Aleh » 24.03.2017 14:38:34

распаковал
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бит, подложил проге - не прокатило.
Aleh
новенький
 
Сообщения: 43
Зарегистрирован: 08.08.2016 12:27:45

Re: Access mdb и 64-битная Lazarus-программа

Сообщение olegy123 » 25.03.2017 12:21:50

https://support.microsoft.com/ru-ru/hel ... of-windows

поставте Microsoft Office 64бит

Добавлено спустя 10 минут 1 секунду:
похожая проблема:
https://habrahabr.ru/post/219415/

Добавлено спустя 12 минут 31 секунду:
Aleh писал(а):Нашел на компе odbc32.dll 64бит, подложил проге - не прокатило.

Это нормально, даже в линухе так происходит. Dll-ки могут работать с другими dll-ками, а там просто найти конфликты во версиях.. это обычно при портированнии на иные системы.
Сначала идет поиск в памяти(файловый кэш), а вдруг уже dll-ka кем то подгружена.. далее по директории где exe-шник.. и дальше по переменным Path..
Есть проги которые могут показывать какие ресурсы подключены к процессу. Одна из таких "Process explorer", с помощью её я решал зависимости либл. Бывало так, что чужая либла требовала нового сервиспака.
olegy123
энтузиаст
 
Сообщения: 521
Зарегистрирован: 25.02.2016 12:10:20

Re: Access mdb и 64-битная Lazarus-программа

Сообщение *Rik* » 25.03.2017 19:25:39

Пора отправить хлам от MS на пенсию, портироуйте все на кроссплатформенные FireBird или Postgres и используйте компоненты прямого доступа.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 348
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Access mdb и 64-битная Lazarus-программа

Сообщение olegy123 » 26.03.2017 07:58:48

Легко сказать "портируете и все".
Бывает руководство, особенно если оно любит экономить копейки, которое сложно переубедить в обновлении чего то..

Я позавчера ходил в свою "службу трудоустройство", там видел кинескопные мониторы в терминалах по поиску работы.. сами терминалы сделаны из дерева, а управление ведется через прорезь сделанную лобзикам, где виднеется цифровой набор клавиатуры - для управления поиском.
Ну а сам софт - винда 98, терминальный удаленный доступ к серверу, где программа работает в текстовом 80х24 символов режиме, либо dbf либо фокспро.. возможно даже написана на паскале + парадокс...
- вы им предложите перейти на постгрес.
olegy123
энтузиаст
 
Сообщения: 521
Зарегистрирован: 25.02.2016 12:10:20

Re: Access mdb и 64-битная Lazarus-программа

Сообщение serbod » 26.03.2017 23:53:09

olegy123 писал(а):Легко сказать "портируете и все".


Рано или поздно это придется сделать. MS Jet не поддерживает базы больше 2 Гб, скорость работы в 2 раза меньше, чем у SQLite.

olegy123 писал(а):Я позавчера ходил в свою "службу трудоустройство", там видел кинескопные мониторы в терминалах по поиску работы..


Я примерно такие и перевожу на SQlite. Это неизбежно, поскольку железо 20-летней давности ремонту и замене уже не подлежит.
Аватара пользователя
serbod
постоялец
 
Сообщения: 125
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Access mdb и 64-битная Lazarus-программа

Сообщение olegy123 » 27.03.2017 00:29:53

serbod писал(а):Рано или поздно это придется сделать.

Да, но учтите финансирование на переезд не всегда выделяют.

serbod писал(а):MS Jet не поддерживает базы больше 2 Гб, скорость работы в 2 раза меньше, чем у SQLite.

Сферы и возможности применения SQLite и Access разные. Я видел как на Access-е делали расчетные системы не программисты.
olegy123
энтузиаст
 
Сообщения: 521
Зарегистрирован: 25.02.2016 12:10:20

Re: Access mdb и 64-битная Lazarus-программа

Сообщение serbod » 27.03.2017 10:45:13

olegy123 писал(а):Да, но учтите финансирование на переезд не всегда выделяют.

На что вам нужно финансирование? Лазарь бесплатный, компоненты и базы данных бесплатные, Линукс или ReactOS тоже бесплатные. На железо деньги всегда дают. Спокойно делайте свою работу, без авралов и выебонов. А будут сверху погонять - улыбнитесь и попросите помочь делом. Протестировать программу, обновить документацию и данные в базе.

Добавлено спустя 11 минут 35 секунд:
olegy123 писал(а):Сферы и возможности применения SQLite и Access разные. Я видел как на Access-е делали расчетные системы не программисты.

Тема началась с использования базы данных MS Jet, которую часто называют Access. Хотя на самом деле MS Jet встроен в виндовс, а Access отдельный пакет в составе MS Office.
Аватара пользователя
serbod
постоялец
 
Сообщения: 125
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Access mdb и 64-битная Lazarus-программа

Сообщение Aleh » 27.03.2017 11:15:35

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, которая "наплевала" на битность, и грузилась в обе системы(привет от вирусомисателей).
Aleh
новенький
 
Сообщения: 43
Зарегистрирован: 08.08.2016 12:27:45

Re: Access mdb и 64-битная Lazarus-программа

Сообщение alexs » 27.03.2017 12:07:44

Aleh писал(а):Ну в линухе дела с битностью обстоят намного хуже(как я слышал).

ГЫ
ключевое - (как я слышал)
А по теме - лучший вариант уже предложили - отказать от этого Г и взять нормальную СУБД.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3457
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Access mdb и 64-битная Lazarus-программа

Сообщение mig-31 » 27.03.2017 14:04:07

Ну в линухе дела с битностью обстоят намного хуже(как я слышал).

Вот именно что слышал. В Линух с битностью с самого начала все ок и 64-бит Линух появился намного раньше 64-бит ХП, которую никто толком не использовал.
mig-31
постоялец
 
Сообщения: 166
Зарегистрирован: 14.07.2011 13:46:48

Re: Access mdb и 64-битная Lazarus-программа

Сообщение gvido » 27.03.2017 15:16:37

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 по умолчанию.
gvido
постоялец
 
Сообщения: 161
Зарегистрирован: 28.03.2012 11:35:31

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 6

Рейтинг@Mail.ru