หลังจากที่เราได้เรียนรู้การสร้างฟอร์มมาหลายรูปแบบ ในบทเรียนนี้ เราจะมาทำการเรียนรู้วิธีการสร้างฟอร์ม Login
ตัวอย่างในตอนนี้จะอาศัยฟอร์มที่เราได้สร้างไว้ในบทความก่อนหน้า ให้ผู้อ่านสร้างฟอร์มตามหัวข้อ
VB.Net จับ Form ใส่ SplitContainer ก่อน เพราะเราจะต้องนำเอาโปรเจกต์ที่ได้สร้างไว้มาต่อยอดทำฟอร์ม login (ใครยังไม่เคยทำรีบไปทำก่อนนะจะบอกให้)
หลังจากนั้นให้สร้างฐานข้อมูล และตารางที่ SQL Server 200x ดังนี้
USE [MYDATA] --เราสร้างไว้ตั้งแต่หัวข้อ VB.Net One Table Data Entry
GO
CREATE TABLE [dbo].[tblUser](
[USER_ID] [varchar](15) NOT NULL,
[PASSWORD] [varchar](15) NOT NULL,
[USERNAME] [varchar](50) NULL,
CONSTRAINT [PK_tblUser] PRIMARY KEY CLUSTERED
(
[USER_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
--ทำการเพิ่มข้อมูลภายใต้ SQL Server ดังนี้
INSERT INTO tblUSER VALUES('kasem','5555','Kasem Kamolchaipisit')
จากนั้นกลับมาที่ Visual Studio 20xx อีกครั้ง แล้วทำตามขั้นตอน ดังนี้
1. ให้กดปุ่ม Ctrl + Shift + A จากนั้นจะปรากฎ หน้าจอดังภาพ

- คลิกเลือก Windows Form
- ที่ช่อง Name ตั้งชื่อฟอร์ม : frmLogIn.vb
- คลิกปุ่ม Add
- ที่ช่อง Name ตั้งชื่อฟอร์ม : frmLogIn.vb
- คลิกปุ่ม Add
2. ที่ฟอร์ม frmLogIn ให้สร้างคอนโทรลต่าง ๆ ดังภาพ

กำหนด Property ของคอนโทรลต่าง ๆ ดังนี้
หมายเลข 1 กำหนด
(Name) = txtUser_ID
MaxLength = 15
หมายเลข 2 กำหนด
(Name) = txtPassword
MaxLength = 15
PasswordChar = *
หมายเลข 3 กำหนด
(Name) = btnLogIn
หมายเลข 4 กำหนด
(Name) = btnExit
3. ที่ฟอร์ม frmLogIn ให้ Double Click เมาส์ ที่ว่าง ๆ ของฟอร์ม เพื่อเปิดหน้าต่างเขียนโค้ดคำสั่ง
ให้เขียนคำสั่งดังนี้
ให้เขียนคำสั่งดังนี้
Imports System.Data
Imports System.Data.SqlClient
Public Class frmLogIn
Public pUser_id As String = ""
Public pPassword As String = ""
Private Sub btnLogIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogIn.Click
Dim queryString As String = "SELECT * FROM tblUser WHERE USER_ID = '" & txtUser_ID.Text & "'"
Using connection = New SqlConnection("Data Source=.;Initial Catalog=MYDATA;Integrated Security=True")
Dim command As New SqlCommand(queryString, connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
If reader.HasRows = 0 Then
MessageBox.Show("Invalid User", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
txtUser_ID.Focus()
Else
reader.Read()
pUser_id = reader("user_id")
pPassword = reader("password")
If txtPassword.Text.Trim = pPassword.Trim Then
Me.Hide()
' Complete
Dim frm As New Form1()
frm.Show()
Else
MessageBox.Show("Password not match", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
txtPassword.Focus()
End If
End If
reader.Close()
End Using
End Sub
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
Me.Close()
End Sub
End Class
เพิ่มเติม เนื่องจากฟอร์ม frmLogIn จะต้องถูกกำหนดให้เปิดเป็นฟอร์มแรก (startup form) ดังนั้นเราต้องไปกำหนด startup form ใหม่ โดยคลิกที่เมนู Project เลือก myFormSplitContainer Properties....
สำหรับ myFormSplitContainer คือชื่อ Project ที่เราสร้างไว้ตอนแรก ดังนั้นถ้าผู้อ่านตั้งชื่อเป็นอย่างอื่นชื่อนี้ก็จะเปลี่ยนไป

จากนั้นให้ไปเปิดฟอร์ม ชื่อ From1 ที่เราทำไว้ในหัวข้อ VB.Net จับ Form ใส่ SplitContainer แล้วเพิ่มคำสั่ง ดังนี้
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
frmLogIn.Close()
End Sub
การเพิ่มคำสั่งเพื่อเวลาเราปิดฟอร์ม Form1 แล้วให้ปิดฟอร์ม frmLogIn ด้วย ไม่อย่างนั้นโปรแกรมที่เราสร้างมาจะยังไม่ปิดตัวเองและยังคงค้างอยู่ใน memory
สวัสดี ได้ข่าวว่า "เหล้าหมาใจดำ" กำลังมาแรง แซง แบล๊กเลเบิ้ล
7 ความคิดเห็น:
ขอบคุฌมากครับ
ช่วยอธิบายบรรทัดนี้ให้หน่อยค่ะ
Using connection = New SqlConnection("Data Source=.;Initial Catalog=MYDATA;Integrated Security=True")
ขอบคุณค่ะ
เวลาใช้งานคำสั่งพวก unmaged resource เช่น File, COM wrapper, SQL Connection ซึ่งการใช้คำสั่ง Using ... End Using จะมีการคืนทรัพยากร (dispose) ให้อัตโนมัติ เมื่อเสร็จสิ้นการทำงานภายใต้ using
ทำไมมันรันไม่ได้อ่าครับ
รันอาจจะไม่ผ่าน เพราะว่าขาด sql ที่เป็น server ของผมเป็น Sqlexpress ฟรีแวร์ ซึ่งเป็นในเครื่องตัวเอง แต่ถ้าเป็น Server ที่ผ่านเครือข่าย จะมีวิธี เขียน code อีกอย่างหนึ่ง SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=MYDATA;Integrated Security=True")ลองเอาไปใช้นะครับ
ขอบคุณมากค่ะ
แสดงความคิดเห็น