-
Добрый день. Столкнулся с такой проблемой впервые, выдает вот такую ошибку: 'CommandText does not return a result set. Process stoped'. Я использую borland c++ builder 6 и базу данных PostgreSQL 9.1. Пишу запрос с iNSERT: ADOQuery_answ->ConnectionString="Provider=MSDASQL.1;Password=1;Persist Security Info=True;User ID=postgres;Data Source=PostgreSQL30;Initial Catalog=test2";
String query5 = "insert into answer (id_answer, answer, id_patient, id_vopros, id_test) values (:id_answer,:answer,1,:id_vopros,7)";
ADOQuery_answ->Parameters->ParamByName("id_answer")->Value=Label_nomer->Caption;
ADOQuery_answ->Parameters->ParamByName("id_vopros")->Value=Label_nomer->Caption;
ADOQuery_answ->Parameters->Items[1]->Value=Edit_answ->Text;
DataSource_answ->DataSet=ADOQuery_answ;
ADOQuery_answ->Active=0;
ADOQuery_answ->SQL->Text=query5;
ADOQuery_answ->Active=1;
ADOQuery_answ->ExecSQL();
-
У нас вообще то форум по ДЕЛЬФИ Убери Active, а то все что знал, все включил.
-
Вогт твои грабли: ADOQuery_answ->Active=1;
-
Удалено модератором
-
Блин,точно сработало) спасибо. Но почему так, я всегда когда пишу запросы всегда делаю ADOQuery_answ->Active=1; и все работает, а тут не получилось!не объясните почему?)
Я сюда написал потому что видел такую же ошибку, как у меня, но пути их решения мне не помогали.
-
Кроме того в Active=0, Active=1 целые от лени? Это логический тип всё-таки и следует без неявных преобразований из целого писать false, true.
-
> [4] Peter_Evil (17.07.12 09:52) > а тут не получилось!не объясните почему?)
Потому что active = true; так же как и Open(); предназначен для запросов возвращающих набор данных, а ExecSQL(); для невозвращающих. У тебя нечего возвращать.
-
И пользуйся для таких TADOCommand
-
спасибо! на будущее запомню
-
И Query не используй, ведь все это последствия
|