Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.07;
Скачать: CL | DM;

Вниз

Ошибка   Найти похожие ветки 

 
Денис   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
1-19664
Delphi-Beginner
2003-03-26 08:53
2003.04.07
Работа с динамической памятью


9-19406
cyclope (#-)
2002-10-30 04:44
2003.04.07
DelphaX


14-19758
FVlad
2003-03-16 21:33
2003.04.07
Электронные книги


4-19921
Павел
2003-02-04 09:15
2003.04.07
Запрет на сворачивание


1-19554
race1
2003-03-26 13:15
2003.04.07
property