สำหรับตัวอย่างในตอนนี้จะอาศัยฟอร์มที่เราได้สร้างไว้ในบทความก่อนหน้า ให้ผู้อ่านสร้างฟอร์มตามหัวข้อ
VB.Net จับ Form ใส่ SplitContainer ก่อน เพราะเราจะต้องนำเอาโปรเจกต์ที่ได้สร้างไว้มาต่อยอดทำฟอร์ม login (ใครยังไม่เคยทำรีบไปทำก่อนนะจะบอกให้)
หลังจากนั้นให้สร้างฐานข้อมูล และตารางที่ SQL Server 200x ดังนี้
USE [MYDATA] --เราสร้างไว้ตั้งแต่หัวข้อ VB.Net One Table Data Entryจากนั้นกลับมาที่ Visual Studio 20xx อีกครั้ง แล้วทำตามขั้นตอน ดังนี้
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')
1. ให้กดปุ่ม Ctrl + Shift + A จากนั้นจะปรากฎ หน้าจอดังภาพ

1 คลิกเลือก Windows Form
2 ที่ช่อง Name ตั้งชื่อฟอร์ม : frmLogIn.vb
3 คลิกปุ่ม 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
สวัสดี ได้ข่าวว่า "เหล้าหมาใจดำ" กำลังมาแรง แซง แบล๊กเลเบิ้ล
ขอบคุฌมากครับ
ตอบลบช่วยอธิบายบรรทัดนี้ให้หน่อยค่ะ
ตอบลบUsing connection = New SqlConnection("Data Source=.;Initial Catalog=MYDATA;Integrated Security=True")
ขอบคุณค่ะ
เวลาใช้งานคำสั่งพวก unmaged resource เช่น File, COM wrapper, SQL Connection ซึ่งการใช้คำสั่ง Using ... End Using จะมีการคืนทรัพยากร (dispose) ให้อัตโนมัติ เมื่อเสร็จสิ้นการทำงานภายใต้ using
ตอบลบทำไมมันรันไม่ได้อ่าครับ
ตอบลบ