2013-07-15 60 views
0

我已經創建了一個系統,而且我也是vb.net的新手。它工作正常。問題是,我需要限制1.)用戶和2.)管理主頁。VB.NET上的訪問級別

例如,在登錄後,管理員將進行 主頁,如果用戶登錄時,他們將被引導到不同的頁面

我還是新來vb.net(如6周前),我使用微軟訪問作爲我的數據庫。我在網上找到的很多代碼是非常複雜和技術性的。我只需要簡單的vb.net代碼

任何幫助將不勝感激,謝謝! 我已經發布我的代碼爲我的登錄表單,所以你們可以進一步瞭解我的編碼:

Public Class Form1 
    Dim loginerror As String 
    Public Function login() 
    Dim DBconn As New ADODB.Connection 
    Dim user As New ADODB.Recordset 

    Dim Username As String 
    Dim userDB As String 
    Dim passDB As String 

    Dim UserFound As Boolean 

    DBconn.Open("Provider = Microsoft.Jet.OLEDB.4.0;" & _ 
       "Data Source = '" & Application.StartupPath & "\LoginDB.mdb'") 

    user.Open("UserTable", DBconn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic) 

    UserFound = False 
    login = False 
    Username = "Username = '" & txtuser.Text & "'" ' 

    Do 
     user.Find(Username) 
     If user.BOF = False And user.EOF = False Then 
      userDB = user.Fields("Username").Value.ToString 

      passDB = user.Fields("Password").Value.ToString 

      If userDB <> txtuser.Text Then 
       user.MoveNext() 
      Else 
       UserFound = True 
       If passDB = txtpass.Text Then 
        user.Close() 
        DBconn.Close() 
        Return True 
       Else 
        loginerror = "Invalid Password" 
        user.Close() 
        DBconn.Close() 
        Return False 
       End If 
      End If 
     Else 
      loginerror = "Invalid Username" 
      user.Close() 
      DBconn.Close() 
      Return False 
     End If 
    Loop Until UserFound = True 
    user.Close() 
    DBconn.Close() 
    Return False 


End Function 


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    If login() = True Then 
     Welcome.Show() 
     Me.Close() 
    Else 
     MessageBox.Show(loginerror, "Login Message") 
    End If 
End Sub 


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    AcceptButton = Button1 
    Me.Show() 
    Application.DoEvents() 
    txtuser.Focus() 
End Sub 

Private Sub txtpass_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtpass.TextChanged 

End Sub 

Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click 

End Sub 

Private Sub txtuser_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtuser.TextChanged 

End Sub 

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click 

End Sub 

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click 

End Sub 

Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click 

End Sub 

End Class 

以防萬一,這是我爲我的主要形式編碼:

Public Class Mainform 
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 
    Select MessageBox.Show("Are you sure you want to exit?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) 
     Case Windows.Forms.DialogResult.Yes 
     Case Windows.Forms.DialogResult.No 
      e.Cancel = True 
    End Select 

End Sub 

Private Sub Mainform_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Me.WorkTableAdapter.Fill(Me.LoginDBDataSet.Work) 

    Me.AssetTableAdapter.Fill(Me.LoginDBDataSet.Asset) 

    Me.HistoryTableAdapter.Fill(Me.LoginDBDataSet.History) 

    Me.InventoryTableAdapter.Fill(Me.LoginDBDataSet.Inventory) 

    Me.Equipment1TableAdapter.Fill(Me.LoginDBDataSet.Equipment1) 


End Sub 
Private Sub mainform_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown 
    If e.KeyCode = Keys.Escape Then Me.Close() 

End Sub 

Private Sub Equipment1BindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Equipment1BindingNavigatorSaveItem.Click 
    Me.Validate() 
    Me.Equipment1BindingSource.EndEdit() 
    Me.TableAdapterManager.UpdateAll(Me.LoginDBDataSet) 

End Sub 

Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click 
    Mainform_Load(Me, New System.EventArgs) 
End Sub 

Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click 
    Form1.Show() 
    Me.Dispose() 
    Me.Close() 

End Sub 

Private Sub TabPage1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Click 

End Sub 

Private Sub IDLabel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 

End Sub 

Private Sub TabPage5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage5.Click 

End Sub 

Private Sub Equipment_NameTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 

End Sub 

Private Sub HistoryDataGridView_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) 

End Sub 

Private Sub InventoryDataGridView_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) 

End Sub 

Private Sub TabControl1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged 

End Sub 

Private Sub Machine_IDTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 

End Sub 

Private Sub _WO_CompletedLabel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 

End Sub 

Private Sub _WO_CompletedCheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 

End Sub 

Private Sub _WO_CompletedCheckBox_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) 

End Sub 

Private Sub Machine_IDTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Machine_IDTextBox1.TextChanged 

End Sub 

Private Sub _WO_CompletedCheckBox_CheckedChanged_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _WO_CompletedCheckBox.CheckedChanged 

End Sub 
End Class 

回答

1

您需要確定如果用戶是管理員或不(通常是你的user表應該附加的用戶如管理,員工等角色)

這樣的事情,當你嘗試登錄

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
If login() = True and UserRole='Administrator' Then 
    Welcome.Show() 
    Me.Close() 
elseif login() = True then 
    WelcomeUser.Show() 
    Me.Close() 
Else 
    MessageBox.Show(loginerror, "Login Message") 
End If 

末次

+0

是謝謝你,我做了什麼,你告訴我,但我不斷收到「UserRole的」未聲明的錯誤。由於它的保護級別,它可能無法訪問 – Greenhorn

+0

UserRole只是我的術語,可能是用戶表中字符串的值。例如,您的用戶表有一個名爲UserRole的列,其值爲員工,管理員等。獲取登錄的特定用戶的價值,然後檢查他是否是管理員(如我上面的示例中所述),然後打開管理員的表單。或者如果沒有其他情況,請爲普通用戶打開表單。 –