环境:应用服务器里有一个TDatabase,TQuery控件,TQuery里面的SQL语句是带参数的。连接的是Oracle数据库。
在客户端,如果重新赋值SQL就可以,但我传递参数执行出错:operator not applicable.
请问怎么处理?

解决方案 »

  1.   

    先 Query.Close;
    再赋参数  Query.ParameByName("afasdf").as.. := ....
    然后 Query.Open;
      

  2.   

    我在客户端用的是TClientDataSet.没办法象你说的这样吧。
      

  3.   

    TClientDataSet一样的, 在设计时选中TClientDataSet控件,然后右键在弹出的菜单中选择Fetch Params之后就可以把TClientDataSet当作TQuery一样用了.
    如:
      ClientDataSet1.Close;
      ClientDataSet1.Params.ParamByName('adff').AsString := 'dfasfas';
      ClientDataSet1.Open;
      

  4.   

    我写法上应该是对的,跟DreamStrat(梦启动的摇篮…) 说的一样,但就是不行。
    我也不知道出错在那里。用commandtext改变SQL又可以。请高手多多赐教。
      

  5.   

    会不会是中间层与客户的参数类型或定义不同?
     将里面的参数删除,然重新Fetch Params一次 如果还是问题,就没碰到过了
      

  6.   

    参数是一样的,我Fetch了多次。
    我再试试。
      

  7.   

    可能是参数SQL被解析坏了。DELPHI的参数解析有问题,复杂的SQL我跟踪,经常被分析得混乱。怎么也无法解决,后来绕过此问题:把复杂语句定义为"SELECT... WHERE A=%0:S AND B=%1:S AND D=%1:S.."的方式,然后在FORMAT函数里传参生成固定SQL,然后执行此固定SQL.
      

  8.   

    stubborndonkey说的应该可行。不过相当于把SQL移到了客户端。