Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access开发平台

Access开发平台--修改窗体输入密码才能有权限进行改数据,对字段进行权限控制修改的方法

时 间:2013-06-22 09:21:23
作 者:麥田   ID:11  城市:上海  QQ:3002789054点击这里给麥田发消息
摘 要:Access开发平台--修改窗体输入密码才能有权限进行改数据,对字段进行权限控制修改的方法
正 文:

学员 广州--小莲(530920058)  10:41:10 问题
请问老师,我要修改窗体进行修改数据时,能用权限对要修改的控件进行控制,即出来个密码窗口,有权限才可以修改。
可以做到吗?


UMVsoft-7号褚老师(20099004)  10:44:11
在修改窗体上面加个复选框   输入密码方式才能进行编辑就可以了

做个制作顺序给你学习一下。



制作方法如下:(以Access开发平台 的报销管理系统教程里的报销明细修改为例)

第一:进入报销明细修改窗体的设计视图→将ygid文本框“可用”设为否→然后新建复选框控件→在复选框的更新后事件写代码

第二:输入以下整段代码↓:
 
Private Sub Check2_AfterUpdate()
    If check2 = 0 Then
        Me.ygId.Enabled = False
    Else
        Dim a As String
        lTimeID = timeSetEvent(10, 0, AddressOf TimeProc, 1, 1)
        a = InputBox("需要输入密码才能修改数据,请输入密码", "密码inputbox")
       
        '设置密码为123,您也可以在下一行自行设置密码------------------
        If a = "123" Then
            MsgBox "密码正确!可以修改此字段的数据", vbInformation, "提示:"
            Me.ygId.Enabled = False
        Else
            MsgBox "密码不正确!您不能修改此字段的数据!", vbInformation, "提示:"
            Exit Sub
        End If

        Me.ygId.Enabled = True
    End If

End Sub

第三:这一步的作用是让输入的密码显示为星号,新建任意一模块,输入整段代码如下:

'模块中:
  Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, ByVal uFlags As Long) As Long
  Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long
  Public Const EM_SETPASSWORDCHAR = &HCC
  Public lTimeID As Long
   
  'timeSetEvent的回调函数
  Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, ByVal dw1 As Long, ByVal dw2 As Long)
      '在这里捕捉inputbox
      hwd = FindWindow("#32770", "密码inputbox")
      If hwd <> 0 Then
         hwd = FindWindowEx(hwd, 0, "edit", vbNullString)
         SendMessage hwd, EM_SETPASSWORDCHAR, 42, 0
         timeKillEvent lTimeID
      End If
  End Sub
 
第四:保存模块命名为:basInputbox  并运行修改窗体看一下效果.

注:大家在开发自己软件过程中,也可以加以应用的,只需将代码中文本框名称改为自己软件的文本框名称即可



Access快速开发平台QQ群 (群号:321554481)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助