我在Form1中加入了一个adoconnection,一个adoquery,一个combobox,一个botton设置了adoconnection和adoquery属性后在form的oncreate事件中加入如下代码:
adoquery1.first;
while not adoquery1.eof do
begin
  combobox1.items.add(adoquery1['用户名']);
  adoquery1.next
end;
在botton的click事件中加入如下代码:
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.add('delete from 用户 where 用户名=(:name)');
adoquery1.Parameters.ParamByName('name').Value:=combobox1.Text;
adoquery1.ExecSQL;
出现如下错误:请大侠快救救我!
Project Project1.exe raised exception class  EAccessViolation with message ‘Access violation at address 1F478CAB in module ‘msado15.dll’, write of address 00FA7030’,Process stopped, Use step or Run to continue.

解决方案 »

  1.   

    其实你把buttonclick事件改一下,
    procedure TForm1.Button1Click(Sneder:TObject);
    begin
       AdoQuery1.Active:=False;
       AdoQuery1.sql.clear;
       ADoQuery1.sql.add('delete from 用户 where 用户名=:Name');
       AdoQuery1.parameters.paramValues['Name']:=ComboBox1.text;
       AdoQuery1.active:=True;
    end;
    试试看,我以前有过这个现象,和Query组件不一样的,
      

  2.   

    while not adoquery1.eof do
    begin
      combobox1.items.add(adoquery1['用户名'].Value);//你的代码没有取值
      adoquery1.next;
    end;
      

  3.   

    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.add('delete from 用户 where 用户名=:name');//把括号去掉
    adoquery1.Parameters.ParamByName('name').Value:=combobox1.Text;
    adoquery1.ExecSQL;
      

  4.   

    adoquery1.SQL.add('delete from 用户 where 用户名=:name');
      

  5.   

    这是ado的毛病
    你用的是多少版的在什么操作系统下什么库?
    mdac_type2.7.exe
      

  6.   

    我用delphi6在win2000 sever下用sql sever做数据库。
      

  7.   

    在各位大虾的指导下我做了修改但仍是同样的错误。真是太奇怪了,我上午做的时候只是在botton的click事件中加入如下代码:
    adoquery1.sql.clear;
    adoquery1.sql.add('delete from 用户 where 用户名=''阿毛''');
    adoquery1.execsql;
    有时出错,有时不出错。令我百思不得其解。