powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Доступ к mdb через Jet
25 сообщений из 25, страница 1 из 1
Доступ к mdb через Jet
    #39450269
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Слегка подзадолбала (очень сильно мягко сказано) такая фигня:
делается пустяковое приложение на Delphi, которое подключается к так называемой базе данных MS Access.
Очень часто бывает, что приложение работает. Но стоит лишь просто сменить версию Винды, поставить другой офис или еще какую-нибудь фигню сделать, то приложение перестает работать, а показывает кучу ошибок. Значит, приложение не изменилось, но изменилась обстановка вокруг приложения и оно рухнуло. И эта мелкомягкая фигня сильно бесит!
Когда-то еще давно было даже вот так: на XP все отлично работает! Поставил Семерку и АТАС!!! ВСЕ!!! Не работает ничего!
Это меня сильно раздражает и я решил, что sqlite тоже неплохая встраиваемая СУБД. Вот все отлично и начало работать при любой винде и при любой власти! А Аксес... горел бы он гаром и шел бы лесом... Но не горит и не идет, так как товарищу понадобился именно аксес... И это спустя столько лет!
Ну так вот, стояла 10 винда и Delphi XE. С ходу простейшая прожка создала mdb файлик, нашпиговала в него записей, сделала выборки, показала их... Вроде все работает бесшовно!
Тут... случилось... немного полетела винда. Совсем малость полетела... Конечно, она полетела не сама... Мне иногда всякое приходится делать, вот она и не сдюжила... Бывает... Поставил 10-ку заново... Это заняло всего 7 минут, так как ssd винт. Винда стала на девственно чистый винт, от прежней десятки ничего не осталось. Вот все супер, только прожка-то моя перестала теперь работать. ХЗ, какие "ДЖЭТы" стояли ранее и что теперь встало... Запускаем прогу, а она тут же и ошибку... Дескать не могу... невозможно... И все ругает мелкомягкие виндовые прослойки для доступа к СУБД. Ругает ODBC, Jet и так далее...
В общем, мне все это надоело, поэтому вопрос: можно ли как-то сделать, чтобы дельфовые ADO или какой иной геморой не лезли бы за дровами в недра системы, а брали бы их тут же - из папки приложения? Может туда надо каких dll накидать, чтоб при любом раскладе все работало? Как выкорчевать мелкомягкие дрова и подсунуть их в папку с прогой?
Заранее спасибо!
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450282
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

Нет.

И с msjet давно надо слезать - оно с форматом mdb кажется, совсем уже не поддерживается в новых ОС при 64-бит, accdb еще как-то.

Вроде бы есть Access Redistributable, но....
https://www.microsoft.com/en-us/download/details.aspx?id=13255
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450285
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglGaladriel75,

Нет.

И с msjet давно надо слезать - оно с форматом mdb кажется, совсем уже не поддерживается в новых ОС при 64-бит, accdb еще как-то.

Вроде бы есть Access Redistributable, но....
https://www.microsoft.com/en-us/download/details.aspx?id=13255
Ок, спасибо!
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450297
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
плюс возможно надо будет подправить ConnectionString, но это понятно
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450367
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

KADAO от Кирилла Антонова
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450373
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskGaladriel75,
KADAO
Как вариант, го... чем он лучше того же ADO? Это тоже надстройка на виндовыми либами, как я читал про него...
Вот мне бы такую же ботву, как, например, sqlit3.dll для SQLITE! Коль MDB или ACCDB - обычные файлы и не более, то зачем столько гемороя и громоздких либ и драйверов для пустяковых задач. Одной бы dll хватило выше крыши!
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450397
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75 Одной бы dll хватило выше крыши!
А каковы критерии выбора СУБД? Firebird не устроит?
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450400
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

ничего не сделаешь, имхо. Это ж акцесс.

Лучше выбери экспорт в формате, который все понимают - csv, например.
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450420
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокGaladriel75 Одной бы dll хватило выше крыши!
А каковы критерии выбора СУБД? Firebird не устроит?
Заказчик просит аксесс.
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450486
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75Докпропущено...

А каковы критерии выбора СУБД? Firebird не устроит?
Заказчик просит аксесс.
Ну так и ты не стесняйся, требуй налия акцесса на компе и юзай его как СОМ север.
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450495
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДGaladriel75пропущено...

Заказчик просит аксесс.
Ну так и ты не стесняйся, требуй налия акцесса на компе и юзай его как СОМ север.

А заказчик потом будет размножать прогу и требовать от пользователей наличие аксеса на их компах?
Это плохая идея. Я пока что сделал все на sqlite3. Отлично все работает. А если заказчик все же будет настаивать на аксесе, тогда запасной вариант у меня есть - прикручу все на ADO, но... Оно ж может где-то и не заработать! Почему люди не понимают, что mdb и accdb нужны для того, чтобы в самом MS Access и использовать! А как встраиваемая БД он никак не годится! А sqlite великолепно подходит! Тем более - эту базу можно прикрутить к чему угодно при минимуме усилий и навыков. Я все это прикручивал на Windows CE, Andoid, обычную винду и так далее и везде все в момент запускалось с ходу и начинало все работать! А mdb??? Когда-то отлично работавшая моя прога внезапно работать перестала! Винда сменилась! Тогда я решил mdb закинуть в другую базу и для этого взял платный продвинутый конвертер. Но платный крутой конвертер выдал точно такую же ошибку, что и моя прога и не заработал! Хотя на старой винде тоже работал! Так что, когда мелкомягкие рисуют кучи библиотек и технологий, потом все это патчат и переделывают, это плохо! Не все в курсе, что иногда может быть ошибка у разработчика продукта, а не у девелопера, который сий продукт юзает у себя! Так и мозг можно сломать - биться в поисках решения, а оно окажется всего-то лишь в том, что надо байду какую-нибудь пропатчить и жизнь наладится!
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39450502
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

возможно, заказчик желает использовать акцесс для просмотра данных. Что тут сделаешь.

Я экспортирую в акцесс, используя джет4, но пока не нарывался на проблемы. И виндовз в т.ч. самые новые используются.

А что за ошибки выводятся? И что за код ты используешь для создания мдб файла? Расскажи - может, вопрос и решим.
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39451046
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДGaladriel75,

возможно, заказчик желает использовать акцесс для просмотра данных. Что тут сделаешь.

Я экспортирую в акцесс, используя джет4, но пока не нарывался на проблемы. И виндовз в т.ч. самые новые используются.

А что за ошибки выводятся? И что за код ты используешь для создания мдб файла? Расскажи - может, вопрос и решим.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
if fDataBaseDriver = MSACCESS then
  begin
    fDriver := 'MSACCESS';
    UniConnection.ProviderName := 'Access';
    if (not fileExists(fDataPath + '\data.mdb')) or (aForce) then
    begin
      fFirstRun := DB_UNKNOWN_STATE;
      try
        forceDirectories(fDataPath);
        UniConnection.SpecificOptions.Values['ForceCreateDatabase'] := 'True';
        UniConnection.Database := fDataPath + '\data.mdb';
        UniConnection.Connect;
        Result := createData;
        fFirstRun := DB_CREATED;
      except
        on e: Exception do
          Result := DATABASE_ERROR;
      end;
    end;
  end;



Я использую не ADO, а UniQuery! И вот именно этот кусочек кода на одной из Windows 10 отлично создавал базу данных! С ходу и не выдавал ни единой ошибки! А на другой Windows 10 сказал, что не может создать источник данных ODBC! То есть: "Can't create alias". Так и сказал! В обоих случаях прога стартовала под админской учеткой. В обоих случаях в системе стоял один и тот же офис! Единственное отличие - винда ставилась из разных дистрибутивов! Так вот,прога запустилась на упрощенном дистрибутиве, а на "правильном" дистрибутиве ни в какую!
А ADO раньше тоже использорвал. Все шикарно работало, потом с Хрюшки переполз на Семеру и вот атас и случился! Так это еще тогда было на ADO... И при этом тогда же перестали и конвертеры Баз данных работать. С другой стороны... я то и сам систему вымучиваю так, что может все, что угодно случиться! Хотя... Все перестало работать как раз на свежей и не замученной системе!
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39451048
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75чччДGaladriel75,

возможно, заказчик желает использовать акцесс для просмотра данных. Что тут сделаешь.

Я экспортирую в акцесс, используя джет4, но пока не нарывался на проблемы. И виндовз в т.ч. самые новые используются.

А что за ошибки выводятся? И что за код ты используешь для создания мдб файла? Расскажи - может, вопрос и решим.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
if fDataBaseDriver = MSACCESS then
  begin
    fDriver := 'MSACCESS';
    UniConnection.ProviderName := 'Access';
    if (not fileExists(fDataPath + '\data.mdb')) or (aForce) then
    begin
      fFirstRun := DB_UNKNOWN_STATE;
      try
        forceDirectories(fDataPath);
        UniConnection.SpecificOptions.Values['ForceCreateDatabase'] := 'True';
        UniConnection.Database := fDataPath + '\data.mdb';
        UniConnection.Connect;
        Result := createData;
        fFirstRun := DB_CREATED;
      except
        on e: Exception do
          Result := DATABASE_ERROR;
      end;
    end;
  end;



Я использую не ADO, а UniQuery! И вот именно этот кусочек кода на одной из Windows 10 отлично создавал базу данных! С ходу и не выдавал ни единой ошибки! А на другой Windows 10 сказал, что не может создать источник данных ODBC! То есть: "Can't create alias". Так и сказал! В обоих случаях прога стартовала под админской учеткой. В обоих случаях в системе стоял один и тот же офис! Единственное отличие - винда ставилась из разных дистрибутивов! Так вот,прога запустилась на упрощенном дистрибутиве, а на "правильном" дистрибутиве ни в какую!
А ADO раньше тоже использорвал. Все шикарно работало, потом с Хрюшки переполз на Семеру и вот атас и случился! Так это еще тогда было на ADO... И при этом тогда же перестали и конвертеры Баз данных работать. С другой стороны... я то и сам систему вымучиваю так, что может все, что угодно случиться! Хотя... Все перестало работать как раз на свежей и не замученной системе!
В коде есть немного лажи! fFirstRun := DB_UNKNOWN_STATE; - нафик не нужен!
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39451049
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Galadriel75]Galadriel75пропущено...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
if fDataBaseDriver = MSACCESS then
  begin
    fDriver := 'MSACCESS';
    UniConnection.ProviderName := 'Access';
    if (not fileExists(fDataPath + '\data.mdb')) or (aForce) then
    begin
      fFirstRun := DB_UNKNOWN_STATE;
      try
        forceDirectories(fDataPath);
        UniConnection.SpecificOptions.Values['ForceCreateDatabase'] := 'True';
        UniConnection.Database := fDataPath + '\data.mdb';
        UniConnection.Connect;
        Result := createData;
        fFirstRun := DB_CREATED;
      except
        on e: Exception do
          Result := DATABASE_ERROR;
      end;
    end;
  end;



Я использую не ADO, а UniQuery! И вот именно этот кусочек кода на одной из Windows 10 отлично создавал базу данных! С ходу и не выдавал ни единой ошибки! А на другой Windows 10 сказал, что не может создать источник данных ODBC! То есть: "Can't create alias". Так и сказал! В обоих случаях прога стартовала под админской учеткой. В обоих случаях в системе стоял один и тот же офис! Единственное отличие - винда ставилась из разных дистрибутивов! Так вот,прога запустилась на упрощенном дистрибутиве, а на "правильном" дистрибутиве ни в какую!
А ADO раньше тоже использорвал. Все шикарно работало, потом с Хрюшки переполз на Семеру и вот атас и случился! Так это еще тогда было на ADO... И при этом тогда же перестали и конвертеры Баз данных работать. С другой стороны... я то и сам систему вымучиваю так, что может все, что угодно случиться! Хотя... Все перестало работать как раз на свежей и не замученной системе!
В коде есть немного лажи! fFirstRun := DB_UNKNOWN_STATE; - нафик не нужен!
Result := createData;
fFirstRun := DB_CREATED; - лажа! А если ошибка, result будет false, а fFirstResult будет типа DB_CREATED. Это я в спешке делал и ночью, вот и накосячил безбашенно! Но не это влияет на создание самой базы!
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39451052
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

ой, я даже не знаю, что такое UniQuery. :(

Я создаю .mdb вот таким кодом, как здесь: 19170656 (см. функцию CreateMSAccessFile()).
Попробуй постучать в этот бубен - может, получится.
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39451099
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

он просто лучше )))
потому что работает напрямую с движком Jet, который, если не изменяет память, есть во всех версиях винды без наличия офиса
без всяких ado и иже с ним прокладок
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39451545
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДGaladriel75,

ой, я даже не знаю, что такое UniQuery. :(

Я создаю .mdb вот таким кодом, как здесь: 19170656 (см. функцию CreateMSAccessFile()).
Попробуй постучать в этот бубен - может, получится.

Ну попробую! Спасибо огромное!

А UniQuery - компоненты для прямого доступа ко многим СУБД! Так говорят сами создатели этих компонентов. А на самом деле - без прослоек эти компоненты до баз не могут достучаться! Да и баги встречались и встречаются. Нарвался на один из багов, не помню какой уже, но исправлен он был в новом релизе компонента и этот новый релиз уже не подходил для той версии Embarcadero, которая стояла у меня. А ставить новую версию, крякать ее ой как не хотелось... Не помню уже как, но баг тот как-то обошел... Нет идеального кода, что-нибудь да всплывет!
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39452500
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куда делись мои сообщения???
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39452517
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskКуда делись мои сообщения???
Я не знаю, я ничего не удалял, да и скорее всего и не могу удалять...
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39458484
dalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Galadriel75

честно говоря не разделяю вашего гнева.
я не идеализирую access. по мне так много странного там. в частности куда как больше бесит подчас существенная разница в конструкциях sql запросов в mssql и access. одна ж контора. уж можно было сделать однообразно.

однако не могу сказать, что сталкивался с кучей косяков в разных ОС, при разных офисах и т.п. вполне всё недурно работает. а разных проги с БД на access я делал не мало. и крутились и крутятся они весьма разнообразно где.

отмечу, что цепляюсь через стандартный ADO. и юзаю лишь как БД.
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39458791
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно стандартная проблема. Решается IMHO разными методами:

1) организационными

Точно в документации описываете окружение которое должно быть. Версия Windows, офиса, какие галочки надо ставить при установке.... если окружение другое - то не еб.... unsupported configuration

2) аккуратный и правильный код

Сами внимательно читаете документацию по функция Windows API и пищите 100% документированный код

AFAIK у M$ продуктов достаточно хорошая совместимость между версиями, и раньше (до 2005-2010 года) была достаточно хорошая и понятная документация (MSDN).

Только, работать нужно в строгом соответствие с документацией.... а не методом, взяли какую-то библиотеку, за 5 минут слепили пример hello world, в одном окружение работает, в другом нет... Windows виноват

Когда занимался программированием под Win API (лет 10 назад), 95% проблем совместимости были исключительно мои косяки. Тут не прочитал, тут упростил обработку ошибок и так далее.

3) тестирование

Тестировать в разных средах.
В Internet'е с совместимостью между браузерами еще все хуже и ничего, живут же люди ))), сайты разрабатывают

p.s. В современном MSDN IMHO черт ногу сломит. Интерфейс и разбивка на разделы - совершенно перестала быть интуитивно понятной. По сравнению с бывшим лет 15 назад TechNet - полный ужас. На мой вкус.
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39458794
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalx...
однако не могу сказать, что сталкивался с кучей косяков в разных ОС, при разных офисах и т.п. вполне всё недурно работает. а разных проги с БД на access я делал не мало. и крутились и крутятся они весьма разнообразно где.

отмечу, что цепляюсь через стандартный ADO. и юзаю лишь как БД.
So do I
Когда занимался похожими вещами для Www.kamis.ru
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39458801
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то у заказчика крутились версии от первых Windows 95 до Windows Server 2003
много разных "косяков" вылезало, но большинство описано в документации

Банальная задача:
Запуск внешнего приложения или команды ОС.

Много ли из тех, кто это делает, помнят о переменной окружения COMSPEC ? А это __стандартная__ вещь начиная еще с MS DOS 3.1

В результате: тут работает, тут не работает. А виноват Windows )))
...
Рейтинг: 0 / 0
Доступ к mdb через Jet
    #39459031
dalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Leonid Kudryavtsev

мои извинения. уж 95-ю я ни как не рассматриваю как ось применения. равно как и 98. а jet есть в комплекте начиная с 98SE, насколько я помню. потому в требованиях к ПО - обычно так и пишу :) . да и что бы работать удобно с бникодом надо хотя бы 2К. потому чаще - начиная с 2К :)
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Доступ к mdb через Jet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]