Option Explicit On
Option Strict On
Imports System.Windows.Forms
Imports System.Data
Imports System.Data.OleDb
Public Class FrmAddCountry
Inherits System.Windows.Forms.Form
Dim IsFind As Boolean = False
'เหตุการณ์ฟอร์มโหลด
Private Sub FrmAddJob_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtID.ReadOnly = True
AutoCountryID()
ShowData()
cmdEdit.Enabled = False
End Sub
Private Sub ClearData()
txtCountry.Text = ""
txtIsoCountry.Text = ""
AutoCountryID()
txtIsoCountry.Focus()
End Sub
Private Sub ShowData()
Dim sqlCountry As String = ""
sqlCountry = "SELECT * FROM Country"
If IsFind = True Then
ds.Tables("Country").Clear()
End If
da = New OleDbDataAdapter(sqlCountry, ConnectAccess)
da.Fill(ds, "Country")
'ถ้ามีอย่างน้อย 1 เร็คคอร์ด
If ds.Tables("Country").Rows.Count <> 0 Then
ConToData()
IsFind = True
With grdCountry
.DataSource = ds.Tables("Country")
.Columns(0).HeaderText = "Countryid"
.Columns(1).HeaderText = "ISOCountry"
.Columns(2).HeaderText = "Country"
.Columns(0).Width = 70
.Columns(1).Width = 100
.Columns(2).Width = 140
.Columns(0).ReadOnly = True
.Columns(1).ReadOnly = True
.Columns(2).ReadOnly = True
End With
Else
IsFind = False
grdCountry.DataSource = Nothing
End If
End Sub
Private Sub AutoCountryID()
Dim sqlTmp As String = ""
'ตัวแปรออบเจ็กต์ OleDbcommand ที่ชื่อว่า comTmp
Dim comTmp As OleDbCommand = New OleDbCommand
Dim drTmp As OleDbDataReader
Dim tmpCountryID As Integer = 0
'สร้างชุดคำสั่ง SQL เพื่อเลือกข้อมูล 1 เร็คคอร์ดล่าสุด จากตาราง Member
sqlTmp = "SELECT TOP 1 Countryid FROM Country ORDER BY Countryid DESC"
'เริ่มเชื่อมต่อกับฐานข้อมูล
ConToData()
Try
With comTmp
.CommandType = CommandType.Text
.CommandText = sqlTmp
.Connection = ConnectAccess
drTmp = .ExecuteReader
drTmp.Read()
'อ่านข้อมูลจากฟิลด์ MemberID เก็บไว้ในตัวแปร tmpMemberID
tmpCountryID = CInt(drTmp.Item("Countryid"))
tmpCountryID = tmpCountryID + 1 'เพิ่มค่าอีก 1
'แสดงรหัสลูกค้าที่สร้างได้
txtID.Text = tmpCountryID.ToString("00")
drTmp.Close()
End With
Catch 'กรณีไม่มีเร็คคอร์ดอยู่เลย
txtID.Text = "01"
End Try
End Sub
'เหตุการณ์กดปุ่มเพิ่มข้อมูล
Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
Dim sqlInsert As String = ""
Dim comInsert As New OleDbCommand
If (txtIsoCountry.Text = "") Then
MessageBox.Show("กรุณาป้อนข้อมูลให้ครบด้วยครับ", "ผลการตรวจสอบ", MessageBoxButtons.OK, _
MessageBoxIcon.Warning)
txtIsoCountry.Focus()
Exit Sub
End If
sqlInsert = "INSERT INTO Country (Countryid,ISOCountry,Country)"
sqlInsert &= " VALUES ('" & txtID.Text & "','" & txtISOCountry.Text & "','" & txtCountry.Text & "')"
'เพิ่มข้อมูล
Try
ConToData() 'เชื่อมต่อกับฐานข้อมูล
With comInsert
.CommandType = CommandType.Text
.CommandText = sqlInsert
.Connection = ConnectAccess
.ExecuteNonQuery()
End With
MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้วครับ!", "ผลการทำงาน", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
ClearData()
AutoCountryID()
ShowData()
Catch ex As Exception
MessageBox.Show("Cannot insert data because, " & ex.Message, "Error", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
ShowData()
txtIsoCountry.SelectAll()
End Try
End Sub
'เหตุการณ์กดปุ่ม ยกเลิก
Private Sub cmdCancle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCancle.Click
ClearData()
cmdSave.Enabled = True
End Sub
'เหตุการณ์กดปุ่ม แก้ไข
Private Sub cmdEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEdit.Click
Dim sqlUpdate As String = ""
Dim comUpdate As New OleDbCommand
Dim tmpSelectRow As Integer = 0
If (txtIsoCountry.Text = "") Then
MessageBox.Show("กรุณาป้อนข้อมูลให้ครบด้วยครับ", "ผลการตรวจสอบ", MessageBoxButtons.OK, _
MessageBoxIcon.Warning)
txtIsoCountry.Focus()
Exit Sub
End If
sqlUpdate = "UPDATE Country SET"
sqlUpdate &= " ISOCountry='" & txtISOCountry.Text & "',Country='" & txtCountry.Text & "'"
sqlUpdate &= " WHERE (Countryid='" & txtID.Text & "')"
'แก้ไขข้อมูล
Try
ConToData() 'เชื่อมต่อกับฐานข้อมูล
With comUpdate
.CommandType = CommandType.Text
.CommandText = sqlUpdate
.Connection = ConnectAccess
tmpSelectRow = .ExecuteNonQuery
End With
'ตรวจสอบค่าไอดีที่ส่งมาแก้ไข
If tmpSelectRow = 0 Then
MessageBox.Show("รหัสที่คุณป้อนไม่มี กรุณาลองใหม่", "ผลการตรวจสอบ", MessageBoxButtons.OK, _
MessageBoxIcon.Warning)
txtISOCountry.Focus()
cmdSave.Enabled = True
Exit Sub
End If
MessageBox.Show("แก้ไขข้อมูลเรียบร้อยแล้วครับ!", "ผลการทำงาน", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
ClearData()
ShowData()
cmdSave.Enabled = False
Catch ex As Exception
MessageBox.Show("Cannot edit data because, " & ex.Message, "Error", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
ShowData()
txtISOCountry.SelectAll()
cmdSave.Enabled = True
End Try
End Sub
'เหตุการณ์ดับเปิลที่ DataGridView
Private Sub grdCountry_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdCountry.CellDoubleClick
Dim UserSelectRow As Integer = 0
UserSelectRow = grdCountry.CurrentRow.Index
If IsFind = True Then
txtID.Text = CStr(grdCountry.CurrentRow.Cells(0).Value.ToString)
txtISOCountry.Text = CStr(grdCountry.CurrentRow.Cells(1).Value.ToString)
txtCountry.Text = CStr(grdCountry.CurrentRow.Cells(2).Value.ToString)
txtISOCountry.Focus()
cmdSave.Enabled = False
cmdEdit.Enabled = True
End If
End Sub
End Class
Option Explicit On
Option Strict On
Imports System.Windows.Forms
Imports System.Data
Imports System.Data.OleDb
Public Class FrmAddCountry
Inherits System.Windows.Forms.Form
'Dim IsFind As Boolean = False เอามาทำไมครับ
'เหตุการณ์ฟอร์มโหลด
Private Sub FrmAddJob_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtID.ReadOnly = True
AutoCountryID()
ShowData()
cmdEdit.Enabled = False
End Sub
Private Sub ClearData()
txtCountry.Text = ""
txtIsoCountry.Text = ""
AutoCountryID()
txtIsoCountry.Focus()
End Sub
Private Sub ShowData()
Dim sqlCountry As String = ""
sqlCountry = "SELECT * FROM Country"
'If IsFind = True Then
'ds.Tables("Country").Clear()
'End If
If ds.Tables.Contains("Country") Then
ds.Tables.Remove("Country")
End If
da = New OleDbDataAdapter(sqlCountry, ConnectAccess)
da.Fill(ds, "Country")
'ถ้ามีอย่างน้อย 1 เร็คคอร์ด
If ds.Tables("Country").Rows.Count <> 0 Then
ConToData()
IsFind = True
With grdCountry
.DataSource = ds.Tables("Country")
.Columns(0).HeaderText = "Countryid"
.Columns(1).HeaderText = "ISOCountry"
.Columns(2).HeaderText = "Country"
.Columns(0).Width = 70
.Columns(1).Width = 100
.Columns(2).Width = 140
.Columns(0).ReadOnly = True
.Columns(1).ReadOnly = True
.Columns(2).ReadOnly = True
End With
Else
IsFind = False
grdCountry.DataSource = Nothing
End If
End Sub
Private Sub AutoCountryID()
Dim sqlTmp As String = ""
'ตัวแปรออบเจ็กต์ OleDbcommand ที่ชื่อว่า comTmp
Dim comTmp As OleDbCommand = New OleDbCommand
Dim drTmp As OleDbDataReader
Dim tmpCountryID As Integer = 0
'สร้างชุดคำสั่ง SQL เพื่อเลือกข้อมูล 1 เร็คคอร์ดล่าสุด จากตาราง Member
sqlTmp = "SELECT TOP 1 Countryid FROM Country ORDER BY Countryid DESC"
'เริ่มเชื่อมต่อกับฐานข้อมูล
ConToData()
Try
With comTmp
.CommandType = CommandType.Text
.CommandText = sqlTmp
.Connection = ConnectAccess
drTmp = .ExecuteReader
drTmp.Read()
'อ่านข้อมูลจากฟิลด์ MemberID เก็บไว้ในตัวแปร tmpMemberID
tmpCountryID = CInt(drTmp.Item("Countryid"))
tmpCountryID = tmpCountryID + 1 'เพิ่มค่าอีก 1
'แสดงรหัสลูกค้าที่สร้างได้
txtID.Text = tmpCountryID.ToString("00")
drTmp.Close()
End With
Catch 'กรณีไม่มีเร็คคอร์ดอยู่เลย
txtID.Text = "01"
End Try
End Sub
'เหตุการณ์กดปุ่มเพิ่มข้อมูล
Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
Dim sqlInsert As String = ""
Dim comInsert As New OleDbCommand
If (txtIsoCountry.Text = "") Then
MessageBox.Show("กรุณาป้อนข้อมูลให้ครบด้วยครับ", "ผลการตรวจสอบ", MessageBoxButtons.OK, _
MessageBoxIcon.Warning)
txtIsoCountry.Focus()
Exit Sub
End If
sqlInsert = "INSERT INTO Country (Countryid,ISOCountry,Country)"
sqlInsert &= " VALUES ('" & txtID.Text & "','" & txtISOCountry.Text & "','" & txtCountry.Text & "')"
'เพิ่มข้อมูล
Try
ConToData() 'เชื่อมต่อกับฐานข้อมูล
With comInsert
.CommandType = CommandType.Text
.CommandText = sqlInsert
.Connection = ConnectAccess
.ExecuteNonQuery()
End With
MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้วครับ!", "ผลการทำงาน", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
ClearData()
AutoCountryID()
ShowData()
Catch ex As Exception
MessageBox.Show("Cannot insert data because, " & ex.Message, "Error", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
ShowData()
txtIsoCountry.SelectAll()
End Try
End Sub
'เหตุการณ์กดปุ่ม ยกเลิก
Private Sub cmdCancle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCancle.Click
ClearData()
cmdSave.Enabled = True
End Sub
'เหตุการณ์กดปุ่ม แก้ไข
Private Sub cmdEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEdit.Click
Dim sqlUpdate As String = ""
Dim comUpdate As New OleDbCommand
Dim tmpSelectRow As Integer = 0
If (txtIsoCountry.Text = "") Then
MessageBox.Show("กรุณาป้อนข้อมูลให้ครบด้วยครับ", "ผลการตรวจสอบ", MessageBoxButtons.OK, _
MessageBoxIcon.Warning)
txtIsoCountry.Focus()
Exit Sub
End If
sqlUpdate = "UPDATE Country SET"
sqlUpdate &= " ISOCountry='" & txtISOCountry.Text & "',Country='" & txtCountry.Text & "'"
sqlUpdate &= " WHERE (Countryid='" & txtID.Text & "')"
'แก้ไขข้อมูล
Try
ConToData() 'เชื่อมต่อกับฐานข้อมูล
With comUpdate
.CommandType = CommandType.Text
.CommandText = sqlUpdate
.Connection = ConnectAccess
tmpSelectRow = .ExecuteNonQuery
End With
'ตรวจสอบค่าไอดีที่ส่งมาแก้ไข
If tmpSelectRow = 0 Then
MessageBox.Show("รหัสที่คุณป้อนไม่มี กรุณาลองใหม่", "ผลการตรวจสอบ", MessageBoxButtons.OK, _
MessageBoxIcon.Warning)
txtISOCountry.Focus()
cmdSave.Enabled = True
Exit Sub
End If
MessageBox.Show("แก้ไขข้อมูลเรียบร้อยแล้วครับ!", "ผลการทำงาน", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
ClearData()
ShowData()
cmdSave.Enabled = False
Catch ex As Exception
MessageBox.Show("Cannot edit data because, " & ex.Message, "Error", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
ShowData()
txtISOCountry.SelectAll()
cmdSave.Enabled = True
End Try
End Sub
'เหตุการณ์ดับเปิลที่ DataGridView
Private Sub grdCountry_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdCountry.CellDoubleClick
Dim UserSelectRow As Integer = 0
UserSelectRow = grdCountry.CurrentRow.Index
If IsFind = True Then
txtID.Text = CStr(grdCountry.CurrentRow.Cells(0).Value.ToString)
txtISOCountry.Text = CStr(grdCountry.CurrentRow.Cells(1).Value.ToString)
txtCountry.Text = CStr(grdCountry.CurrentRow.Cells(2).Value.ToString)
txtISOCountry.Focus()
cmdSave.Enabled = False
cmdEdit.Enabled = True
End If
End Sub
End Class