Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 18.10.2005, 13:44   #1   
Форумец
 
Аватар для Nebula
 
Сообщений: 2,396
Регистрация: 14.05.2002
Возраст: 42

Nebula вне форума Не в сети
Unhappy Помогите решить задачу. Please!

Помогите из БД с помощью SQL запроса удалить выделенную строку в Visual С ++.
У меня есть таблица STUDENT. Из нее требуется удалить запись, на которой стоит курсор. При чем требуется это сделать с помощью SQL запроса.
Help!!!

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

???-не знаю что написать.
Может есть что-то для работы с курсором?HELP!!!!!
Серега
  Ответить с цитированием
Старый 19.10.2005, 13:32   #2   
Пью пиво
 
Аватар для Бух
 
Сообщений: 249
Регистрация: 14.09.2005
Возраст: 56

Бух вне форума Не в сети
Сначала получи идентификатор строки в которой стоит курсор. В нормальной таблице обычно существует такой.
В билдере я делал так:
AnsiString Type=ADOQuery1->FieldByName("PersonID")->AsString;

а уже потом делай delete from student where Type=PersonID
  Ответить с цитированием
Старый 19.10.2005, 13:59   #3   
Форумец
 
Аватар для Nebula
 
Сообщений: 2,396
Регистрация: 14.05.2002
Возраст: 42

Nebula вне форума Не в сети
Вот мой обработчик на кнопку 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 не имеет значения по умолчанию!
Что дальше?
  Ответить с цитированием
Старый 19.10.2005, 17:30   #4   
Бывалый форумец
 
Аватар для J++
 
Сообщений: 687
Регистрация: 05.08.2005

J++ вне форума Не в сети
тогда уж
AnsiString Type=ADOQuery1->FieldByName("ID")->AsString;
[...]
ADOQuery1->SQL->Add("delete from STUDENT Where Type=" + Type);
[...]
А вообще такие вещи делают обычно с параметрическими запросами. Помедитируй над доками, я сама уже не помню нужный раздел.
  Ответить с цитированием
Старый 20.10.2005, 06:51   #5   
Форумец
 
Аватар для zss_vrn
 
Сообщений: 2,045
Регистрация: 27.08.2003

zss_vrn вне форума Не в сети
Цитата:
ADOQuery1->SQL->Add("delete from STUDENT Where Type=ID");
По моему, наоборот:

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

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

И, с другой стороны, проще удалить без всякого SQL, а напрямую через датасет, раз курсор все равно на записи стоит.
  Ответить с цитированием
Старый 20.10.2005, 08:43   #6   
Форумец
 
Аватар для Nebula
 
Сообщений: 2,396
Регистрация: 14.05.2002
Возраст: 42

Nebula вне форума Не в сети
Спасибо! Все заработало!!!!
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind