Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка ADOQuery. [D2005, XP]


vikm ©   (2007-03-21 18:28:00) 

Приветик всем знатокам Delphi.
Я начинающий, поэтому просьба не пинать если вопрос покажется глупым. Вот кусок кода который добавляет запись в базу данных:

procedure TForm_AddPerson.AddPerson_AddBtnClick(Sender: TObject);
var
 str1, str2, str3, str4, str5: string;
begin
 if AddPerson_eSurname.Text = '' then
   begin
     MessageDlg('Вы не ввели фамилию! Повторите ввод.',mtWarning,[mbOK],0);
     AddPerson_eSurname.SetFocus;
     AddPerson_AddBtn.Enabled := False;
     Abort;
   end;
 if AddPerson_eName.Text = '' then
   begin
     MessageDlg('Вы не ввели имя! Повторите ввод.',mtWarning,[mbOK],0);
     AddPerson_eName.SetFocus;
     AddPerson_AddBtn.Enabled := False;
     Abort;
   end;
 str1 := AddPerson_eSurname.Text;
 str2 := AddPerson_eName.Text;
 str3 := AddPerson_ePatronymic.Text;
 str4 := AddPerson_eBorn.Text;
 str5 := 'INSERT INTO person (surname,name,patronymic,born) VALUES(''' +
           str1 + ''',''' + str2 + ''',''' + str3 + ''',''' + str4 + ''')';
 try
   AddPerson_ADOQuery1.Close;  //закрывается запрос
   AddPerson_ADOQuery1.SQL.Clear;
   AddPerson_ADOQuery1.SQL.Add(str5);
   AddPerson_ADOQuery1.Open; //открывается запрос
 except //в случае ошибки базы данных выводится сообщение об ошибке
   on error:EDatabaseError do
     MessageDlg('Ошибка записи в базу '+error.Message+'!',mtError,[mbOK],0);
 end;
 Form_Person.Person_ADOTable1.Close;
 Form_Person.Person_ADOTable1.Open;
 AddPerson_AddBtn.Enabled := False;
 AddPerson_eSurname.Text := '';
 AddPerson_eName.Text := '';
 AddPerson_ePatronymic.Text := '';
 AddPerson_eBorn.Text := '';
 AddPerson_eSurname.SetFocus;
end;

При нажатии кнопки возникает ошибка:
AddPerson_ADOQuery1: CommandText does not return a result set.
Хотя после нажатии кнопки ОК данные в базу добавляются.Как поборото ошибку?


vikm   (2007-03-21 18:39:00) [1]

Спасибо, всем вопрос закрыт. Только что и сам понял, что нужно использовать метод ExecSQL. Проверил, все работает ОК. Отдельное спасибо Desdechado.


Desdechado   (2007-03-21 18:32:00) [2]

> AddPerson_ADOQuery1.Open; //открывается запрос
Открывается не запрос, а набор данных (Result set). Но твой запрос INSERT такого вернуть не может, поэтому ошибка. Используй метод ExecSQL.


Наверх

Титульная страница Поиск, карта сайта Написать письмо