Большой Воронежский Форум
» Программирование>Помогите из БД с помощью SQL запроса удалить выделенную строку в Visual C++
Nebula 13:44 18.10.2005
Помогите из БД с помощью SQL запроса удалить выделенную строку в Visual С ++.
У меня есть таблица STUDENT. Из нее требуется удалить запись, на которой стоит курсор. При чем требуется это сделать с помощью SQL запроса.
Help!!!

Я пробовал так
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("delete from STUDENT ??? Where ?????");
ADOQuery1->ExecSQL();

???-не знаю что написать.
Может есть что-то для работы с курсором?HELP!!!!!
Серега [Ответ]
Бух 13:32 19.10.2005
Сначала получи идентификатор строки в которой стоит курсор. В нормальной таблице обычно существует такой.
В билдере я делал так:
AnsiString Type=ADOQuery1->FieldByName("PersonID")->AsString;

а уже потом делай delete from student where Type=PersonID [Ответ]
Nebula 13:59 19.10.2005
Вот мой обработчик на кнопку DEL

void __fastcall TForm1::Button4Click(TObject *Sender)
{
AnsiString Type=ADOQuery1->FieldByName("ID")->AsString;
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("delete from STUDENT Where Type=ID");
ADOQuery1->ExecSQL();

}
Появляется ошибка: Параметр TYPE не имеет значения по умолчанию!
Что дальше? [Ответ]
J++ 17:30 19.10.2005
тогда уж
AnsiString Type=ADOQuery1->FieldByName("ID")->AsString;
[...]
ADOQuery1->SQL->Add("delete from STUDENT Where Type=" + Type);
[...]
А вообще такие вещи делают обычно с параметрическими запросами. Помедитируй над доками, я сама уже не помню нужный раздел. [Ответ]
zss_vrn 06:51 20.10.2005

Сообщение от :
ADOQuery1->SQL->Add("delete from STUDENT Where Type=ID");

По моему, наоборот:

ADOQuery1->SQL->Add("delete from STUDENT Where ID = '"'" + Type + "'"'");

Только это не VC++, это CBuilder.

И, с другой стороны, проще удалить без всякого SQL, а напрямую через датасет, раз курсор все равно на записи стоит. [Ответ]
Nebula 08:43 20.10.2005
Спасибо! Все заработало!!!! [Ответ]
Вверх