首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

mshflexgrid及存储过程的奇怪有关问题

2012-02-17 
mshflexgrid及存储过程的奇怪问题环境:VB6+SP6 ,MS SQL2000+SP4内容:1,在VB6中调用 SQL2000的存储过程,然

mshflexgrid及存储过程的奇怪问题
环境:VB6+SP6 ,MS SQL2000+SP4
内容:
1,在VB6中调用 SQL2000的存储过程,然后将结果 set mshflexgrid1.datasource=ado1.rs
2,存储过程中就一条语句 select A1,A2,A3,A4,A5......A13 from table1

测试如下:
1,如果直接将select A1.....A13 from table1 语句写在VB中 一切正常.
2,如果用存储过程调用,奇怪问题如下:
 1)存储过程中 ,select 所有字段 from table1 ,table1中有1413条记录,总是显示820多条记录
 2)存储过程中 ,select 少些字段 ,比如 select A1,A2.....A8 from table1 ,则会多显示100多条数据,当只select A1,A2,A3 FROM table1 或其他3,4个字段,则会显示全部记录
 3)另外测试table2 ,存储过程中只写 select * from table2,table2里面有7000多条记录,结果全部显示,一切正常.table2
  有13个字段

疑问:感觉存储过程返回结果好象有个缓存大小,越少字段显示越多记录.但3) 测试又没法解释.


困扰多日,请高手指点 谢谢
 

[解决办法]

探讨
在VB里调用存储过程,然后用
Debug.Print Adodc1.Recordset.RecordCount

这个显示-1.

[解决办法]
这种情况见多了。
mshflexgrid的bug
与游标有关。
服务器游标(adUseServer)和仅向前游标(adopenforwardonly)容易引起此错误。

解决办法是:
用Recordset的Open方法来执行存储过程返回记录集,此时可以使用客户端游标和非仅向前游标。
对于仅用于返回数据的存储过程,使用用函数替代比较好。

热点排行