Office中国论坛/Access中国论坛

标题: 高手请时,关于安全机制向导问题 [打印本页]

作者: yedaoan    时间: 2005-5-6 07:45
标题: 高手请时,关于安全机制向导问题
数据库设置了安全机制之后,在启动时会弹了一个对话框,要求输入用户名和密码,能不能自做一个登录窗体代替这个对话框,同时可以在这个窗体加一些自定义的东东,然后把MDW文件和数据库文件一起发布,就可以用到ACCESS自带权限管理功能,高手请回贴,这个问题已经有很多人提过,一直没有解决办法.
作者: gxlishuxin    时间: 2005-5-6 07:53
我也很想知道。
作者: chajiangliang    时间: 2005-5-7 21:59
标题: 自定義登陸界面
可以繞過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


[attach]10290[/attach]



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






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