![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка 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.