C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
insert into ........., Вопрос ламера.
exp
  Отправлено: 18.03.2005, 13:49


Мастер участка

Группа: Участник
Сообщений: 304



Доброго времени суток всем.

Ситуация:
Использую SQL.
Есть база данных "ВУЗ".
Надо с помощью запроса добавить значения в таблицу "Университет".

Моя реализация:
CODE

void __fastcall TMainForm::LabelClick(TObject *Sender)
{
if(UniversityForm->ShowModal() == mrOk)
{

  AnsiString CommandLine = "";

  CommandLine = "insert into Университет values";
  CommandLine+= "('"+ UniversityForm->CodeEdit->Text+"',";
  CommandLine+=  "'"+UniversityForm->NameEdit->Text+"',";
  CommandLine+=  "'"+UniversityForm->RegionEdit->Text+"',";
  CommandLine+=  "'"+UniversityForm->AdressEdit->Text+"')";

  ADODataSet1->Active = false;
  ADODataSet1->CommandText = CommandLine;
  ADODataSet1->Active = true;
}
}


Проблема:
После выполнения строки ADODataSet1->Active = true; выскакивает страшный эксепшн : "ADODataSet1: CommandText does not return a result set"

Особенность:
При повторном запуске проги и чтении базы данных введенные этим запросом данные отображаются в таблице.

Спасибо всем, кто откликнется.
AVC
Отправлено: 18.03.2005, 13:56


Ветеран

Группа: Модератор
Сообщений: 1583



Заменить
ADODataSet1->Active = true;
на
ADODataSet1->ExecSQL();

Или, что строже, использовать компонент TADOCommand

PS.
QUOTE

После выполнения строки ADODataSet1->Active = true; выскакивает страшный эксепшн : "ADODataSet1: CommandText does not return a result set"

Особенность:
При повторном запуске проги и чтении базы данных введенные этим запросом данные отображаются в таблице.

Все законоерно. Команда вставки выполняется и записи попадают в таблицу а затем компонент хочет получить набор записей (курсор) а его нет, вот он и ругается.

Отредактировано AVC — 18/03/2005, 12:59
Gedeon
Отправлено: 18.03.2005, 13:58


Ветеран

Группа: Модератор
Сообщений: 1742



Не пугайтесь, ничего страшного нет, просто датасэт говорит Вам, что запрос не возвращает данные. Для устранения сей ошибки используйте метод ExecSQL датасета или воспользуйтесь компонентой TADOCommand.
exp
Отправлено: 18.03.2005, 15:19


Мастер участка

Группа: Участник
Сообщений: 304



Большое спасибо. smile.gif

Вернуться в Работа с базами данных в C++Builder