Office中国论坛/Access中国论坛

标题: 请教以下情况用IF语句怎么表达(未解决,已更新问题的表达) [打印本页]

作者: 羽佳    时间: 2006-4-27 20:58
标题: 请教以下情况用IF语句怎么表达(未解决,已更新问题的表达)
我做了个练习,想在打开窗体的时候隐藏施工队伍、负责人、承包人、承包人施工队伍。只能在是否承包的选项里选YES或NO的时候另一个承包形式控件会判断这个值来填写自建或是他人承包来判断是否隐藏一些控件和显示一个控件,如显示自建时显示施工队伍,负责人这两个控件而隐藏承包人和承包人施工队伍这两个控件。如果显示他人承包的时候就显示承包人和承包人施工队伍而隐藏施工队伍和负责人,如果承包形式控件值等于Null的时候这四个控件都隐藏。

我现在只做了个Form_Load事件来处理的这个窗体一打开时就隐藏这四个控件,但是只要我选了YES或NO显示出来的控件都不再隐藏,请问如何用IF语句来实现这些功能?

private sub Form_load()

    施工队伍.Visible = False
    负责人.Visible = False
    承包人.Visible = False
    承包人施工队伍.Visible = False
End Sub

29日晚9点30分更新的例子[attach]17476[/attach]



[此贴子已经被作者于2006-4-29 21:37:46编辑过]


作者: 一点通    时间: 2006-4-27 21:37
If...Then...Else 语句示例

本示例示范 If...Then...Else 语句的两种格式:“区块格式”及“单行格式”,也示范了 If TypeOf...Then...Else 的用法。

  1. Dim Number, Digits, MyString

  2. Number = 53    '
复制代码
设置变量初始值。
  1. If Number < 10 Then
复制代码

   
  1. Digits = 1
复制代码
  1. ElseIf Number < 100 Then
复制代码

  1. '
复制代码
若判断结果为
  1. True
复制代码
,则完成下一行语句。   
  1. Digits = 2
复制代码

  1. Else
复制代码
  
  1. Digits = 3
复制代码
  1. End If
复制代码

  1. '
复制代码
使用“单行格式”语法来设置变量值。

  1. If Digits = 1 Then MyString = "One" Else MyString = "More than one"
复制代码



利用 If TypeOf 可以判断传入过程的控件是否为一文本框。

  1. Sub ControlProcessor(MyControl As Control)

  2.     If TypeOf MyControl Is CommandButton Then

复制代码
      
  1. Debug.Print "You passed in a " & TypeName(MyControl)
复制代码

  1.     ElseIf TypeOf MyControl Is CheckBox Then
复制代码

      
  1. Debug.Print "You passed in a " & TypeName(MyControl)
复制代码

  1.     ElseIf TypeOf MyControl Is TextBox Then
复制代码

      
  1. Debug.Print "You passed in a " & TypeName(MyControl)
复制代码

  1.     End If
复制代码
  1. End Sub
复制代码

作者: qhp-soft    时间: 2006-4-27 21:45


  if YES.value=true then

  施工队伍.Visible = true
    负责人.Visible = true

    承包人.Visible = true
    承包人施工队伍.Visible = true
  end if  

-----
论坛是我们成长的家园,我们要共同爱护好、建设好这个家园。同时欢迎大家光临我
的主页:http://www.qhpsoft.com

作者: 羽佳    时间: 2006-4-28 00:33
谢谢一点通老师,我先照你的例子去试试看。

qhp-soft,您的这个IF语句只是判断YES或NO来判断四个控件为显示出来,不是判断YES/NO来显示符合条件的控件和隐藏不符合条件的控件吧。
作者: 羽佳    时间: 2006-4-28 01:04
现在这个窗体的更新有了一个新问题就是我在选了YES或NO的时候显示出来的控件在我接ESC取消输入的时候不会隐藏控件,要用什么办法才能使我按下ESC键的时候重新执行这段窗体读取事件呢?

private sub Form_load()



    施工队伍.Visible = False
    负责人.Visible = False
    承包人.Visible = False
    承包人施工队伍.Visible = False
     



End Sub
作者: 一点通    时间: 2006-4-28 04:32
简化你的例子传上来吧,或者看一下MsgBox()的使用方法

[此贴子已经被作者于2006-4-27 20:36:12编辑过]


作者: 羽佳    时间: 2006-4-29 06:01
对不起,今天工作工作忙例子上传晚了,我也在贴子的最前面增加了例子的下载。

[attach]17461[/attach]

作者: 羽佳    时间: 2006-4-29 20:31
我顶啊
作者: 一点通    时间: 2006-4-29 21:51
不是十分明你的意思,是否这样?

[attach]17469[/attach]

作者: 羽佳    时间: 2006-4-29 23:06
不是这样,我的意思是选了自建的时候只能显示并填写承包人和承包人施工队,而隐藏负责人和施工队并不能填写,而选他人承包的时候只显示承包人和承包人施工队,而隐藏负责人和施工队这两个。还有当你输入完一条记录之后,点击添加新记录的时窗体并不没有再运行FORM_LOAD事件,上次记录时显示出来的控件并不能在点添加新记录后全部隐藏起来。
作者: 一点通    时间: 2006-4-30 00:16
我都糊涂,什么都是一个样的?

不是这样,我的意思是选了自建的时候只能显示并填写承包人和承包人施工队,而隐藏负责人和施工队并不能填写,而选他人承包的时候只显示承包人和承包人施工队,而隐藏负责人和施工队这两个。还有当你输入完一条记录之后,点击添加新记录的时窗体并不没有再运行FORM_LOAD事件,上次记录时显示出来的控件并不能在点添加新记录后全部隐藏起来。
作者: 羽佳    时间: 2006-4-30 05:35
一点通老师,我上面问的问题在表达意思方面有问题,实在对不起,我再重新说一下吧。

我更新了例子,我想您看到这个应该就会更明白吧,[attach]17476[/attach]


我构思是当一个工程单自建的时候就不会给他人承包所以当选了自建的时候有关承包人的相关控件就不用填写,如果给他人承包就不会自建。所以就只好把其它的隐藏起来,而只能填写相对应的数据。

选择:自建

显示:

负责人

施工队

隐藏:

承包人

承包人施工队



选择:他人承包

显示

承包人

承包人施工队

隐藏

隐藏负责人

施工队

第二个情况就是当你在完成了一个自建工程的资料输入后,点击添加新记录时后窗口还是一直显示自建后显示出来的负责人和施工队伍这两个控件,如果选的是他人承包出现的就是承包人和承包人施工队这两个控件,窗口并没有再次有运行FORM_LOAD事件把负责人、施工队、承包人、承包人施工队这四个控件全隐藏起来。

[此贴子已经被作者于2006-4-29 21:42:09编辑过]






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3