Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка


Денис ©   (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


Наверх

Титульная страница Поиск, карта сайта Написать письмо