23 ธันวาคม 2553

VB.Net สร้าง Form Login

หลังจากที่เราได้เรียนรู้การสร้างฟอร์มมาหลายรูปแบบ ในบทเรียนนี้ เราจะมาทำการเรียนรู้วิธีการสร้างฟอร์ม 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

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

WAROCHA กล่าวว่า...

ทำไมมันรันไม่ได้อ่าครับ

sakhon กล่าวว่า...
ความคิดเห็นนี้ถูกผู้เขียนลบ
sakhon กล่าวว่า...

รันอาจจะไม่ผ่าน เพราะว่าขาด sql ที่เป็น server ของผมเป็น Sqlexpress ฟรีแวร์ ซึ่งเป็นในเครื่องตัวเอง แต่ถ้าเป็น Server ที่ผ่านเครือข่าย จะมีวิธี เขียน code อีกอย่างหนึ่ง SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=MYDATA;Integrated Security=True")ลองเอาไปใช้นะครับ

Unknown กล่าวว่า...

ขอบคุณมากค่ะ

"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.