Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > error creating cursor handle


Автор: NDQuattro 9.4.2011, 20:00
Есть одна форма, на которой база данных в ДБГриде и Query1 и вторая форма, на которой редактируем поля в БД.

Код

void __fastcall TForm2::Button1Click(TObject *Sender)
{

Form1->Query1->Active=false;
Form1->Query1->SQL->Text="update stac96 SET NEKZL='"+Edit1->Text+"',FIO='"+Edit2->Text+"',ADRESS='"+Edit3->Text+"',RIKNAR='"+Edit4->Text+"',SKOLA='"+Edit5->Text+"',VIDZN='"+Edit6->Text+"',SB_A='"+Edit7->Text+"'where NEKZL='"+DBEdit2->Text+"'  ";
Form1->Query1->ExecSQL();
}


Дальше при каждой попытке сделать Query1 активным получаем ошибку "error creating cursor handle".
Я что то упускаю..

Автор: ИванМ 15.4.2011, 19:55
Для update достаточно вызывать ExecSQL().
Active = false / true писать не надо.

Автор: _Dimon_ 16.4.2011, 09:51
Для грида надо
Код

Form1->Query1->SQL->Text="update stac96 SET NEKZL='"+Edit1->Text+"',FIO='"+Edit2->Text+"',ADRESS='"+Edit3->Text+"',RIKNAR='"+Edit4->Text+"',SKOLA='"+Edit5->Text+"',VIDZN='"+Edit6->Text+"',SB_A='"+Edit7->Text+"'where NEKZL='"+DBEdit2->Text+"'  ";
Form1->Query1->Open(); // или Form1->Query1->Active = true;

P.S. Но если это SELECT. 
UPDATE в гриде нечего показывать, можно только получить количество обработаных записей - Form1->Query1->RowsAffected
P.P.S. Лучше пользоватся параметрами вместо текстовых вставок, даже код получается понятней, ИМХО

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)