不知道是哪个的问题:TDBTreeView、TDxDbGrid、Tquery,小弟我实在搞不定!请求帮助!!(200分)

  • 主题发起人 主题发起人 playlife
  • 开始时间 开始时间
P

playlife

Unregistered / Unconfirmed
GUEST, unregistred user!
详细情况如下:
这是一个原来运行很正常的exe文件,但当我对query.sql语句进行了更改后就报错。
一、左边为一TDBTreeView(fczytree),节点为分级加载,第一级和第二级用一Query
写好语句的,到第三级为动态加载;
二、右边为一个TDxDbGrid,当光标定位在树的第一级和第二级时,TDxDbGrid不加载数据,到第四
级时才加载数据;
三、加载数据时,由Query动态写出sql语句,问题出来了,进行aQuery.open时,
报错:'Project ClientMng.exe raised exception class EDBEngineError with mesage 'Could not
find object '. Process stopped. Use Step or Run to continue'
原query.sql.text为:'select * from yzzl where glcid =1 and yzzl_cstid = ' +
fczytree.selected.text
现在为:'select * from yzzl where glcid = 1 AND yzzl_olddata = 1 and codename = '
+ fczytree.selected.text;
也就是说,我只是将sql语句中多加了个where条件就报错了,如果去掉则又正常。实在是不
知道什么原因。请从高手指点在下,小弟感激不尽!!!
 
問題應該出在SQL 語句上.但你的資料太少,不好判斷.
你可先檢查 yzzl_olddata 和codename 兩字段名是否寫錯
 
回楼上:
语句是绝对不会错的,因为我在sql查询分析器上运行通过。(上面语句中的codename应为yzzl_cstid)
另外,奇怪就在这里,原来的sql语问不动则能通过,只是条件换了一下就报错,无论是用TQuery还是
TADOQuery。事件流程是这样的:单击左边树向导的节点后就执行load_data存储过程,然后再
将AQuery中选出来的(select * from yzzl where ....)数据引用到右边的TDxDbGrid,再进行数据的
增、册、改,保存,退出。
问题的确很隐蔽,又无法跟踪到报错的语句上,只要open就会出这个错误。几天了,都不能通过。
我加上的yzzl_olddata为bit型,只是为了对yzzl这个表的记录范围进行刷选用的。
 
'select * from yzzl where glcid = 1 AND yzzl_olddata = 1 and codename = '''
+ fczytree.selected.text+'''';
 
回楼上,我这里是简写,没有写全,不好意思让你给写全了。
再次说明,语句绝对没有问题,'select * from yzzl where glcid = 1 AND yzzl_olddata = 1 and codename = '''
+ fczytree.selected.text+''''是这样子写的,将ctrl+f7跟踪到的sql语句放到sql查询分析器
中运行都很正常,另外,我将语句直接写死:
aquery.sql.text := ('select * From yzzl where glcid = 1 and yzzl_olddata = 0 and
yzzl_cstid = ''YHG-101F''')也是不行。
很苦恼啊,为什么sql语句一换就不行呢?去掉上面的and yzzl_olddata就正常。是不是出在
后台表的问题啊?我yzzl_olddata是bit(也改成过int型一样),允许空。目前数据表中的该
字段全部赋值为0。请大家帮帮我吧。谢谢!!
 
俺在线等待答复,如能解决,我可以再加100分!!急盼大家指点!!!
 
数据库有没有yzzl_olddata这个字段
 
回楼上,字段和语句都没有问题---将跟踪到的语句拷贝到sql查询分析器中运行正常。
,我也让其他同事看过,都查不出是什么原因。估计各位没有环境也很难回答这个问题。
只是很纳闷,这query.open操作与其它控件是否有关系?按常理来说是不可能出现这个情况的。
目前,我已通过其它的方法解决了这个问题(即不改这个query.sql.text),用另外一个
途径来解决。谢谢各位的回复!!
 
i think that
it is your sql clause is a fault.
it looks like what nongying writes.
and perhaps in your sql have a look at your field name and table name.etc object.
[8D][8D][8D]
 
回楼上,字段、条件子句和表名称等都不会错。后来我再试过这样处理:
将该query的CachedUpdata属性值改成True,问题不会出现了,可以进入并且显示都很正常,但又出来了一个
新的问题,那就是query.post不起作用(无论是用TQuery还是TADOQuery),也就是无法保存数据(数据更新是
由TUpdateSQL来完成的)!!!真的是很怪。搞得我头痛得很。现在我没有这样改下去了,通过另外的方法实
现了要达到的目的。但如果大家有兴趣的话,我可以将源代码传给大家,让大家看一下。
再次感谢上面几位朋友的回复!我会将200分别送给各位的,谢谢!!
 
后退
顶部