Access Violation

Тема в разделе "Delphi - Базы данных", создана пользователем Temujin, 1 июн 2009.

  1. Temujin

    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;


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

    ошибка
    [​IMG]

    СУБД Interbase, связано через IBDatabase соответственно, это кнопка удаления как видно из названия, вот сижу хз че дальше делать, ругается и все тут!!=)
     
  2. Titan

    Titan Well-Known Member

    Регистрация:
    10 июн 2004
    Сообщения:
    105
    Симпатии:
    0
    Вы бы хоть немного пошевелили мозгами и приложили хоть малейшее усилие и хотябы пошагово прогнали процедуру.
    В какой строке ошибка ?
    Код (Text):
     .......
    MemDel.ParamByName('idi').Value:=MForm.MemGrid.Fields[0].AsInteger;
    ........
    один из претендентов ...
     
  3. Temujin

    Temujin Гость

    И к чему ВЫ это написали? В этой строке:

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

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

    delete from MEM where INV_ID=:idi;

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

    Titan Well-Known Member

    Регистрация:
    10 июн 2004
    Сообщения:
    105
    Симпатии:
    0
    Выпендриваться тут никто не собирается и негатива нет. Но студенты, которые в каждом новом посте пишут - Я вообще не работал с Delphi, и у меня ошибка- напишите мне прогу, уже достали. К ним, Вы скорее всего и относитесь.

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

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

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

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

    Так что если проблема в этой строке, то вариантов проблемы не много...
     
Загрузка...

Поделиться этой страницей