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

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

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

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

Сообщение olegy123 » 27.03.2017 15:39:31

mig-31 писал(а):Вот именно что слышал. В Линух с битностью с самого начала все ок и 64-бит Линух появился намного раньше 64-бит ХП, которую никто толком не использовал.

Давайте так что с битностью у процессоров все нормально.. а вот с либлами... в линухе не все так просто. Там даже есть репозитории: стабильные, тестируемые и экспериментальные.. и не зря..
как правило в экспериментальном - ставишь прогу, она тянет лилбы.. и полсистемы не работают.. а то ядро отпринтила регистры и стэк на экран в а HOLD режим вошло..
Только к стабильной версии утюжат, разруливают конфликты.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение Aleh » 27.03.2017 16:12:05

gvido
Дык как бы тоже самое...
У меня программно можно "старый" и "новый" (какой то из них MS Jet, как правильно заметил serbod) драйвер переключать.
Лаз в1.4.4.
А на счет вин10, пойду по конторе поищу и попробую.
А у Вас в 32битах тоже работает? Если нет, то у Вас, в общем, стоит AccessDatabaseEngine_X64.exe

у меня ещё есть мысль - есть ли где утиль автоконвертации в SQlite (Русские названия таблиц и полей?)? Базы там максимут гиг, ну подождет юзер минуту, другую.
Aleh
новенький
 
Сообщения: 53
Зарегистрирован: 08.08.2016 12:27:45

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

Сообщение gvido » 27.03.2017 16:23:20

Aleh писал(а):gvido
Дык как бы тоже самое...
У меня программно можно "старый" и "новый" (какой то из них MS Jet, как правильно заметил serbod) драйвер переключать.
Лаз в1.4.4.
А на счет вин10, пойду по конторе поищу и попробую.
А у Вас в 32битах тоже работает? Если нет, то у Вас, в общем, стоит AccessDatabaseEngine_X64.exe

у меня ещё есть мысль - есть ли где утиль автоконвертации в SQlite (Русские названия таблиц и полей?)? Базы там максимут гиг, ну подождет юзер минуту, другую.


В x64 виндах по умолчанию 32 ный драйвер этот - 'Microsoft Access Driver (*.mdb)'. Поэтому если не ставить драйвер пак ODBC, то приложение копилим как 32 битное и строку подключения берем дефолтовую.
Если ставим пак то можно использовать и ту строку и длинную. Про кодировку строк не забываем.
Я несколько месяцев назад накидывал тестовый проект для попробовать - все сработало. сейчас перепроверял просто менял строку подключения и в свойствах проекта целевую платформу.

Добавлено спустя 7 минут 3 секунды:
На счет-
Aleh писал(а):У меня программно можно "старый" и "новый"

Нужно вам глянуть, что программно понимается под этим старым и новым. Какую строку подключения возвращает.
Сам ODBCad32 я не настраивал. Не нравится мне это.
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение Снег Север » 27.03.2017 16:38:15

gvido писал(а):Если есть кириллица в тексте, то в базе она храниться в 1251 по умолчанию.
Кто вам такое сказал? Я уже лет десять не встречал баз Access, которые не были бы юникодовскими.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3033
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение Aleh » 27.03.2017 16:57:36

В общем так:
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
begin
//переименовал odbcconn(есть такой модуль) в odbcconn123
  //если ехе х-64 то эта строка
  odbcconn123.Driver:='Microsoft Access Driver (*.mdb, *.accdb)'; //новый драйвер
//если ехе х86 то эта
//odbcconn123.Driver:='Microsoft Access Driver (*.mdb)';//старый драйвер
  odbcconn123.Params.Add('DBQ=k:111Degurstvo.mdb');
  odbcconn123.Params.add('Uid=Admin');
  odbcconn123.Params.Add('Pwd=');
  odbcconn123.Params.add('ExtendedAnsiSQL=1');
  odbcconn123.Connected:=true;//тут ошибка!!!!!

end;

в 32битке работают оба, в 64битке не работает ни один :cry:

Добавлено спустя 1 минуту 8 секунд:
В конторе был один вынь10, да и тот снесли :cry:

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

Посмотрел, не ослышался. Ссылку в плечи http://ru.stackoverflow.com/questions/613851/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0-%D0%BF%D1%80%D0%B8-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B5-32-bit-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BD%D0%B0-64-bit-ubuntu
Для непонятливых: отказаться от Г можно, только сначала надо не Г сделать и показать руководству, для рассмотрения, утверждения поэтапного перехода на не Г. А я пока в начале топчусь, Г прочитать не могу. Так понятно :(

Добавлено спустя 5 минут 23 секунды:
Ну не совсем, чтобы в начале, но с Г ещё года 2 жить.
Aleh
новенький
 
Сообщения: 53
Зарегистрирован: 08.08.2016 12:27:45

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

Сообщение gvido » 27.03.2017 18:09:24

Снег Север писал(а):Кто вам такое сказал? Я уже лет десять не встречал баз Access, которые не были бы юникодовскими.

базы старого формата, то есть mdb, по крайней мере те, которые я создавал в этом формате, все в 1251. Указать кодировку нет возможности. Но никто не запрещает писать туда текст в UTF8. Я пробовал - пишется. Возможно я не точно сформулировал мысль. Текстовые поля принимают текст в любой кодировке. Принудительной перекодировки нет. Что пошлем, так и запишется. Чаще всего приходится с базой уже имеющей некоторое заполнение. И оно, по крайней мере, в тех mdb, что я встречал - в 1251.


Aleh писал(а):в 32битке работают оба, в 64битке не работает ни один

Добавлено спустя 1 минуту 8 секунд:
В конторе был один вынь10, да и тот снесли

У меня в конторе все 64 и 7, и моя 10.
Оба работают, если на машине установлен Офис. если его нет, то будет работать короткая строка для файлов баз ассес старого формата. Если не ошибаюсь формата 97-2003.
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение Aleh » 27.03.2017 18:17:31

Кириллица в тексте там храниться в 1251 - да, но на коннект к базе это не влияет

Добавлено спустя 6 минут 54 секунды:
Aleh писал(а):Оба работают, если на машине установлен Офис. если его нет, то будет работать короткая строка для файлов баз ассес старого формата. Если не ошибаюсь формата 97-2003.

Мил человек, скомпильте ту короткую прогу, что Вы мне дали, в 64 битной и 32битной версии и проверьте обе на предмет подключения. Если обе работают, то пришлите мне пожалуйста 64битную. (Может в лазаре дело....)
Aleh
новенький
 
Сообщения: 53
Зарегистрирован: 08.08.2016 12:27:45

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

Сообщение gvido » 28.03.2017 10:21:13

Aleh писал(а):Мил человек, скомпильте ту короткую прогу, что Вы мне дали, в 64 битной и 32битной версии и проверьте обе на предмет подключения. Если обе работают, то пришлите мне пожалуйста 64битную. (Может в лазаре дело....)

Чего-то я с утра торможу...
Вам прислать 64-битный ехе который открывает mdb с использоваением 64 битного odbc дравера?
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение Aleh » 28.03.2017 10:33:01

Установил AccessDatabaseEngine_X64.exe /passive, последовала "грубая" перезагрузка, но всё стало. У 32битной проги всё работает, у 64битной изменилась выдаваемая ошибка(ругается на эскюльхуки). Аргис базы аксеса открывает нормально (с одибиси он так шустро не смог их читать), а вот сам аксес отказался запускаться даже пустым. В общем AccessDatabaseEngine_X64.exe не сносит 32битные драйвера. Удаляется это щасте стандартно, через панель управления, даже без перезагрузки.
Теперь о странностях odbc32.dll ===(требует) ACEODBC.DLL===MSO.DLL===msidcrl40.dll. Именно её на компе нигде не было, а скачанная из инета, размером 15к потребовала кучку-6шт длл типа api-ms-win-core-processthreads-l1-1-0.dll, api-ms-win-core-errorhandling-l1-1-0.dll, api-ms-win-core-rtlsupport-l1-1-0.dll и тд., большинства которых на компе тоже не было.
В общем творческий тупик....

Добавлено спустя 2 минуты 27 секунд:
gvido писал(а):Вам прислать 64-битный ехе который открывает mdb с использоваением 64 битного odbc дравера?

Даааааа
Aleh
новенький
 
Сообщения: 53
Зарегистрирован: 08.08.2016 12:27:45

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

Сообщение olegy123 » 28.03.2017 10:47:36

gvido писал(а):Но никто не запрещает писать туда текст в UTF8. Я пробовал - пишется.

Не запрещает 1251 - это 1 байтный формат символа, условно для системы из какой таблицы сопоставлять код символа и графический отображение.. Правда при UTF8 - сокращается размер примерно в двое..

Добавлено спустя 2 минуты 56 секунд:
Aleh писал(а): ===(требует) ACEODBC.DLL===MSO.DLL===msidcrl40.dll. Именно её на компе нигде не было,

скорее они сидят в каком нибудь пакете, например Офисном. Visual C++ и прочее.. Даже может быть в DirectX-е.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение Aleh » 28.03.2017 11:04:56

olegy123 писал(а):скорее они сидят в каком нибудь пакете, например Офисном. Visual C++ и прочее.. Даже может быть в DirectX-е.

Если была б гарантия что всё найденное заработает, поискал бы.
Aleh
новенький
 
Сообщения: 53
Зарегистрирован: 08.08.2016 12:27:45

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

Сообщение gvido » 28.03.2017 13:26:32

У меня стоит Офис 2013 х64. Но так как офис стоит не у всех По буду компилить под строку 32 битного драйвера ОДБС, который входит в состав ОС.
вот ссылка на кусок базы и ехе: https://yadi.sk/d/9yKE3s673GQmvG
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение gvido » 30.03.2017 13:09:49

Aleh, Вам помог ехе?
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение Aleh » 31.03.2017 16:19:05

Да, в смысле, что проблема не в Лазаре, а в ODBC.
Не работает, ошибка та-же что у моего ехе.
Aleh
новенький
 
Сообщения: 53
Зарегистрирован: 08.08.2016 12:27:45

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

Сообщение DYUMON » 31.03.2017 17:41:05

gvido
пробовал запустить твою прогу. windows 7 x64 ms office не установлен, хватает openoffice.твоя программа выдает ошибку что то там про odbs.
Код: Выделить всё
Could not connect with connection string "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=F:downloadsmdb_sqlnew_cbdb.MDB;Uid=Admin;Pwd=;ExtendedAnsiSQL=1;". ODBC error details: LastReturnCode: SQL_ERROR; Record 1: SqlState: IM002; NativeError: 0; Message: [Microsoft][��������� ��������� ODBC] �������� ������ �� ������ � �� ������ �������, ������������ �� ���������;.

сделал свою прогу .
код открытия такой
Код: Выделить всё
  ODBCConnection1.Driver := 'Microsoft Access Driver (*.mdb, *.accdb)';
  ODBCConnection1.Params.Add('DBQ=' + ExtractFilePath(ParamStr(0)) + 'new_cbdb.MDB');
  ODBCConnection1.Params.Add('ExtendedAnsiSQL=1');
  ODBCConnection1.Params.Add('Uid=Admin');
  ODBCConnection1.Params.Add('Pwd=');
  try
    ODBCConnection1.Open;
    form1.Caption := 'База открыта';
  except
    on e: Exception do
    begin
      form1.Caption := e.Message;
    end;
  end;

у меня все открылось. Не могу точно сказать по какой причине у тебя не срабатывает. Перед тестом я поставил такую приблуду https://www.microsoft.com/en-us/download/details.aspx?id=23734

Добавлено спустя 53 секунды:
хм. не углядел что тебе надо прогу саму 64 бита

Добавлено спустя 18 минут 40 секунд:
В общем разобрался. качаешь и ставишь эту хрень https://www.microsoft.com/en-us/downloa ... x?id=13255 , и будет у тебя прога 64 бита работать с msacces. твоя прога тоже заработала.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Пред.След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru