做一动态查询,在控件中的sql属性中写sql语句,动态的部分采用params的方法,在程序中将params赋值如query1.params[0]:=combobox1.text;但open后什么都没查,我感觉是值没赋进去。如果是本地数据库好象可以,但是我是连远端的oracle服务器,这是怎么回事?

解决方案 »

  1.   

    如果是本地数据库好象可以//什么是好象?行还是不行?
    把你的sql语句贴出来。
      

  2.   

    我是用delphi连oracle数据库,在query的sql属性中写如:
    select avg(sxchb) HB,avg(sxcplt) PLT,avg(sxcwbc) WBC,avg(snk) NK,
    avg(scd3) CD3,avg(scd4) CD4,avg(scd8) CD8,avg(salt) ALT ,
    avg(sast) AST ,avg(srgt) RGT,avg(sakp) AKP, avg(stbil) TBIL,
    avg(sdbil) DBIL,avg(stba) TBA,avg(sa) A,avg(sg) G,avg(sua) UA,avg(sbun) BUN,
    avg(scr) CR,avg(scho) CHO,avg(scea) CEA,avg(ssf) SF,avg(sldh) LDH,
    avg(sb2mg) b2mg,avg(safp) AFP,avg(sca125) CA125,avg(sca199) CA199,
    avg(sca50) CA50
    from mpmse
    where scstate ='前' and pdiag = :pdiag and pstage = :pstage在程序中将:pdiag和:pstage赋值如下:
    close;
    unprepare;
    params[0].asstring:=diagcobx.text;
    params[1].asstring:=stagecobx.text;
    prepare;
    open;
      

  3.   

    好像应该是
    query1.Parameters.ParamByName(':pstage').Value:=diagcobx.text;至少在ADO
    zho
      

  4.   

    不行,是不是delphi的一个bug,我是根据帮助写的
      

  5.   

    好像应该是
    query1.Parameters.ParamByName('pstage').Value:=diagcobx.text;
      

  6.   

    不行,我用的是BDE,查询结果用dbtext控件显示
      

  7.   

    query1.Params.ParamByName('pdiag').AsString:=diagcobx.text;
    注意是pdiag 没有‘:’啊 ,呵呵  Params
      

  8.   

    query1.ParamByName('pdiag').AsString:=trim(diagcobx.text);
    看看可以吧,
      

  9.   

    除了
    query1.ParamByName('pdiag').AsString:=trim(diagcobx.text);
    还要
      Query1.ParamCheck:=True;(默认值为true)
    如果楼主不小心设成了False,那肯定是没有结果了。
      

  10.   

    还有,你的远端服务器有没有数据呀?如果不报错,并且open 后不见数据,那就要查查远程服务器改表到底是不是空表
      

  11.   

    远端数据库有数据,上面所有的方法都试过了,若不用参数的方法可以动态查询,是不是个bug
      

  12.   

    delphi在这上面不会有问题.肯定是程序和数据的问题.试一试数据库,看数据库里字符串是不是有前后空格
      

  13.   

    用DBEXPRESS吧,BDE现在快淘汰。哦?
      

  14.   

    建议你改用ADO,别用BDE了,ado的ADOQuery控件不会有那么多问题