在wincc6里面用vbs编了一段代码,访问一个外部的sql数据库,根据输入的数字去查询,返回结果显示到msflexgird控件中去。
发现一个怪现象,用recordset的fields的count属性无法获取实际的记录数(固定为4)!!!
而后面的代码却能够把该记录集中的所有记录显示到msflexgrid控件中去,这说明前面的recordset对象是没问题的啊。不得已写了一段很傻的代码来获取记录数:
If Not objrs.eof Then
objRs.movefirst
RecordNum=0
Do Until objRs.eof
RecordNum=RecordNum+1
objRs.movenext
Loop
Else
RecordNum=0
End If
本来应该一句话就可以了哈:
RecordNum=objRs.Fields.Count
发现上面这句话返回值不管返回几条记录,始终为4,纳闷啊。退出wincc重新运行工程也是一样。
求高人指教!!!
问题补充:
不好意思,弄错了。
不过昨天我也试过了recordset的recordcount属性,返回为-1,查了下资料,说为-1 的话就说明不能得到实际记录数。
------------------------
又查了下,得到一个ms正确的的解答:
通过Connection的Execute方法执行的查询语句不能返回Recordcount
通过Recordset的Open方法执行的查询语句可以返回Recordcount
------------------
晕,白兴奋了。用recoredset的open方法执行select后,recordcount还是返回-1,我无语了,继续查。
---------------
有人说是游标问题,有道理。
----------------
终于搞定了,就是游标问题。
最佳答案
recordset的fields的count返回的是字段的数量,当然是固定的。获得记录数量用oRs.RecordCount即可。
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc274998.html