以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  难题来了:用If 或 Case 还是其他的,能简化代码吗?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=2280)

--  作者:mr725
--  发布时间:2009/4/3 22:36:00
--  难题来了:用If 或 Case 还是其他的,能简化代码吗?

图片点击可在新窗口打开查看此主题相关图片如下:用if 还是 case 或其他,怎样简化这样的选择?.jpg
图片点击可在新窗口打开查看

If e.Row("A") = True andalso e.Row("B") = False andalso e.Row("C") = False andalso e.Row("D") = False andalso e.Row("E") = False andalso e.Row("F") = False Then 
       
        Forms("窗口").open()
        Forms("窗口").Controls("textboxA").Enabled = True
        Forms("窗口").Controls("textboxB").Enabled = False
        Forms("窗口").Controls("textboxC").Enabled = False
        Forms("窗口").Controls("textboxD").Enabled = False 
        Forms("窗口").Controls("textboxE").Enabled = False 
        Forms("窗口").Controls("textboxF").Enabled = False

Elseif e.Row("A") = True andalso e.Row("B") = True andalso e.Row("C") = False andalso e.Row("D") = False andalso e.Row("E") = False andalso e.Row("F") = False Then Forms("窗口").open()
        Forms("窗口").Controls("textboxA").Enabled = True
        Forms("窗口").Controls("textboxB").Enabled = True
        Forms("窗口").Controls("textboxC").Enabled = False
        Forms("窗口").Controls("textboxD").Enabled = False 
        Forms("窗口").Controls("textboxE").Enabled = False
        Forms("窗口").Controls("textboxF").Enabled = False
 
Eseif e.Row("A") = True andalso e.Row("B") = True andalso e.Row("C") = True andalso e.Row("D") = False andalso e.Row("E") = False andalso e.Row("F") = False Then Forms("窗口").open()
        Forms("窗口").Controls("textboxA").Enabled = True
        Forms("窗口").Controls("textboxB").Enabled = True
        Forms("窗口").Controls("textboxC").Enabled = True
        Forms("窗口").Controls("textboxD").Enabled = False 
        Forms("窗口").Controls("textboxE").Enabled = False
        Forms("窗口").Controls("textboxF").Enabled = False
 
        .........

        排列组合有720个啊,谁能简化这个代码吗???????
        ..........
        .........
 
End If

应2、3楼要求补上执行代码!~





[此贴子已经被作者于2009-4-3 23:53:56编辑过]

--  作者:shaof
--  发布时间:2009/4/3 22:51:00
--  

你应该貼出执行代码,让大家看看有没有规律。


--  作者:程兴刚
--  发布时间:2009/4/3 23:25:00
--  

应该能简化,只是像您贴代码,大家不好下手!

[此贴子已经被作者于2009-4-3 23:35:05编辑过]

--  作者:mr725
--  发布时间:2009/4/3 23:43:00
--  
......执行1
Forms("窗口").open()
Forms("窗口").Controls("textboxA").Enabled = True
Forms("窗口").Controls("textboxB").Enabled = False
Forms("窗口").Controls("textboxC").Enabled = False
Forms("窗口").Controls("textboxD").Enabled = False 
Forms("窗口").Controls("textboxE").Enabled = False 
Forms("窗口").Controls("textboxF").Enabled = False
 


......执行2:
Forms("窗口").open()
Forms("窗口").Controls("textboxA").Enabled = True
Forms("窗口").Controls("textboxB").Enabled = True
Forms("窗口").Controls("textboxC").Enabled = False
Forms("窗口").Controls("textboxD").Enabled = False 
Forms("窗口").Controls("textboxE").Enabled = False
Forms("窗口").Controls("textboxF").Enabled = False
 

...............

这样能下手吗?????
[此贴子已经被作者于2009-4-3 23:47:25编辑过]

--  作者:czy
--  发布时间:2009/4/4 0:06:00
--  
没有问题,而且可以简化的让你无法相信。

代码放在哪个事件中?
--  作者:mr725
--  发布时间:2009/4/4 0:08:00
--  
代码放在按钮中即可~  谢谢了 。
--  作者:czy
--  发布时间:2009/4/4 0:16:00
--  

按钮代码:Forms("窗口").open()

要打开的窗口AfterLoad事件代码。

Dim r As Row = CurrentTable.Current
e.Form.Controls("textboxA").Enabled = r("A")
e.Form.Controls("textboxB").Enabled = r("B")
e.Form.Controls("textboxC").Enabled = r("C")
e.Form.Controls("textboxD").Enabled = r("D")
e.Form.Controls("textboxE").Enabled = r("E")
e.Form.Controls("textboxF").Enabled = r("F")


--  作者:czy
--  发布时间:2009/4/4 0:22:00
--  
全部放在按钮中就这样。

Forms("窗口").open()
Dim r As Row = CurrentTable.Current
Forms("窗口").Controls("textboxA").Enabled = r("A")
Forms("窗口").Controls("textboxB").Enabled = r("B")
Forms("窗口").Controls("textboxC").Enabled = r("C")
Forms("窗口").Controls("textboxD").Enabled = r("D")
Forms("窗口").Controls("textboxE").Enabled = r("E")
Forms("窗口").Controls("textboxF").Enabled = r("F")

--  作者:程兴刚
--  发布时间:2009/4/4 0:23:00
--  

水平差就是不行,我这个才是正确的:

Dim r As Row = CurrentTable.Current
Dim Multi As String = "A|B|C|D|E|F"
Dim Values() as String
Values = Multi.split("|")
Forms("窗口").open()
For Index As Integer = 0 To Values.Length - 1
   Forms("窗口").Controls("TextBox" & Values(Index)).Enabled = r(Values(Index))
Next

[此贴子已经被作者于2009-4-4 1:09:48编辑过]

--  作者:mr725
--  发布时间:2009/4/4 0:27:00
--  

我只是对象这样有规则的代码不会简化,版主可以做个放在‘命令窗口’中能执行即可,多谢啊~