Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADOQuery, ADOConnection Win7Sp1, Win8 не работает, Падает на некоторых машинах 
:(
    Опции темы
Illusion Dolphin
Дата 28.12.2012, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 2
Всего: 63



Есть приложение, использующее TADOQuery и TADOConnection для доступа к базе данных (создание базы и запросы). 
В качестве провайдера автоматически выбирается один из списка: jet4.0, ACE 12 или ACE 14 в зависимости от того, какой имеется на машине. 
Проблема в том, что на некоторых машинах (Windows7, Win8) что-то происходит и это не работает. Самая большая загвоздка что я не знаю ошибки, и поспроивести её не могу на всех доступных все машинах. 

Раньше я создавал базу данных с помощью кода:
Код

procedure CreateMSAccessDatabase(FileName: string);
var
  DAO,
  WS: Variant;
  I,
  Code: Integer;
  ErrorString: string;
  const Engines: array[0..3] of string = ('DAO.DBEngine.120', 'DAO.DBEngine.36', 'DAO.DBEngine.35', 'DAO.DBEngine');

  function CheckClass(OLEClassName: string): Boolean;
  var
    HR: HResult;
    G: TGUID;
    I: IInterface;
  begin
    HR := CLSIDFromProgID(PWideChar(WideString(OLEClassName)), G);

    if Failed(HR) then
      Exit(False);

    HR := CoCreateInstance(G, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IDispatch, I);
    Result := HR = S_OK;
  end;

begin
  Code := 0;
  for I := Low(Engines) to High(Engines) do
    if CheckClass(Engines[I]) then
      begin
        try
          DAO := CreateOleObject(Engines[I]);
          Code := 1;
          WS := DAO.Workspaces[0];
          Code := 2;
          WS.CreateDatabase(FileName, ';LANGID=0x0409;CP=1252;COUNTRY=0', 64);
          Exit;
        except
          on E: Exception do
          begin
            ErrorString := 'Error creating database! Engine: ' + Engines[I] + ', ERROR: ' + E.message + ', file: ' + FileName + ', code = ' + IntToStr(Code);
            EventLog(ErrorString);
            TThread.Synchronize(nil,
              procedure
              begin
                MessageBoxDB(0, ErrorString, TA('Error'), TD_BUTTON_OK, TD_ICON_ERROR);
              end
            );
          end;
        end;
      end;
  raise Exception.Create('DAO engine could not be initialized');
end;


В результате пользователь получал ошибку с кодом 1,  E.message = "Ошибка загрузки библиотеки" (русская винда была у пользователя). Т.е. падала строка WS := DAO.Workspaces[0]; 
Было решено отказаться от такого "сложного" кода и для создания базы просто копировать заготовку из ресурсов.

Но это видно не решило проблему (судя по небольшим отчётам программы, деталей нету). 

Нашёл статьи про проблему с ADO в SP1:
http://social.msdn.microsoft.com/Forums/en...a6-34f11c6b5a13

Кто-нибудь сталкивался с проблемой? Посоветуйте что-нибудь, пожалуйста smile


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
lomaster
Дата 28.12.2012, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 27.5.2012

Репутация: 1
Всего: 2



Для создания/редактирования баз програмно лучше использовать ADOX.
А что не получилось с ресурсами?
PM   Вверх
Illusion Dolphin
Дата 29.12.2012, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 2
Всего: 63



Цитата

А что не получилось с ресурсами? 

Всё получилось, ошибки там явно нету, но всё равно что-то не так - возможно ошибка в TADOQuery и TADOConnection, вот о них и спрашиваю smile

Цитата

Для создания/редактирования баз програмно лучше использовать ADOX.

Мне казалось что TADO* использует те же интерфейся, разве не так?


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
lomaster
Дата 29.12.2012, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 27.5.2012

Репутация: 1
Всего: 2



Цитата

Мне казалось что TADO* использует те же интерфейся, разве не так? 
 Нет, ADOX это расширение ADO, в них все свое.
PM   Вверх
Illusion Dolphin
Дата 30.12.2012, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 2
Всего: 63



Цитата

Для создания/редактирования баз програмно лучше использовать ADOX.

Я бы так и поступил, если бы получил подтверждение, что проблема из-за этого. А просто переделывать кучу кода без никаких гарантий улучшения и возможности наткнуться на проблемы - это слишком.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0812 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.