» Программирование>Помогите из БД с помощью 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, а напрямую через датасет, раз курсор все равно на записи стоит.
[Ответ]