在一库文件里定义一个函数Add_Evaluate,其中引用库文件DAHelper的ExeSqlNoQuery函数是用来执行T-SQL语句的通用函数
Function Add_Evaluate(s1,s2,s3:string):boolean;
var
  sql:string;
  begin
    sql:='udate 检测记录 set BCIs=BCIs+'+''''+s1+''''+','
          +'BCIx=BCIx+'+''''+s2+''''+'where ID='+''''+s3+'''';
          result:=DAHelper.ExeSqlNoQuery(sql);
  end;
程序编译虽然正常,运行总是提示错误:“=附近有错误”,甚至把函数参数直接用数字代替运行还是提示错误,请大家帮忙改错,多谢!

解决方案 »

  1.   

    什么数据库?
    access数据库的字符相加是要用&
      

  2.   

    不是字符,是BCIs和BCIx的累加,s1、s2是两个参数
      

  3.   

    不是字符就把所有的四个引号去掉ql:='update 检测记录 set BCIs=BCIs+'+s1+',BCIx=BCIx+'+s2+' where ID='+s3;
      

  4.   

    自己动手丰衣足食加一句ShowMessage(sql);
    把sql语句放在查询分析器里执行 就知道什么错误了
      

  5.   

    BCIs,BCIx,id的字段类型是什么?s1,s2,s3的值是什么?
      

  6.   

    在数据库表里列id int型,BCIs和BCIx是numeric(5,2)类型;我直接使用函数Add_Evaluate('5.2','4,5','6')但是不行;我把参数s1 s2改成single类型也没搞成;
      

  7.   

    看不懂我在8楼说的?我的意思是在
    result:=DAHelper.ExeSqlNoQuery(sql);
    前面加一句ShowMessage(sql);
    运行到这里时,把sql直接拷贝到查询分析器里去执行就知道了
      

  8.   

    希望你的Add_Evaluate('5.2','4,5','6')是笔误ql:='update 检测记录 set BCIs=BCIs+'+s1+',BCIx=BCIx+'+s2+' where ID='+s3;
    上面这句应该是没有问题,如果不行,请按12楼所说把语句放到查询分析器里面试试
      

  9.   


    sql:='udate 检测记录 set BCIs= '''+FloatToStr(BCIs+S1)+''','
      +'BCIx = '''+FloatToStr(BCIx+S2)+'''where ID = '+s3+'';
    先计算,然后将结果转化为字符串,再赋值给BCIS,BCIx.