Access Violation

  • Автор темы Автор темы Temujin
  • Дата начала Дата начала
T

Temujin

procedure TMForm.DelBtnClick(Sender: TObject);
var DlgRes: Integer;
begin
DlgRes := MessageBox(Application.Handle, 'Вы уверены, что хотите удалить выделенную анкету?', 'Удаление анкеты', MB_YESNO or MB_ICONQUESTION or MB_APPLMODAL or MB_DEFBUTTON3);
if DlgRes = ID_YES then
begin
if dmform.mtrans.InTransaction then
dmform.mtrans.Rollback;
dmForm.MemSel.Close;
with dmform do
begin
mtrans.StartTransaction;
MemDel.UnPrepare;
MemDel.ParamByName('idi').Value:=MForm.MemGrid.Fields[0].AsInteger;
Memdel.Prepare;
MemDel.ExecSQL;
MemSel.Open;
end;
end;
end;


Код кнопки, и ниже сначала предупреждение, затем ошибка:
предупреждение


ошибка
8536ecc009ef.jpg


СУБД Interbase, связано через IBDatabase соответственно, это кнопка удаления как видно из названия, вот сижу хз че дальше делать, ругается и все тут!!=)
 
Вы бы хоть немного пошевелили мозгами и приложили хоть малейшее усилие и хотябы пошагово прогнали процедуру.
В какой строке ошибка ?
Код:
 .......
MemDel.ParamByName('idi').Value:=MForm.MemGrid.Fields[0].AsInteger;
........
один из претендентов ...
 
И к чему ВЫ это написали? В этой строке:

MemDel.ParamByName('idi').Value:=MForm.MemGrid.Fields[0].AsInteger;

и есть ошибка, вот я и спрашивал в чем эта ошибка заключается???? запрос MemDel выглядит так:

delete from MEM where INV_ID=:idi;

Я не спрашивал в КАКОЙ СТРОКЕ ошибка, и пожалуйста если хочется повыпендриваться не надо посещать эту тему мистер "Titan", своё негативное отношение к людям оставляйте у себя дома, а не в строках этого форума...
 
Я не спрашивал в КАКОЙ СТРОКЕ ошибка, и пожалуйста если хочется повыпендриваться не надо посещать эту тему мистер "Titan", своё негативное отношение к людям оставляйте у себя дома, а не в строках этого форума...

Выпендриваться тут никто не собирается и негатива нет. Но студенты, которые в каждом новом посте пишут - Я вообще не работал с Delphi, и у меня ошибка- напишите мне прогу, уже достали. К ним, Вы скорее всего и относитесь.

Код:
В этой строке:

MemDel.ParamByName('idi').Value:=MForm.MemGrid.Fields[0].AsInteger; 

и есть ошибка, вот я и спрашивал в чем эта ошибка заключается????

А как из Вашего поста можно догадаться, что ошика именно в этой строке ? Или Вы считаете это очевидным ? Я - нет. Ошибок может быть куча и по разным причинам, тем более Access Violation. Поэтому если пиши об обшибке, то кокретнее указывайте где они произошла, а не 'вот в этой процедуре'.

Ну и теперь по делу, т.к место ошибки все же указано.
Access Violation - скорее всего обращение идет к структуре, память для которой не была выделена.
- MemDel это у Вас я так понимаю Query компонент. Проверьте, чтобы его свойство ParamCheck было выставлено в true, иначе
параметры не будут определяться автоматически. (cужу по ADOQuery. Interbase у меня не установлен, поэтому проверить не получится);
Либо, если свойства нет, параметр надо создавать руками.
- возможно проблема в чтении данных из грида .

Так что если проблема в этой строке, то вариантов проблемы не много...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!