Office中国论坛/Access中国论坛

标题: 新手求助,也许有相关扫盲帖子但没搜到 [打印本页]

作者: fmlzy531    时间: 2011-7-30 08:28
标题: 新手求助,也许有相关扫盲帖子但没搜到
VBA中常出现VBOKonly,或VBOKquit这种句子是执行什么?msgbox"..."后面若加上vbOKquit代表什么?
作者: roych    时间: 2011-7-30 09:49
加号表示同时兼容两种功能。VBOKquit好像没见过。
例如:S
  1. Sub test()
  2. MsgBox "Haha", vbQuestion + vbYesNoCancel
  3. End Sub
复制代码
前面一个表示询问,显示为一个问号泡泡,后面则会显示为“是”、“否”、“取消”的按钮。
作者: fmlzy531    时间: 2011-7-30 16:19
回复 roych 的帖子

谢谢,那像VBOKONLY是什么涵义您知道么?按照您的意思就是VB+一个语句就是显示这个语句所执行的事件咯?
作者: fmlzy531    时间: 2011-7-30 16:25
回复 roych 的帖子

Private Sub com2_Click()
  If Me!密码_1 = Me!密码_2 Then
    DoCmd.RunSQL ("update 登录 " & "set 用户名='" & Me!用户名_1 & "'" & "where 用户名='" & Me!用户名_1 & "'")
    DoCmd.RunSQL ("update 登录 " & "set 密码='" & Me!密码_1 & "'" & "where 用户名='" & Me!用户名_1 & "'")
    Forms!F2.Refresh
    DoCmd.GoToControl "com1"
    com2.Enabled = False
    Me!用户名_1 = Me!用户名
    Me!密码_1 = Me!密码
    Me!密码_2 = " "
    Me!用户名_1.Enabled = False
    Me!密码_1.Visible = False
    Me!密码_2.Visible = False
    Me!User_remark.Visible = False
  Else
  '*************************Add*************************'
   
  '*************************Add*************************'
  End If
End Sub
就是这个VBA语句,要在两个ADD之间加一个语句,要求密码与确认密码不同时候弹出对话框:密码输入错误。只加MSGBOX“密码输入错误”似乎不对。。
作者: roych    时间: 2011-7-30 22:03
修改密码?这是我很久以前做的一个修改密码的窗体
  1. Private Sub Cmd_Submit_Click()
  2. '设置不弹出更新查询提示对话框
  3. DoCmd.SetWarnings False
  4. '用旧密码输入不正确或者没有输入,则弹出错误提示。用Dlookup来查找比ADO要简单很多。
  5. If DLookup("pwd", "T_User", "[Login User]='" & Me.Txt_User & "'") <> Me.Txt_oldPwd Or IsNull(Me.Txt_oldPwd) Then
  6.         MsgBox "旧密码错误", vbCritical, "出错"
  7.         Me.Txt_User.SetFocus
  8. '如果新密码或确认密码没有输入
  9.     ElseIf IsNull(Me.Txt_NewPwd) Or IsNull(Me.Txt_CfmPwd) Then
  10.         MsgBox "请输入新密码", vbInformation, "出错"
  11.         Me.Txt_NewPwd.SetFocus
  12. '如果新密码和确认密码不匹配
  13.     ElseIf Me.Txt_NewPwd.Value <> Me.Txt_CfmPwd.Value Then
  14.         MsgBox "确认密码和新密码不一致", vbCritical, "出错"
  15.         Me.Txt_CfmPwd = ""
  16.         Me.Txt_NewPwd = ""
  17.         Me.Txt_NewPwd.SetFocus
  18.     Else
  19. '一切验证正确后,开始执行更新查询。
  20.         SSql = "UPDATE T_User SET T_User.Pwd = '" & Me.Txt_NewPwd.Value & "' WHERE ( T_User.[Login User] = '" & Me.Txt_User.Value & "')"
  21.         DoCmd.RunSQL (SSql)
  22. '这里就有VBOKOnly了。只弹出一个确定(OK)的提示框加上一个信息泡泡(就是蓝色叹号的那个小气球)。
  23. '这部分其实可以不写的。执行后直接关闭窗体就行了。
  24.             If MsgBox("已成功更改密码" & Chr(13) & Chr(13) & "新密码为:" & Me.Txt_NewPwd & Chr(13) & Chr(13) & "请记住新密码", vbInformation + vbOKOnly, "成功更新密码") = vbOK Then
  25.                 DoCmd.Close acForm, "frm_ChgPwd", acSaveYes
  26.             End If
  27. End If
  28. End Sub
复制代码

作者: roych    时间: 2011-7-30 22:16
回复 fmlzy531 的帖子

我不知道是我没理解你的意思还是你没理解这些对话框的类型。
事件往往是靠用户的一些操作来能触发的(例如单击、双击什么的,即便加载事件也是要用户打开软件才能执行的)。
弹出对话框类型并不是事件,而是作为一种提示来跟用户进行交互的。有些重要操作(例如清空数据),我们应该提醒用户,以免误操作。
理论的东西讲得很枯燥的,你还是看看5L的代码再体会下吧。
作者: fmlzy531    时间: 2011-7-30 22:48
回复 roych 的帖子

谢谢啦!




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