Oracle 8i + delphi 6 使用 BDE 连接.
FORM1 中各放入一个 TQUERY, 一个TDATASOURCE, 一个TDBGRID
TQUERY 设置为: DATASOURCE='',PARAMS为空,PARACHECK为TRUE,DATABASENAME='SWB',SQL为空
TDATASOURCE 设置为: DATASET=QUERY1,AUTOEDIT=FALSE;
TDBGRID 设置为: DATASOURCE=DATASOURCE1;
运行时,先修改TQUERY 的 SQL 属性再进行查询,代码如下:
  query1.close;
  query1.SQL.Clear;
  query1.SQL.add('select username, room, idnum, oprtime, action from dianbaolg where username=:mypar order by oprtime');
  query1.ParamByName('mypar').asstring:=edit1.Text;
  query1.open;
每次到 query1.open 时,提示 BDE 错误为 "operation not applicable".
请问各位这是什么问题?如何解决?

解决方案 »

  1.   

    query1.ParamByName('mypar').Value:=edit1.Text;  拭一下
      

  2.   

    把order by oprtime去掉试试
      

  3.   

    如果你再Open的时候edit1.Text<>''的话,你的语句是正确的。
      

  4.   

    用你的程序作一个最简单的查询可以作吗。'select * from ...'另外一个方法是改成这样试试:
    query1.close;
      query1.SQL.Clear;
    query1.SQL.add('select username, room, idnum, oprtime, action from dianbaolg where username=''+edit1.text+''' order by oprtime');
    query1.open;
      

  5.   

    非常感谢你们的解答,虽然按大家提供的方法没有很好地解决问题,还是非常感谢各位!我摸索出了一种方法,但究竟是什么原因造成的?我还是不明白?烦劳各位帮助指点一下,代码如下:  query1.close;
      query1.sql.text := 'select * from dianbaolg
         where username like '''+'%'+edit1.text+'%'+
         ''' and oprtime between '''+
         formatdatetime('yyyy-mm-dd',datetimepicker1.date-1)+'%'+
         ''' and '''+formatdatetime('yyyy-mm-dd',datetimepicker2.date)+'%'+
         ''' order by oprtime';
      query1.Open;