表js中存放的分别是
tj(条件)     ys(运算公式)
xj>20        bm='hhhhh'
................
表ybbdy中存放被计算的数据
字段有xj,bm,name,....
下面代码adoquery1从表js中取出条件,放到变量中
adoquery2利用条件计算,在SQL语句中,允许使用ktj,但不允许kys,系统提示“应用程序定义paramter对象的方式不适当”,请教,我如何实现我的计算?是不是sql语句中不允许这样做?
我想实现的功能类似vfp中的宏代换,把不同的计算式放至变量kys中,代入update语句中以实现对数据库不同的运算。至于计算式的内容由用户在专用的模块中写入,这样无论怎样变化,程序都能适应,系统开发者不用维护程序源码,以增加程序的灵活性.
我的思路是否可行?各位大侠有何高见?procedure TForm1.Button1Click(Sender: TObject);
var
  ktj,kys:String;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from js');
ADOQuery1.Open;
ktj:=ADOQuery1.FieldValues['tj'];  //ktj值是'xj>20'
kys:=ADOQuery1.Fieldvalues['ys'];  //ksy值是'bm='hhhhh''
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('update ybbdy set '+kys+'  where '+ktj);//这句不行
ADOQuery2.ExecSQL;
end;  

解决方案 »

  1.   

    把那个UPDATE语句SHOW出来看一下,看看显示的是什么
      

  2.   

    你的ksy值有问题呀。改成 bm = '''hhhhh''' 试试。
      

  3.   

    其实还是你在组SQL语句时,没有注意里面的引号的问题。
      

  4.   

    你的ksy值有问题呀。改成 bm = '''hhhhh''' 试试。
    ============================
    提示update语法错误
      

  5.   

    是的,是引号的问题,不能象你那么写,就像 gzkhrh(gzkhrh) 说的。
      

  6.   

    说明:我用的是mdb数据库。
    ---------------------------
    把那个UPDATE语句SHOW出来看一下,看看显示的是什么
    =============
    怎么做?
      

  7.   

    你这样吧,单步跟踪一下,你先将这个SQL语句在一个string变量里赋值,
    sSql := 'update ybbdy set '+kys+'  where '+ktj;
    ADOQuery2.SQL.Add(sSql);
    然后看看sSql的内容到底是什么,你可以有针对性的修改一下。
    sSql语句里应该是下面这样的才是对的:
    'update ybbdy set bm='hhhh' where xj>20'
      

  8.   

    TO:gzkhrh(gzkhrh) 你的写发没有问题,你说你的那句不行,到底是怎么不行,报什么错误!
      

  9.   

    系统提示“应用程序定义paramter对象的方式不适当”