0

Создаю в delphi программу для работы с базой данных IBExpert, на форме имеются edit-ты для отображения информации и кнопки удалить,добавить,редактировать и сохранить.

При нажатии на данные клавиши выскакивает ошибка "IBQuery1: Cannot perform this operation on an open dataset.", но при этом само действие выполняется,то есть если мы например нажимали кнопку удалить, то при следующем запуске этой записи уже не будет. И так со всеми кнопками!

Как пример код кнопки удалить:

procedure TForm3.Button9Click(Sender: TObject);
begin
if (messageBox(getforegroundwindow(),'Удалить запись?','подтвердить удаление',1)=id_ok) then
begin
c:=IBQuery1.SQL.Text;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Delete From GRUPPA where ID_GR='''+id.Text+'''');
IBQuery1.ExecSQL;
IBTransaction1.Commit;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Text:=c;
IBQuery1.Prior;
readdata;
showdata;
form3.StatusBar1.SimpleText:='Группа удаленна';
end

procedure showdata;
begin
form3.id.Text:=inttostr(P_ID_gr);
form3.naimen.Text:=P_Naimen;
end;

procedure readdata;
begin
P_ID_gr:=form3.IBQuery1ID_GR.value;
P_Naimen:=form3.IBQuery1NAINEM_GR.value;
end;
5
  • @Наталия, Чтобы отформатировать код, выделите его мышью и нажмите на кнопку {} редактора.
    – Praddos
    24 апр 2014 в 17:20
  • Не Вы первая! [Посмотрите тут.Тык][1] [1]: hashcode.ru/questions/167129/…
    – Praddos
    24 апр 2014 в 17:26
  • IBQuery1.close; 25 апр 2014 в 5:44
  • где именно? 25 апр 2014 в 7:41
  • У вас кажется после строки {c:=IBQuery1.SQL.Text;}, т.е. перед каждым его использованием. По хорошему надо его закрывать как попользовались им, если он больше не нужен в текущей процедуре. 25 апр 2014 в 12:14

0

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Посмотрите другие вопросы с метками или задайте свой вопрос.