我有一个主从表, qryMaster, qryDetail,我在qryDetail上增加了一个计算字段ID.
然后在qryDetail的OnCalcFields中写入下面的事件:
qryDetail.FieldByName('ID').AsInteger := qryDetail.Recno;
可是结果却全都是-1,真是搞不明白?!
然后在qryDetail的OnCalcFields中写入下面的事件:
qryDetail.FieldByName('ID').AsInteger := qryDetail.Recno;
可是结果却全都是-1,真是搞不明白?!
解决方案 »
- 关于获取jpge文件分辨率遇到的问题
- 菜问题:Trunc和Round有啥区别?
- 我的nt服务程序为什么不执行?
- 怎么样做一个Service application?有没有例子呢?
- 用Delph做pos怎么与外围硬件(如形码识别)相连??
- 请问怎么窗口发生最小化、最大化、恢复事件?
- 高手请进!当位图的大小只有几有百字节时为什么有ExtractFileExt()函数来得到文件的扩展名时出问题??。
- ADO 异步存取的时侯, 记录集定位错误的问题( 有兴趣来看看啊, 答对给分)
- 程序退出时,内存释放问题
- help & manual生成chm文件乱码
- ---有请南帝北丐东邪西毒等高手进来看看---!!
- 请教一个关于框架为什么不能显示的问题
这样做并不是一个好方法。以前我在单个表时,在Query的OnCalcFields中写事件是可以的,为什么换成主从表就不行了呢?想不通
不过可以用:qryDetail.FieldByName('ID').AsInteger :=1;测试以下
是不是你的数据集没有后滚呢 所以显示的是-1
ID当然是整形喽,它只不过是我在Query中的一个新增字段,类别设成了计算字段而已。
注意我是写在qryDetail的OnCalcFields事件中的,它是自动向下移动记录的。现在问题的关键是 为什么得出的Recno是-1???? 说一说我主表qryMaster的SQL语句:SELECT * FROM SCJS_JHGL_BMSCJHZB
细表qryDetail: SELECT * FROM SCJS_JHGL_BMSCJH WHERE JHBH=:JHBH
qryDetail的DataSource设成了qryMaster的DataSource
在你OnCalcFields的时候你的从表中是没有数据的 所以显示为-1
而且如果你是一条数据对应一条数据的化 你的从表的recno就算计算出来以后也是1
不会增加的 因为你的数据集中最多就一条数据
你把qryDetail.FieldByName('ID').AsInteger := qryDetail.Recno;
后面得qryMaster
我的主表只有一条记录,但从表却有十一条,并且他们也都打开了。为什么还会得到-1呢?
我也发现了同样的问题。我一开始用DBE连Oracle,发现Recno的值总是-1,然后用ODAC(一套连接Oracle的控件),却能够得到正确的记录号!!
看来还是对数据库某些方法的使用不够深入哇!再次感谢 manfeng!