with ADOQuery1 do
  begin
       Close;
      Sql.Clear;
      Sql.Add('select * fromdata where ');
      Sql.Add('rq=:Srq');
      Parameters[0].Value := '200-05-01';
      Open;
      if RecordCount > 0 then    Exit;
      Sql.Clear;
      Sql.Add('insert into yy_data');
      Sql.Add('(bh,bsrq) values ');
      Sql.Add('(:Sbh,:Srq)');
      Parameters[0].Value := '3876297';
      ExecSql;
    end;
    提起示错误为:
   access violation at address 1f487cab in module 'msado15.dll'
  write of address 01ed6020
   在BDE下没有问题,用google搜索了一下说是版本问题,但没有找到
能解决该问题的版本。我不想分开执行,那样会累死人的。

解决方案 »

  1.   

    ??怎么内容看不见!  with ADOQuery1 do
      begin
           Close;
          Sql.Clear;
          Sql.Add('select * fromdata where ');
          Sql.Add('rq=:Srq');
          Parameters[0].Value := '200-05-01';
          Open;
          if RecordCount > 0 then    Exit;
          Sql.Clear;
          Sql.Add('insert into yy_data');
          Sql.Add('(bh,bsrq) values ');
          Sql.Add('(:Sbh,:Srq)');
          Parameters[0].Value := '3876297';
          ExecSql;
        end;
        提起示错误为:
       access violation at address 1f487cab in module 'msado15.dll'
      write of address 01ed6020
       在BDE下没有问题,用google搜索了一下说是版本问题,但没有找到
    能解决该问题的版本。我不想分开执行,那样会累死人的。
      

  2.   

    你到微软的网站下载一个最新的ADO试试
      

  3.   

    再说明一下,我用sql server2000没有问题。
    win98第二版+Delphi6 用sybase sql anywhere5.0 就出现上面的问题
    ado2.5 2.6 2.7 我都试了,还是出现上述问题
    有没有人用sybase sql anywhere5.0 的帮帮忙
      

  4.   

    好象现在最新版本就是ado2.7版本了
      

  5.   

    我刚才也出和楼主一样的问题,下了
    最新的MDAC_TYP.EXE 2.7版本安装后还是同样的问题,不过后来检查adoconnection连接串时发现在使用了
    本地ODBC连接,所以出现上述问题,将adoconnection
    的连接直接连向数据库,问题就没有了,而且速度很快
      

  6.   

    请问ad100(蓝羽),怎样用ADO直接指向数据库(sybase sql anywhere)?
      

  7.   

    with ADOQuery1 do
      begin
           Close;
          Sql.Clear;
          Sql.Add('select * fromdata where ');
          Sql.Add('rq=:Srq');
          Parameters[0].Value := '200-05-01';
          Open;
          if RecordCount > 0 then    Exit;      Close;   //加上这句试试      Sql.Clear;
          Sql.Add('insert into yy_data');
          Sql.Add('(bh,bsrq) values ');
          Sql.Add('(:Sbh,:Srq)');
          Parameters[0].Value := '3876297';
          ExecSql;
        end;
      

  8.   

    Sql.Clear;
          Sql.Add('insert into yy_data');
          Sql.Add('(bh,bsrq) values ');
          Sql.Add('(:Sbh,:Srq)');      Parameters[0].Value := '3876297';
    //为什么没有 Parameters[1].Value   ??? 
          ExecSql;
        end;
      

  9.   

    不是ado 的问题 
    不要用Parameters[0].Value 用Parameters.ParamByName('Srq').value
      

  10.   

    yyb2000(三流编程机器)已经指出了问题所在了。
    不过某些ADO的驱动的确是有点问题的。比如access的ADO驱动,当使用sum函数时就会在调试的时候出现出错提示,但编译后直接运行,错误又被屏蔽了,而且执行结果正确,但在调试时出现错误提示总是令人不舒服的。
      

  11.   

    不是我SQL写错的问题,ADO通过ODBC连接,先OPEN,再EXECSQL,就会出错。
    我所有版本都试过了,包括2.60.6526.0版。with ADOQuery1 do
      begin
           Close;
          Sql.Clear;
          Sql.Add('select * fromdata where ');
          Sql.Add('rq=:Srq');
          Parameters[0].Value := '200-05-01';
          Open;
          if RecordCount > 0 then    Exit;      Close;   //加上这句试试      Sql.Clear;
          Sql.Add('insert into yy_data');
          Sql.Add('(bh,bsrq) values ');
          Sql.Add('(:Sbh,:Srq)');
          Parameters[0].Value := '3876297';
          Parameters[1].Value := '2002-02-01';
          ExecSql;
        end;这样还是会出错的。
      

  12.   

    也许你用两个ADOQUERY分别执行可能会没问题,我用ADO和foxpro开发过一个程序,出现了类似的问题,同一个ADOQUERY,如果执行了OPEN,就不能执行EXECSQL,只能继续执行OPEN。我当初搞了好几天才发现原来还有这种事情的。
      

  13.   

    至于sybase会不会也有这情况我就不知道了,foxpro是肯定有这情况的。
      

  14.   

    都告诉过你不要用ADO通过ODBC连接,
    这样会出错的,要直接连数据库,
    比如说,用SQL server,
    在adoconnection生成连接串的的wizard中,
    直接用服务器的IP,驱动是选 for ms sql server
    不要选 for odbc的!!!连接直接连向数据库,问题就没有了,而且速度很快
    如果你用的是别的数据库,要用到odbc
    就不要用ado
      

  15.   

    如是用sql server 肯定没有问题,但我现在现在问的问题是
    如果sybase sql anywhere5.0怎样解决,真的没人能回答吗?
    ADO不通过ODBC能连sybase sql anywhere5.0吗?
    我的用是sybase sql anywhere5.0单机版。
      

  16.   

    查了一下资料,好象sybase sql anywhere不支持ADO,不是这些家
    伙再干什么,如果有有好办法,写信给我,到时给分.
    [email protected]