Форум: "Базы";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
ВнизОшибка Найти похожие ветки
← →
Денис (2003-03-18 10:54) [0]Ситуация. Есть прога, работающая с Microsoft.Jet.OLEDB.4.0 через ADO, база MS Access. При первом выполнении любого(!!!) запроса все проходит так, как и должно, а вот при втором выполнении видим исключение EOleException "Несоответствие типов данных в выражении условия отбора". Причем такая ситуация возникает для ЛЮБОГО запроса, вызванного вторично, запросы организованы в TADOQuery. В чем проблема? Спасибо.
← →
stone (2003-03-18 10:59) [1]Телепатически диагноз установить довольно трудно. Если нет логических ошибок в запросе, то попробуй включить/выключить Prepared
← →
sniknik (2003-03-18 11:04) [2]В чем проблема?
как и всегда, в 17-й строке.
как предположение запросы заносиш через ADD, предварительно не очистив то что там было.
← →
Денис (2003-03-18 11:18) [3]Час назад все работало через ODBC, решил отказаться от нее, там замудрено с ConnectionString, т.е. нужно прописывать алиас вручную, а я хотел сделать так, чтобы прога сама определяла, где она находится и исходя из этого коннектилась к базе, которая лежит в том же каталоге, что и прога.
← →
Денис (2003-03-18 11:20) [4]т.е. вот так:
path := ExtractFilePath(ParamStr(0));
ADOConnection1.ConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + "mybase.mdb;Persist Security Info=False";
← →
stone (2003-03-18 11:25) [5]
> где она находится и исходя из этого коннектилась к базе,
> которая лежит в том же каталоге, что и прога.
Насколько я помню в этом случае путь вообще не надо указывать
Типа того:
ADOConnection1.ConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mybase.mdb;Persist Security Info=False";
← →
Денис (2003-03-18 11:44) [6]stone, спасибо, но не в этом суть. Все равно ведь "Несоответствие типов данных...". Как быть-то?
← →
sniknik (2003-03-18 11:50) [7]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:55) [8]sniknik. Попробовал, на select не ругается. Ошибка возникает только при update или insert (delete не проверял).
← →
Johnmen (2003-03-18 12:02) [9]Продолжение теста на телепатические способности.............
Я не прошел :(
← →
Денис (2003-03-18 12:10) [10]Johnmen. Очень сложно иногда бывает предсказать встречные вопросы и написать на них ответы.
stone! Поменял у всех запросов Prepared с False на True - и заработало, спасибо. Может мне кто-нибудь объяснить, как связано Prepared с этой ошибкой? :)
← →
sniknik (2003-03-18 12:10) [11]ну так приведи то на что ругается и как ругается, воспроизведи ситуацию.
см. stone © (18.03.03 10:59)
а то пока мы только гаданиями занимаемся.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c