|
การเข้าสู่ระบบ (Users Login) ก็เพื่อป้องกันผู้ที่ไม่มีสิทธิ (Unauthorized) ในการใช้งานเข้าถึงโปรแกรม นอกไปจากนี้ยังหมายถึงการจำกัดสิทธิ (Rights) ของผู้ใช้งาน (Users) แต่ละคนด้วย โดยข้อมูลของผู้ใช้งานแต่ละคนก็จะถูกจัดเก็บเอาไว้ในตารางข้อมูล ซึ่งจะมีการเรียกใช้งานอยู่บ่อยครั้ง ดังนั้นเพื่อความสะดวกเราจึงต้องควรนำข้อมูลของผู้ใช้งาน มาจัดเก็บเอาไว้ในตัวแปรเพื่อเรียกใช้งาน ตัวแปรที่แอดมินหมายถึงนี้ก็คือ ตัวแปรแบบโครงสร้าง หรือ Structure
สำหรับโค้ดการเข้าสู่ระบบ (Users Login) ด้วย VB6 คลิ๊กอ่านได้ที่นี่
Structures หรือโครงสร้างข้อมูล คือประเภทข้อมูลประเภทหนึ่งในภาษา Visual Basic ที่สามารถมีสมาชิกภายในตัวของมันได้ ลักษณะโครงสร้างของ Structure นั้นจะคล้ายกับคลาส แต่สิ่งที่แตกต่างกันคือ Structure เป็นตัวแปรแบบ Valued type ในขณะที่คลาสเป็นแบบ Reference type ซึ่งเป็นประเภทข้อมูลที่อ้างถึงที่อยู่ของออบเจ็คที่อยู่ในหน่วยความจำแทน
การประกาศตัวแปรแบบโครงสร้าง
- Private Structure ชื่อโครงสร้าง
- ประกาศตัวแปร
- ประกาศตัวแปร
- End Structure
คัดลอกไปที่คลิปบอร์ด
เมื่อนำมาใช้งานจริงด้วยการกำหนด UDT (Users-Defined Type)
- ' User-defined Types (UDTs)
- Public Structure USER_INFO
- ' Primary Key of User
- Dim USER_USERPK As Integer
- ' UserID
- Dim USER_USERID As String
- ' Password
- Dim USER_PASSWORD As String
- ' Administrator is True
- Dim USER_ISADMIN As Boolean
- ' Completename
- Dim USER_COMPLETENAME As String
- ' Time Stamp
- Dim USER_TIMELOGIN As Date
- End Structure
คัดลอกไปที่คลิปบอร์ด
การเรียกใช้งาน
- ' USER_INFO is a template, It can not be stored data.
- ' Assign a variable to a Data Structure (UDTs)
- ' Run through the series via CurrUser.
- Public CurrUser As USER_INFO
- ' Example:
- ' CurrUser.USER_USERID ... Keep UserName string
- ' CurrUser.USER_ISADMIN ... Keep status true/false
คัดลอกไปที่คลิปบอร์ด โครงสร้าง USER_INFO เป็นเพียงต้นแบบ ดังนั้นหากเราต้องการเข้าถึงตัวแปร USER_INFO เราจะต้องเรียกผ่านตัวแปรโครงสร้างอีกที ในที่นี้คือ CurrUser เช่น CurrUser.USER_USERID
มาดูโค้ดส่วนของการทำ Users Login และการเก็บข้อมูลเอาไว้ในตัวแปรแบบโครงสร้าง (frmLogin.vb)
- Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
- Dim Cmd As New OleDbCommand("SELECT * FROM tblUser WHERE " & _
- " [UserID] = UID AND [Password] = PWD ", Conn)
- Dim UserIDParam As New OleDbParameter("UID", Me.txtUserID.Text)
- Dim PasswordParam As New OleDbParameter("PWD", Me.txtPassword.Text)
- Cmd.Parameters.Add(UserIDParam)
- Cmd.Parameters.Add(PasswordParam)
- '//
- If Conn.State = ConnectionState.Closed Then Conn.Open()
- Dim Reader As OleDbDataReader = Cmd.ExecuteReader()
- ' Found data
- If Reader.HasRows Then
- Do While Reader.Read()
- With CurrUser
- '/ Read values in each columns.
- .USER_USERPK = Reader.GetInt32(0) '/ Primary Key
- .USER_USERID = Reader.GetString(1) '/ UserID
- .USER_PASSWORD = Reader.GetString(2) '/ Password
- .USER_COMPLETENAME = Reader(3)
- .USER_TIMELOGIN = Now() '/ Time Stamp
- ' True = Admin
- .USER_ISADMIN = Reader.GetBoolean(4)
- End With
- Loop
- ' Show status
- If CurrUser.USER_ISADMIN Then
- MessageBox.Show("You are logged in : Admin")
- Else
- MessageBox.Show("You are logged in : User")
- End If
- Reader.Close()
- Cmd.Connection.Close()
- Me.Close()
- Else
- MessageBox.Show("Enter your User Name, Password is incorrect.")
- txtUserID.Focus()
- Reader.Close()
- Cmd.Connection.Close()
- End If
- End Sub
คัดลอกไปที่คลิปบอร์ด นั่นคือเมื่อเราสามารถเข้าสู่ระบบเรียบร้อย ก็จะนำข้อมูลผู้ใช้งานแต่ละคนมาเก็บเอาไว้ในตัวแปรแบบโครงสร้าง เช่น CurrUser.USER_USERID = Reader.GetString(1)
มาดูวิธีการเรียกใช้งานตัวแปรแบบโครงสร้าง (frmMain.vb)
- Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton1.Click
- '/ Admin authorized only.
- If CurrUser.USER_ISADMIN Then
- '// Select all records.
- Dim Cmd As New OleDbCommand("SELECT * FROM tblUser", Conn)
- Cmd.Connection.Open()
- Dim Reader As OleDbDataReader = Cmd.ExecuteReader()
- Dim UserInfo As String = ""
- If Reader.HasRows Then
- Do While Reader.Read()
- UserInfo = UserInfo & "User ID: " & Reader.GetString(1) & " - Password: " & Reader.GetString(2) & vbCrLf
- Loop
- End If
- Reader.Close()
- ' Get info from UDTs Or any other information you want.
- UserInfo = UserInfo & "Date-Time login : " & CurrUser.USER_TIMELOGIN
- ' Show detail all users
- MessageBox.Show(UserInfo)
- Else
- ' Normal Users can't view data.
- MessageBox.Show("For Authorized only.")
- End If
- End Sub
คัดลอกไปที่คลิปบอร์ด ในบรรทัดคำสั่ง If CurrUser.USER_ISADMIN Then ก็คือการอ้างถึงค่า (Value) ที่อยู่ในตัวแปรแบบโครงสร้าง โดยที่เราไม่ต้องไปเรียกมาจากตารางข้อมูลใหม่ให้เสียเวลานั่นเอง
ดาวน์โหลดโค้ดต้นฉบับแบบเต็ม VB.NET (2010) ได้ที่นี่
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|