23 ธันวาคม 2010

VB.Net สร้าง Form Login

หลังจากที่เราได้เรียนรู้การสร้างฟอร์มมาหลายรูปแบบ ถึงคราวที่เราจะได้เรียนรู้วิธีการสร้างฟอร์ม Login อันที่จริงทาง Visual Studio ได้เตรียมฟอร์มแบบนี้ไว้ให้อยู่แล้ว แต่เราควรทำเองดีกว่า จริงไหม

สำหรับตัวอย่างในตอนนี้จะอาศัยฟอร์มที่เราได้สร้างไว้ในบทความก่อนหน้า ให้ผู้อ่านสร้างฟอร์มตามหัวข้อ
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 จากนั้นจะปรากฎ หน้าจอดังภาพ







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

สวัสดี ได้ข่าวว่า "เหล้าหมาใจดำ" กำลังมาแรง แซง แบล๊กเลเบิ้ล

4 ความคิดเห็น:

  1. ไม่ระบุชื่อ7 พฤษภาคม 2554, 12:26

    ขอบคุฌมากครับ

    ตอบลบ
  2. ไม่ระบุชื่อ16 พฤศจิกายน 2554, 23:32

    ช่วยอธิบายบรรทัดนี้ให้หน่อยค่ะ
    Using connection = New SqlConnection("Data Source=.;Initial Catalog=MYDATA;Integrated Security=True")
    ขอบคุณค่ะ

    ตอบลบ
  3. เวลาใช้งานคำสั่งพวก unmaged resource เช่น File, COM wrapper, SQL Connection ซึ่งการใช้คำสั่ง Using ... End Using จะมีการคืนทรัพยากร (dispose) ให้อัตโนมัติ เมื่อเสร็จสิ้นการทำงานภายใต้ using

    ตอบลบ
  4. ทำไมมันรันไม่ได้อ่าครับ

    ตอบลบ

"What you will become after reading this article ?"

Copyright(c) 2007 - 2012 by Kasem Kamolchaipisit.