คืออยากจะเช็คว่าคนที่ล็อกอินเข้ามาอยู่ Role ไหน แล้วพอรู้ Role แล้วเราก็จะทราบว่า สามารถทำอะไรในระบบได้บ้างซึ่ง 1 Role อาจจะสามารถทำได้ 10 เมนู หรือ 5 เมนู ก็ได้ค่ะ
ทีนี้เลยอยากทราบวิธีการเขียนฟังชั่นเช็คว่าทำอะไรได้บ้าง พอดีเขียนเป็น sub ธรรมดาไว้ค่ะ แต่ว่ามันต้องเขียนเรียกหลายหน้า เลยอยากเขียนไว้ในคลาสแล้วเรียกฟังชั่นมาใช้อีกทีค่ะ
sub checkaccess()
Dim objArrList As ArrayList
Dim i As Integer
objArrList = New ArrayList
sql = "Select * from MOR_RoleObject where RoleName = '" + Session.Contents("RoleName") + "'"
ad = New SqlDataAdapter(sql, MConn)
ad.Fill(ds, "MyData")
Dim DView As DataView
DView = ds.Tables("MyData").DefaultView
For Each drowview In DView
Dim UserName = drowview.Item("UserName")
Dim AccessID = drowview.Item("AccessID")
objArrList.Add(drowview.Item("AccessID"))
Session("AccessID") = objArrList
Next
objArrList = CType(Session("AccessID"), ArrayList)
For i = 0 To objArrList.Count - 1
If objArrList(i) = "1" Then
hlStockInfo.Visible = True
End If
If objArrList(i) = "6" Then
hlKPI.Visible = True
End If
If objArrList(i) = "8" Then
hlForecast.Visible = True
End If
If objArrList(i) = "14" Then
hlMonthly.Visible = True
End If
Next
end sub
แล้วมาลองเขียนฟังชั่นดูเอง ซึ่งเขียนไม่ค่อยจะเก่งเลย เขียนแบบนี้ค่ะ
ในคลาส RoleManager
Public Function AccessObj() As ArrayList
Dim objArrList As ArrayList
Dim i As Integer
objArrList = New ArrayList
sql = "Select * from MOR_RoleObject where RoleName = '" + Session.Contents("RoleName") + "'"
Ad = New SqlDataAdapter(sql, MConn)
Ad.Fill(Ds, "MyData")
Dim DView As DataView
DView = Ds.Tables("MyData").DefaultView
For Each drowview In DView
Dim UserName = drowview.Item("UserName")
Dim AccessID = drowview.Item("AccessID")
objArrList.Add(drowview.Item("AccessID"))
Session("AccessID") = objArrList
Next
objArrList = CType(Session("AccessID"), ArrayList)
end function
'หน้าฟอร์มก็เรียกใช้แบบนี้ค่ะ
Sub CheckAccessObj()
Dim RoleMG As New RoleManager
Dim i As Integer
Dim AccessID As ArrayList
AccessID = RoleMG.AccessObj
For i = 0 To AccessID.Count - 1
If AccessID(i) = "1" Then
hlStockInfo.Visible = True
End If
If AccessID(i) = "6" Then
hlKPI.Visible = True
End If
If AccessID(i) = "8" Then
hlForecast.Visible = True
End If
If AccessID(i) = "14" Then
hlMonthly.Visible = True
End If
sub checkaccess()
Dim objArrList As ArrayList
Dim i As Integer
objArrList = New ArrayList
sql = "Select * from MOR_RoleObject where RoleName = '" + Session.Contents("RoleName") + "'"
ad = New SqlDataAdapter(sql, MConn)
ad.Fill(ds, "MyData")
Dim DView As DataView
DView = ds.Tables("MyData").DefaultView
For Each drowview In DView
Dim UserName = drowview.Item("UserName")
Dim AccessID = drowview.Item("AccessID")
objArrList.Add(drowview.Item("AccessID"))
Session("AccessID") = objArrList
Next
objArrList = CType(Session("AccessID"), ArrayList)
For i = 0 To objArrList.Count - 1
If objArrList(i) = "1" Then
hlStockInfo.Visible = True
End If
If objArrList(i) = "6" Then
hlKPI.Visible = True
End If
If objArrList(i) = "8" Then
hlForecast.Visible = True
End If
If objArrList(i) = "14" Then
hlMonthly.Visible = True
End If
Next
end sub
'แล้วมาลองเขียนฟังชั่นดูเอง ซึ่งเขียนไม่ค่อยจะเก่งเลย เขียนแบบนี้ค่ะ
'ในคลาส RoleManager
Public Function AccessObj() As ArrayList
Dim objArrList As ArrayList
Dim i As Integer
objArrList = New ArrayList
sql = "Select * from MOR_RoleObject where RoleName = '" + Session.Contents("RoleName") + "'"
Ad = New SqlDataAdapter(sql, MConn)
Ad.Fill(Ds, "MyData")
Dim DView As DataView
DView = Ds.Tables("MyData").DefaultView
For Each drowview In DView
Dim UserName = drowview.Item("UserName")
Dim AccessID = drowview.Item("AccessID")
objArrList.Add(drowview.Item("AccessID"))
Session("AccessID") = objArrList
Next
objArrList = CType(Session("AccessID"), ArrayList)
end function
'หน้าฟอร์มก็เรียกใช้แบบนี้ค่ะ
Sub CheckAccessObj()
Dim RoleMG As New RoleManager
Dim i As Integer
Dim AccessID As ArrayList
AccessID = RoleMG.AccessObj
For i = 0 To AccessID.Count - 1
If AccessID(i) = "1" Then
hlStockInfo.Visible = True
End If
If AccessID(i) = "6" Then
hlKPI.Visible = True
End If
If AccessID(i) = "8" Then
hlForecast.Visible = True
End If
If AccessID(i) = "14" Then
hlMonthly.Visible = True
End If
Next
End Sub