动态查询结果为空时显示'can't find object',且后面的程序没有执行,该怎样处理呢?(100分)

  • 主题发起人 主题发起人 小燕
  • 开始时间 开始时间

小燕

Unregistered / Unconfirmed
GUEST, unregistred user!
我在客户端执行
ClientDataSet1.Close;
ClientDataSet1.CommandText := Mssql;
ClientDataSet1.Open;
当结果为空时显示'can't find object'?
服务器端是Query,用SocketConnection连接。
 
sql语句有错。
 
你要检索的表/视图可能不存在或写错了.
 
表或视图不存在,
 
...connection.connected=true??
 
我的表或视图并没有提示没有打开
mssql := 'select * from TWDGL where PROJECT = Edit1.Text';
时出现上述的错误但是用下句就可以显示,但是下句为模糊查询,现在我想精确查询
mssql := 'select * from TWDGL where PROJECT like ''%' + Edit1.Text + '%''';
to jqw:
connection.connected=true;已经连接;
server端的RequestLive 设为True.
如果设为False,就会出错如下:
Key Violation:
[Oracle][ODBC][Ora]ORA-00904:无效列名。
Oracle版本是8.1.5.
 
哈哈哈哈
mssql := 'select * from TWDGL where PROJECT = '+Edit1.Text;
 
to Another_eYes:
用mssql := 'select * from TWDGL where PROJECT = '+Edit1.Text;
之后仍然显示'can't find object';
而且当Edit.text为空时显示
Invalid use of keyword
Token:=
Line Number:2.
 
那么请您先确认有名为"TWDGL"的表存在, 而且它处于您当前访问的库中, 并且有名
为PROJECT的字段, 并且它的类型是numeric或者decimal或者bit型.
这样您再运行这句就肯定成功了. :-)
 
唯一的原因是没有找到你所定义的表或表中没有相应的 字段。
 
我所使用的库Oracle8.1.5,TWDGL的表肯定存在并已经打开PROJECT字段也存在,
且用模糊查询可以得到响应的结果。
我的PROJECT为varchar2类型,Oracle中的数据类型。
 
我也碰到过这样的问题在两层结构中可以得到正确的结果,
但在三层结构中就会出现错误。
对此表示关注!!
 
不要用*,你换成列名试试
 
改成 mssql := 'select * from TWDGL where PROJECT =''’+ Edit1.Text+''''试试
 
(1)SERVER 端的QUERY要全部关闭了!然后客户端查询时再打开!
(2)使用:
mssql := 'select * from TWDGL where PROJECT '''+ Edit1.Text +'''';
 
我也刚刚碰到了,我将requestlive 设为False没事,设为true,错误条件出来,
但其它同样用法的窗体没错,我也不知为何。但可以肯定不是sql语句问题,应该
是系统问题。
 
同意zhiming822的意见,应该使用mssql := 'select * from TWDGL where PROJECT =''’+ Edit1.Text+''''
 
你尝试下不要用DataSetProvider生成SQL并进行处理,而使你SQL的直接交由TQuery进行处理,
办法是将ResovleToDataSet设为True
 
1、检查ClientDataSet1.DataSetProvier 的值
2、SQL语句要正确
3、AppServer的DataSetProvier的Options的poAllowCommandText设置为 True
 

Similar threads

后退
顶部