设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 843|回复: 2
打印 上一主题 下一主题

[Access本身] 高手请时,关于安全机制向导问题

[复制链接]
跳转到指定楼层
1#
发表于 2005-5-6 07:45:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据库设置了安全机制之后,在启动时会弹了一个对话框,要求输入用户名和密码,能不能自做一个登录窗体代替这个对话框,同时可以在这个窗体加一些自定义的东东,然后把MDW文件和数据库文件一起发布,就可以用到ACCESS自带权限管理功能,高手请回贴,这个问题已经有很多人提过,一直没有解决办法.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-5-6 07:53:00 | 只看该作者
我也很想知道。
3#
发表于 2005-5-7 21:59:00 | 只看该作者

自定義登陸界面

可以繞過Access本身的界面使用自定界面﹐如以下VB寫的一個界面。代碼如下:

此處為了保護后端數據庫﹐便采用兩套密碼﹐一套Access安全機制中的﹐一套是用戶登陸的(可簡單在Access安全機制中的每個密碼后面加個字串(如本例子)﹐也可采用一些運算得到不同字串加強保密)。希望以下方法對你有幫助。

Dim cnn As DAO.Database
Dim rst As DAO.Recordset
Private Sub Command1_Click()
Dim bas As Variant
Set rst = cnn.OpenRecordset("select * from 系統用戶")
      rst.FindFirst "[用戶]='" & Me.Text1.Text & "' and [密碼]='" & IIf(Me.Text2.Text = "", "z", Me.Text2.Text) & "'"
If LCase(rst!用戶) = LCase(Me.Text1.Text) And rst!密碼 = IIf(Me.Text2.Text = "", "z", Me.Text2.Text) Then
    Me.Visible = False

      DoEvents: DoEvents: DoEvents
   
    Dim fil As New Scripting.FileSystemObject
   
    If Dir("C:\Molding.mde") = "" Then GoTo NEWa
   
    If Dir("I:\" & Me.Text1.Text & ".txt") <> "" Then GoTo Copya
    GoTo RunA:
Copya:
    fil.DeleteFile "I:\" & Me.Text1.Text & ".txt"
    fil.CopyFile "I:\Molding.mde", "c:\Molding.mde"
    GoTo RunA:
NEWa:
    fil.CopyFile "I:\Molding.mde", "c:\Molding.mde "
    fil.CopyFile "I:\Molding.bmp", "c:\Molding.bmp"
    fil.CopyFile "I:\DRAG.ico", "c:\drag.ico"
   
    If Dir("I:\系統\" & Me.Text1.Text & ".txt") = "" Then GoTo RunA
    fil.DeleteFile "I:\" & Me.Text1.Text & ".txt"
RunA:
      Dim strDB As String
      Dim strCmd As String
      strDB = "C:\Molding.mde"
      rst.FindFirst "[用戶]='a'"
      bas = rst!密碼
      
      strCmd = "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE " _
          & strDB & " /wrkgrp " & "I:\Short\kmq013.mdw " _
          & " /user " & LCase(Me.Text1.Text) & " /pwd " & Me.Text2.Text & "9abz"

      Call Shell(strCmd, vbNormalFocus)

      
      DoEvents: DoEvents: DoEvents

     End
     Exit Sub
Else
  MsgBox "密碼錯誤", vbCritical, "密碼"
End If
    rst.Close
    Set rst = Nothing
End Sub

Private Sub Command2_Click()

   End
End Sub

Private Sub Form_Load()
DBEngine.DefaultUser = "系統用戶"
DBEngine.DefaultPassword = ""

DBEngine.SystemDB = "I:\Short\kmq013.mdw"

Set cnn = DBEngine.OpenDatabase("I:\molding.mde")
Set rst = cnn.OpenRecordset("select * from 系統用戶")
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)

If KeyAscii = vbKeyReturn Then Me.Command1.SetFocus
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then Me.Text2.SetFocus
End Sub






[此贴子已经被作者于2005-5-7 14:12:47编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-15 22:35 , Processed in 0.097498 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表