用delphi写的系统,基本功能是select语句查到后用Update语句修改一个表内的数据,很基础的SQL语句,自己机器上使用正常,但是到了用户的机器上就无反应,UPDATE不执行,我将sql语句写到txt文本里,看到语句也都查到了,可是就是不执行,晕了。用户的机器只安装了BDE,数据库和delphi都没有安装,应该没有关系,因为我写的其他很多程序都没发现这样的问题,实在摸不到头脑,急急急急急急急!

解决方案 »

  1.   

    我怀疑是用户机器数据库访问之类的配置有问题,可是别的程序就能update,需不需要加个补丁什么的?
      

  2.   

    代码没有问题阿,我这里执行正常,我同部门的同事机器上执行也正常
    dm.qryexec(adotemp,'update dainittei set tks_date='''+dm.adotmp.fieldbyname('min').asstring+''',knr_date='''+dm.adotmp.fieldbyname('max').asstring+''' where rec_id='''+recid+''' ');Function TDM.QryExec(var qry: TQuery; sqltxt: string) :Boolean;
    begin
     if not ADOConnection1.Connected then
       abort;
      with qry do
      begin
        close;
        sql.clear;
        sql.add(sqltxt);
        sql.savetofile('c:\qryexec.txt');
        try
          execsql;
        except
          result := false;
          exit;
        end;
        result := true;
      end;
    end;就这么条语句,根中用户txt文件(update dainittei set tks_date='2004/11/12',knr_date='2004/11/22' where rec_id='1154181' 
    )都能查出来,可是就是不执行
      

  3.   

    你用的是什么连接数据库啊,是不是ado啊,在客户机装个ado试试呢
      

  4.   

    这也不是办法阿,那么多用户端,哪能都给他们装ado呢,而且这应该不是根本问题,因为其他系统也都用ado,但是都没有问题
      

  5.   

    如果你的客户端是98系统可要按照ADO啊。
      

  6.   

    跟机器环境没关系,你在客户端程序没有动静但是不执行是你代码里有个漏洞
     try
          execsql;
     except
          result := false;
          exit;
     end;
    事实上execsql没有执行,其中应该有问题,但是你用异常把错误打包自动跳出,系统无法提示,你去掉这个异常,根据系统提示很快就能找到真正问题所在。