MSHFlexGrid控件失控问题,是不是VB的BUG?
我的程序一直运行得好好的, 但因为工程有点大,所以一直在往里添FORM,已达近百个FORM了,现在发现这个MSHFlexGrid控件乱来了,比如:
For n = 1 To MSHFlexGrid1.Rows
For m = 1 To MSHFlexGrid1.Cols
newsheet.Cells.Item(n, m) = Trim(MSHFlexGrid1.TextMatrix(n - 1, m - 1))
Next
Next
newsheet是EXCEL文件表对象,上面的语句主要是把现有的MSHFlexGrid1内容导到EXCEL表中.
象这样的语句它会提示:"下标越限"的错误!
经过显示发现,原本只有15列的MSHFlexGrid1.Cols值有35!
不知道是什么原因,要如何解决,目前发现的都是增大,并且出错,不知道会不会减少的,因为我现在的解决方法是用
on error resume next
语句.
几乎所有的MSHFlexGrid1.Cols都有问题!
我的百来个form中有一半以上的form有MSHFlexGrid控件.
对这方面有经验的朋友给点建议.
谢谢!
[解决办法]
也许是绑定到了空的记录集造成的。
我只知道这种情况下这个控件会发狂。
[解决办法]
我只知道机器内存使用接近极限时,程序会出一些莫名其妙的错误。
[解决办法]
mshflexgrid不如用vsflexgrid 性能高,功能强,没那么多bug
[解决办法]
插句嘴:动辄几百个form的ERP真恐怖 还用VB写
楼主的ERP没有考虑模块重用,一个一般的ERP哪会有这么多窗体.很多功能都是一个窗体样式来的.把窗体做成模板调用啊,一些控件,位置都用参数定置就是了.
EPR主要不就是基础资料,单据,报表这些,单据只有单表,双表,三表那么几种,报表也是上面一些查询条件,下面一个表单的东西.其他的一些基本属性设置直接用个表单,顶多搭配些treeview或文本框,复选框之类的可以完成,反正就那几个样式,何必每个功能加一个form,再说窗体样式太多,而且一致性不够的话,用户使用起来会很麻烦,培训和使用成本会很高
[解决办法]
发生错误时的n,m和rows,cols值是多少?实际的rows和cols是多少.试试在属性窗口中修改mshflexgrid的cols和rows属性,设置大一点看看
[解决办法]
实在不行,恢复以前的版本,在此基础上再修改
[解决办法]
楼主应该先在发生错误的地方设置断点,然后在IDE中运行到这个地方的时候查看M,NCOLS,ROWS的实际值是多少.而不是想当然的认为它"应该"是多少.很多代码的错误都是调试不够仔细造成的.
另:当工程达到上百个FORM的时候应该考虑拆分了:将工程属于不同部分的差异较大的功能归类,再拆分到不同的几个小工程内.通过一个编译一个.无论是从调试角度还是维护角度还是程序效率角度来看都是值得这么做的. WINDOWS这么大你数数有多少个EXE? 要是整个windows才一个EXE你晕不晕呀?
[解决办法]
检查一下变量及其值,只要不出现内存溢出应该就不会有问题
[解决办法]
再设置一下MSHFlexGrid1.Cols=15
[解决办法]