Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > прога с БД не работает у Пользователя


Автор: AzuManga 14.7.2005, 21:20
Здравствуйте, коллеги 8))

Я использую TADOConnection, БД - файл MS Access *.mdb, провайдер Microsoft OLE Db Provider for ODBC Drivers (правда почему-то он автоматически меняется в ConnectionString на MSDASQL.1).

Проблема заключается в следующем - на моем компьютере БД открывается и программа работает с ней без проблем, а на компе пользователя вылетает с ексепшеном, 4то источник данных не найден и не указан драйвер по умолчанию. Притом, что на компе юзаера совершенно правильно указывается имя файла БД (тестировал у себя если переносить файл mdb в разные папки). Ексепшен появляется при первом же использовании этого ADOConnection (например DataSet.Open или даже AdoConnection.Connected:=true)

Попытка проверить соединение на машине юзера (в диалоге UDl) тоже не увенчалась успехом - та же ошибка.

Помогите, пожалуйста, подскажите, где может быть ошибка и как ее исправлять?
Большое спасибо 8))

Автор: Vit 14.7.2005, 22:33
Поставь Jet4 провайдер

Автор: AzuManga 14.7.2005, 23:04
Если поставить Jet4 провайдера, то возникает ошика.

У меня при обработке события FormClose открывается один из датасетов для последующего редактирования, и прямо на строке DataSet.Open выскакивает эесепшн - Неопознанная ошибка, притом, 4то с ODBC все работает нормально.

Спасибо за ответ 8))

Автор: Vit 15.7.2005, 02:36
Код в студию!

Автор: AzuManga 15.7.2005, 08:07
ОК 8))

строка подключения:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\FTP_2\Dev\TestPlan\TestPlan.mdb;Persist Security Info=False

закрытие формы:

Код

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if ADOConnection1.Connected then
  begin
    DataSetResult.Close;
    DataSetResult.CommandText:='SELECT Bugs.sectionid,  Bugs.bugname, '+
               'Bugs.steps, '+
               'Bugs.keytopress, Bugs.expectedresult,   Bugs.comments, '+
               'Bugs.bugid, Bugs.Session  FROM Bugs WHERE Bugs.Session = 1';
    DataSetResult.Open;   // эесепшен возникает тут
    DataSetResult.First;
    if DataSetResult.RecordCount>0 then
      repeat
        DataSetResult.Edit;
        DataSetResult.Fields[7].AsInteger:=0;
        DataSetResult.Next;
      until DataSetResult.Eof;
  end;
end;


кстати, я решил убрать этот код из закрытия формы и сделать все немного по-другому 8)) у меня на машине заработало без багов, днем пойду к юзерам 8))

Спасибо за помощь 8)

Автор: vadims 15.7.2005, 08:28
Ошибся - не туда запостил а полность убрать что-то не получается

Автор: Vit 15.7.2005, 15:24
DataSetResult - это какого типа?

Автор: AzuManga 16.7.2005, 16:58
TADODataSet , в свойстве Connection - ADOConnection1

В принципе я сделал все по-другому,перенес этот код из FormClose в другое место и все работает, но все-таки интересно, откуда такая странная ошибка 8))

Автор: AzuManga 19.7.2005, 19:21
Если кому интересно, то я нашел способ исправить эту странную багу - надо было в запросе вместо нескольких параметров написать *, чтобы выбрать все 8)) Как ни странно - ошибка пропала 8)) Так что если кто наступит на такие грабли, то решение проблемы - упрощение запроса 8))

Спасибо за внимание 8))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)