Visual Basic 2005 Enumerations
An enumeration is a list of integer values, each one mapped to a name.
In the example below, we are storing Account category to our class. So we classify Account Category according as creditor, debtor, bank and general. Instead of using literals to describe the various accounts, we’ll use an enumeration with the following names.
'Enumerator for Account Category
Public Enum AccountCategory
Creditor = 1
Debtor = 2
Bank = 3
General = 4
End Enum
The above statements must appear outside any procedure we use in the class. We will place them at the beginning of the file, right after the declaration of the Class.
In our example, the name Creditor corresponds to 1, the name Debtor corresponds to 2, and so on. Notice that we use enumerations to replace numeric constants with more meaningful names. We will see how enumerations are used both in the class and the calling application. The below code shows how enumerations are used in the calling software program.
Select Case itemClicked.Text
Case "&Creditor"
MsgBox("Creditor Accounts")
Dim AccForm As New AccountForm
AccForm.Text = "Creditor Accounts"
AccForm.AccountCat = AccountCategory.Creditor
AccForm.Show() 'Will show accounts form.
Case "&Debtor"
MsgBox("Debtor Accounts")
Dim AccForm As New AccountForm
AccForm.Text = "Debtor Accounts"
AccForm.AccountCat = AccountCategory.Debtor
AccForm.Show()
End Select
In the above code, we check whether the user has selected an account which is equal to AccountCategory enumerator member – Creditor.
As we can see, the members of the Account Category enumeration become properties of the enumerator.
The advantage of using enumerations is that we can manipulate meaningful names instead of numeric constants. This makes your vb code less prone to errors and far easier to understand.
The members of an enumeration are constants.
Because the AccountCategory enumeration was declared as Public, it will be exposed to any application that uses the class.
Another example of enumeration is given below. This example shows how to allow access to an user depending on their username and password.
'Enumerator for access levels
Public Enum BLAccessLevel
BLFullAccess = 1
BLManagerAccess = 2
BLRestrictedAccess = 3
End Enum
#Region "Private Functions"
Private Overloads Sub VerifyAccess(ByVal sUserName As String, ByVal spassword As String)
Dim sRole As String
'Login and authenticate based on passed credentials
PrivateUserRoles.Login(sUserName, spassword)
'The security object will return a Roles property that contains
'all roles associated with given employee
For Each sRole In PrivateUserRoles.Roles()
'Set an appropriate level of authorization based on the assigned roles
Select Case sRole
' Certain employees in HR must have access to all relevant data
Case "HRManager", "HRClerk", "HRPayrollClerk"
PrivateAccessLevel = BLAccessLevel.BLFullAccess
'Managers must be able to view information
Case "Manager", "FactorySupervisor", "QAManager"
PrivateAccessLevel = BLAccessLevel.BLManagerAccess
Case Else
'employees can view Name and extension information
'per our "corporate" policy
PrivateAccessLevel = BLAccessLevel.BLRestrictedAccess
End Select
'Once highest level is set, we can leave
If PrivateAccessLevel = BLAccessLevel.BLFullAccess Then Exit For
Next
End Sub