窗体有两组checkbox控件数组,custom_type(2),cer(8),
程序过程是这样的,先从数据库读出数据,(数据库记录的值是checkbox的caption)如果为空,则checkbox 控件数组里的元素不作任何选择,如果为非空,则选择对应caption值的元素,控件数组只可以单选 ,我的思路是这样的,用listview显示数据库,当单击listview时,会进行精确查询,得到一条记录,用变量储存记录中的一个值,如custom_type_value = rs!custom_type,之后通过此变量值去判定checkbox控件数组如何显示,用call showselect(custom_type_value,custom_type)调用
Sub showselect(val_get, b)
Dim val_get As Integer, temp As String, b As CheckBox, p As Integer
If val_get = "" Then
Exit Sub
ElseIf val_get <> "" Then
p = b.Count - 1
Do While Not p < 0
temp = b(p).CaptionIf val_get = temp Then
b(p).Value = 1
b(p).Enabled = True
Else: b(p).Value = 0
b(p).Enabled = False
End If
p = p - 1
Loop
End If
End If
这个过程在第一次单击listview时可以正确显示,但第二次单击的时候就不能正确显示了,
但如果单击两次listview的同一项目时,它又能正确显示,
我知道是程序出了问题,但怎么看也看不出来,请大家指教~

解决方案 »

  1.   

    看了这个问题,感想很多,总觉得很别扭:1、为什么Sub showselect(val_get, b)不指定参数数据类型;
    2、为什么要用val_get As Integer,b As CheckBox,使过程中变量与参数重名;
    3、为什么val_get = ""要判断两次;
    4、为什么要从大到小找;
    5、为什么不用“p>=0”而用“Not p<0”
    6、为什么不用For循环,而用Do循环
    7、为什么用一句Else: b(p).Value = 0来故意搅乱代码结构
    8、为什么不用OptionButton或ComboBox,而非要用checkbox
    9、为什么简单问题被处理得这么复杂
    10、为什么找出的问题比代码本身还多