用adoquery写access数据,用的是insert语句,但是在execsql的时候出现错误,“access violation at address 1b015e7 in module 'msjet40.dll'”,这是什么原因?我以前用这个语句可以运行。
with dm1.ADOQuery1 do   
       begin
        close;
        sql.Clear;
        sql.Add('insert into Table1(field1) values (:a1)');
         parameters.ParamByName('field1').Value:=a1;
        execsql;
       end;

解决方案 »

  1.   

    中间一句错了。
    parameters.parambyname('a1').value:=a1;
      

  2.   

    我重新装了mdac2.8了,而且我在其他机器试过同样的语句,出现同样的错误,应该不是这个问题。
      

  3.   

    with dm.Adoquerytemp do
          begin
            CLose;
            SQL.Clear;
            Sql.Add('insert into TAB_bdnr Values (:a1,:a2)');
            Parameters[0].Value:=Frmbdlr.Edit2.Text;
            Parameters[1].LoadFromStream(FStream,ftblob);
            ExecSQL;
          end;
      

  4.   

    看不出很明顯的錯啊!如果 SQL語句錯, 也不會是非法地址訪問啊
      

  5.   

    你操作的时候要先把access中打开的这个库关掉!