SQL.Add('Insert Into C_Keno_LSH (S_City,S_DaTing,S_Game,S_Sale_Code,');
SQL.Add('USER_ID,TZDATE,TZTIME,TZGS,XZFS,TZ1,TZ2,TZ3,TZ4,TZ5,TZ6,TZ7,TZ8,');
SQL.Add('TZ9,TZ10,TZ11,TZ12,TZ13,TZ14,TZ15,TZLX) Values ');
SQL.Add('(''01'',''01'',''01'',:S_Sale_Code,:USER_ID,');
SQL.Add('Convert(varchar(8),Getdate(),11),Convert(varchar(8),Getdate(),8),');
SQL.Add(':TZGS,:XZFS,:TZ1,:TZ2,:TZ3,:TZ4,:TZ5,:TZ6,:TZ7,:TZ8,');
SQL.Add(':TZ9,:TZ10,:TZ11,:TZ12,:TZ13,:TZ14,:TZ15,''02'')');执行完上面最后一行就报错,还没到ExecSQL就已经报错了
是怎么回事呢?  
但是如果把里面的任意一行去掉的话,就都没问题
如果你们不信的话,可以把这个语句粘贴下去试一下,不用数据库,执行完上面最后一句就已经出错了

解决方案 »

  1.   

    这是报的错
    raised exception class EAccessvViolation with message 'Access
    violation ast address 753A23A8 in module 'SQLOLEDB.Dll'
      

  2.   

    应该是你操作系统或者是delphi的问题吧?
    看看其他的ADOQuery能用不?
      

  3.   

    你先把这个sql语句东西用Message看看
    是不是你要表达的意思
    参数太多
    难免会出问题
      

  4.   

    SQL语句肯定没问题,而且如果ADOQuery的CONNCTION不写的话,也不会报错
      

  5.   

    我的ADOQuery不能动态绑定date类型的参数啊!郁闷
    那位老大知道怎么绑定吗?
      

  6.   

    to myth8860(海风) 
    你能告诉我哪个字段是DATE类型的吗?
    里面根本就没有一个DATE类型的,这个设计表的人也真烂,气死人了
      

  7.   

    楼主,我把你代码拷到我电脑里(delphi6)
    虽然没有连接上数据库(你的数据库太复杂了)
    但是没有象你说的
    没有执行到Execsql就出错啊
    是不是你的组件或delphi有问题?
    我的代码是:
    ----------------------------------------------
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with ADOQuery1 do
      begin
       Close;
       sql.Clear;
       SQL.Add('Insert Into C_Keno_LSH (S_City,S_DaTing,S_Game,S_Sale_Code,');
       SQL.Add('USER_ID,TZDATE,TZTIME,TZGS,XZFS,TZ1,TZ2,TZ3,TZ4,TZ5,TZ6,TZ7,TZ8,');
       SQL.Add('TZ9,TZ10,TZ11,TZ12,TZ13,TZ14,TZ15,TZLX) Values ');
       SQL.Add('(''01'',''01'',''01'',:S_Sale_Code,:USER_ID,');
       SQL.Add('Convert(varchar(8),Getdate(),11),Convert(varchar(8),Getdate(),8),');
       SQL.Add(':TZGS,:XZFS,:TZ1,:TZ2,:TZ3,:TZ4,:TZ5,:TZ6,:TZ7,:TZ8,');
       SQL.Add(':TZ9,:TZ10,:TZ11,:TZ12,:TZ13,:TZ14,:TZ15,''02'')');
       //ExecSQL;
      end;
      Showmessage('Here');//可以执行到这里
    end;
      

  8.   

    to Kshape
    你把你的ADOQUERY的CONNECTIONSTRING配置成你的数据库试一下,
    不用到ExecSQL,所以随便挂个数据库也无所谓,再看一下是不是
    也报错?
      

  9.   

    楼主:
    我试了,连接后果然有问题,报访问非法错误!
    但是我想问题也找到了
    主要是你SQL语句中函数的问题
    我把函数去掉,也用参数就可以了
    改后如下:
    ---------------------------------------
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     with ADOQuery1 do
      begin
       Close;
       sql.Clear;
       //sql.Add('insert into C_Keno_LSH(S_City)values(:a)');
       SQL.Add('Insert Into C_Keno_LSH (S_City,S_DaTing,S_Game,S_Sale_Code,');
       SQL.Add('USER_ID,TZDATE,TZTIME,TZGS,XZFS,TZ1,TZ2,TZ3,TZ4,TZ5,TZ6,TZ7,TZ8,');
       SQL.Add('TZ9,TZ10,TZ11,TZ12,TZ13,TZ14,TZ15,TZLX) Values ');
       SQL.Add('(''01'',''01'',''01'',:S_Sale_Code,:USER_ID,');
       SQL.Add(':temp1,:temp2,');//这里哦
       SQL.Add(':TZGS,:XZFS,:TZ1,:TZ2,:TZ3,:TZ4,:TZ5,:TZ6,:TZ7,:TZ8,');
       SQL.Add(':TZ9,:TZ10,:TZ11,:TZ12,:TZ13,:TZ14,:TZ15,''02'')');
       //ExecSQL;
      end;
      Showmessage('Here');//可以执行到这里---这里就可以到了
    end;
    ---------------------------------------
    所以,你也把你的函数去掉,做为参数
    在后面与其他参数一起,给他赋值应该就可以了祝你成功
      

  10.   

    气死我了,昨天竟然一时想不起登录密码了,只能叫它把新密码发到邮箱,可竟然连当初注册时填写的邮箱也记不起来了,真是要晕死了,所以只能重新注册一个ID了,有没有什么办法把把密码找回来啊?
    好了,闲话少说,我就是aft_st_sdto Kshape
    你说的没错,把那些换成参数是没有问题,可问题是我前面写过类似的代码,用的也是convert这个函数,怎么就没问题呢?到了这里就不行了呢?
    没问题的语句是这样写的:
    SQL.Add('Insert Into flow_ledger (USER_ID,Trade_Day,Trade_Time,Keep_Type,');
    SQL.Add('Trade_Funds,Currency) Values (:USERID,Convert(varchar(8),Getdate(),11),');
    SQL.Add('Convert(varchar(8),Getdate(),11),''L'',:Trade_Funds,''rmb'')');当初设计表的那个人也真烂,我就想不明白它为什么把一个字段分成日期跟时间两个,还用varchar()型的
      

  11.   

    可能你系统里少了这个SQLOLEDB.Dll文件吧