Imports System.Data.OleDb
Imports System.Data
Public Class Form1
Dim con As New OleDbConnection
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Dim dt As New DataTable
Dim inttype As Integer
Dim dwvet As New DataView
Dim dwfru As New DataView
Dim dwsee As New DataView
Private Sub InitialControl()
'กำหนดค่าเริ่มต้นของคอนโทรล
radvet.Checked = False
radfru.Checked = False
radsee.Checked = False
'********************
txt1.Text = ""
'***โค้ดเพิ่มเติมจากเดิม*****
rad1.Checked = False
rad2.Checked = False
txt1.Enabled = False
txt1.Text = ""
txt2.Enabled = False
txt2.Text = ""
'********************
txt2.Text = ""
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
InitialControl() 'เรียกโปรแกรมย่อยสำหรับกำหนดค่าเริ่มต้น
'คิวรี่ฐานข้อมูล (ใช้รูปแบบการเชื่อมต่อแบบ Disconnect กับฐานข้อมูล )
'โดยใช้การคิวรี่ข้อมูลแล้ว เก็บค่าไว้ในดาต้าเซต
'ถ้าเป็นการเชื่อมต่อแบบ Connect กับฐานข้อมูล จำต้องมีการ Open และ Close การเชื่อมต่อฐานข้อมูล
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\admim\Documents\ฐานข้อมูล5.accdb"
con.Open()
ds.Tables.Add(dt)
da = New OleDbDataAdapter("SELECT * FROM Tb_Need", con)
da.Fill(dt)
End Sub
Private Sub radvet_CheckedChanged(sender As Object, e As EventArgs) Handles radvet.CheckedChanged
Try
'ถ้าเลือกผัก ตัวแปร inttype มีค่าเป็น 1
If radvet.Checked = True Then
inttype = 1
radfru.Checked = False
radsee.Checked = False
'*****โค้ดส่วนเพ่ิ่มเติม********
'ใช้ Datview เป็นตัวมากรองการแสดง โดยรับข้อมูลทั้งหมดมาจาก ดาต้าเทเบิ้ลที่ชื่อ ds
'เลือกเฉพาะข้อมูลที่มี Type = 1 แล้วให้เรียงตัวตัวอักษรตามฟิล ID ที่อยู่ในฐานช้อมูล
DataGridView1.DataSource = Nothing
dwvet = New DataView(ds.Tables(0), "need_type = 1", "ID", DataViewRowState.CurrentRows)
DataGridView1.DataSource = dwvet 'เลือกเฉพาะข้อมูลที่มี need_type = 1 แล้วให้เรียงตัวตัวอักษรตามฟิล ID ที่อยู่ในฐานช้อมูล
DataGridView1.Columns(0).Visible = False
DataGridView1.Columns(1).Visible = True
DataGridView1.Columns(2).Visible = True
DataGridView1.Columns(3).Visible = True
DataGridView1.Columns(4).Visible = True
DataGridView1.Columns(5).Visible = True
DataGridView1.Columns(6).Visible = True
DataGridView1.Columns.Item(1).Width = 150
DataGridView1.Columns.Item(2).Width = 70
DataGridView1.Columns.Item(3).Width = 105
DataGridView1.Columns.Item(4).Width = 70
DataGridView1.Columns.Item(5).Width = 70
DataGridView1.Columns.Item(6).Width = 90
End If
If Not con.State = ConnectionState.Open Then
con.Open()
End If
Dim da As New OleDbDataAdapter
Dim dt As New DataTable
da = New OleDbDataAdapter("SELECT * FROM Purchase1", con)
da.Fill(dt)
DataGridView2.DataSource = dt.DefaultView
DataGridView2.Columns(0).Visible = True
DataGridView2.Columns(1).Visible = True
DataGridView2.Columns(2).Visible = False
DataGridView2.Columns(3).Visible = True
DataGridView2.Columns(4).Visible = True
DataGridView2.Columns(5).Visible = True
DataGridView2.Columns(6).Visible = True
DataGridView2.Columns(7).Visible = False
DataGridView2.Columns(8).Visible = False
DataGridView2.Columns(9).Visible = False
DataGridView2.Columns.Item(0).Width = 150
DataGridView2.Columns.Item(1).Width = 100
DataGridView2.Columns.Item(3).Width = 80
DataGridView2.Columns.Item(4).Width = 100
DataGridView2.Columns.Item(5).Width = 100
DataGridView2.Columns.Item(6).Width = 100
con.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
End Try
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'สร้างตัวแปรเพื่อเก็บค่าจำนวนจากการป้อน
Dim intFillQuantity As Integer = 0
'*******ตรวจสอบว่าได้ป้อนจำนวนหรือไม่ ถ้าไม่ได้ป้อนแสดงคำเตือน
If txt1.Enabled = True Then
If txt1.Text = "" Then
MessageBox.Show("กรุณากรอกจำนวนลงในช่อง")
Return
Else
intFillQuantity = CInt(txt1.Text)
End If
End If
If txt2.Enabled = True Then
If txt2.Text = "" Then
MessageBox.Show("กรุณากรอกจำนวนลงในช่อง")
Return
Else
intFillQuantity = CInt(txt2.Text)
End If
End If
'*******ค้นหาตำแหน่งของประเภทที่เลือกไว้ในหน้าโปรแกรม ถ้าตรงกับเลขในดาต้าเทเบิ้ล ให้ใส่ค่าที่ป้อนลงในคอลัมน์ qua
For Each dr As DataRow In dt.Rows
If inttype = dr("need_type") Then
dr("quanlity") = intFillQuantity
dr("Need") = CInt(dr("quanlity")) * CInt(dr("constant"))
End If
Next
'คำสั่งในการอัพเดทข้อมูลในดาต้าเซต ไปยังฐานข้อมูล (ตัว OleDbCommandBuilder จะทำให้อัตโนมัติ)
Dim cb As New OleDbCommandBuilder(da)
da.Update(ds.Tables(0))
'ให้ตาต้าเซ็ตเกิดการเปลี่ยนแปลง ทำให้มีผลกับข้อมูลใน Datagridview ของเรา เปลี่ยนแปลงไปด้วย
ds.AcceptChanges()
MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว")
End Sub