![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка
Денис © (2003-03-18 10:54:00)Ситуация. Есть прога, работающая с Microsoft.Jet.OLEDB.4.0 через ADO, база MS Access. При первом выполнении любого(!!!) запроса все проходит так, как и должно, а вот при втором выполнении видим исключение EOleException "Несоответствие типов данных в выражении условия отбора". Причем такая ситуация возникает для ЛЮБОГО запроса, вызванного вторично, запросы организованы в TADOQuery. В чем проблема? Спасибо.
Денис (2003-03-18 12:10:00) [1]Johnmen. Очень сложно иногда бывает предсказать встречные вопросы и написать на них ответы.
stone! Поменял у всех запросов Prepared с False на True - и заработало, спасибо. Может мне кто-нибудь объяснить, как связано Prepared с этой ошибкой? :)
sniknik (2003-03-18 12:10:00) [2]ну так приведи то на что ругается и как ругается, воспроизведи ситуацию.
см. stone © (18.03.03 10:59)
а то пока мы только гаданиями занимаемся.
Johnmen (2003-03-18 12:02:00) [3]Продолжение теста на телепатические способности.............
Я не прошел :(
Денис (2003-03-18 11:55:00) [4]sniknik. Попробовал, на select не ругается. Ошибка возникает только при update или insert (delete не проверял).
sniknik (2003-03-18 11:50:00) [5]stone © (18.03.03 11:25)
лутше все же явно указать, на случай если запуск не из текущего каталога.
Денис (18.03.03 11:20)
никакого криминала в предложеном коде нет (кроме может вероятного сбоя в некоторых виндах, ExtractFilePath(ParamStr(0)) в некоторых возвращает путь не завершающийся "\", я обычно добавляю на это проверку (в основном потому что не выяснил точно где это происходит и почему, а нужно чтобы не зависело))
гдето в другом месте глюк.
положи гденибудь под кнопку подобный код
ADODataSet1.Close;
ADODataSet1.CommandText:= "select * from anytable";
ADODataSet1.Open;
ADODataSet1.Close;
ADODataSet1.CommandText:= "select * from another";
ADODataSet1.Open;
даю 99% гарантии что ошибки на 2-е открытие не будет.
Денис (2003-03-18 11:44:00) [6]stone, спасибо, но не в этом суть. Все равно ведь "Несоответствие типов данных...". Как быть-то?
stone (2003-03-18 11:25:00) [7]
> где она находится и исходя из этого коннектилась к базе,
> которая лежит в том же каталоге, что и прога.
Насколько я помню в этом случае путь вообще не надо указывать
Типа того:
ADOConnection1.ConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mybase.mdb;Persist Security Info=False";
Денис (2003-03-18 11:20:00) [8]т.е. вот так:
path := ExtractFilePath(ParamStr(0));
ADOConnection1.ConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + "mybase.mdb;Persist Security Info=False";
Денис (2003-03-18 11:18:00) [9]Час назад все работало через ODBC, решил отказаться от нее, там замудрено с ConnectionString, т.е. нужно прописывать алиас вручную, а я хотел сделать так, чтобы прога сама определяла, где она находится и исходя из этого коннектилась к базе, которая лежит в том же каталоге, что и прога.
sniknik (2003-03-18 11:04:00) [10]В чем проблема?
как и всегда, в 17-й строке.
как предположение запросы заносиш через ADD, предварительно не очистив то что там было.
stone (2003-03-18 10:59:00) [11]Телепатически диагноз установить довольно трудно. Если нет логических ошибок в запросе, то попробуй включить/выключить Prepared