tawit โพสต์ 2025-7-7 17:25:47

รบกวนสอบถาม วิธีลูปเช็คข้อมูลจากตารางดาต้ากริด ครับผม



รบกวนสอบถามครับผม ตาราง ที่ 1 เป็น ข้อมูล Acess ตารางที่ 2 เป็น ข้อมูลที่ นำเข้าจากไฟล์ Excel ครับผม
ตารางที่ 3 ต้องการข้อมูล จากฐานข้อมูล Acess โดยลูปค้นหา จากชื่อ ในตารางที่ 2 แล้วนำมาแสดงใน ตารางที่ 3
แต่ ผมไม่ทราบว่าต้อง เขียนคำสั่งแบบไหน ดี รบกวนช่วยชี้แนะ ด้วยครับผม
โค๊ดที่ผมลองเขียนครับ ใน Button3 ผมควรแก้ไขอย่างไรดีครับผม ขอบพระคุณพื้นที่ในการโพสถามครับผม
Imports System.Data.OleDb
Imports System.IO

Public Class Form1
    Public Conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\MyData.MDB")

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Dim sql As String = "SELECT * FROM Table1"
      Dim cmd As OleDbCommand
      Dim dr As OleDbDataReader
      cmd = New OleDbCommand(sql, Conn)

      DataGridView1.Columns.Add("c1", "ชื่อ")
      DataGridView1.Columns.Add("c2", "SCB")
      DataGridView1.Columns.Add("c3", "KTB")
      DataGridView1.Columns.Add("c4", "TMB")
      DataGridView1.Columns.Add("c5", "UOB")

      DataGridView1.Columns(0).Width = 45
      DataGridView1.Columns(1).Width = 45
      DataGridView1.Columns(2).Width = 45
      DataGridView1.Columns(3).Width = 45
      DataGridView1.Columns(4).Width = 45

      Try
            If Conn.State = ConnectionState.Open Then Conn.Close()
            Conn.Open()

            dr = cmd.ExecuteReader
            DataGridView1.Rows.Clear()

            While dr.Read
                DataGridView1.Rows.Add(dr(0), dr(1), dr(2), dr(3), dr(4))
            End While
            Conn.Close()
            cmd.Dispose()

      Catch ex As Exception

            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
      End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      'นำเข้าข้อมูลจาก excel มาใส่ตารางที่ 2
      Dim econn As OleDbConnection
      Dim eda As OleDbDataAdapter
      Dim eds As DataSet
      Dim excel As String
      Dim OpenFileDialog As New OpenFileDialog

      OpenFileDialog1.FileName = ""
      OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop
      OpenFileDialog1.Filter = "Excel files (*.xlsx)|*.xlsx|XLS Files (*.xls)|*xls"

      If (OpenFileDialog1.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
            DataGridView2.Columns.Clear()

            Dim fi As New FileInfo(OpenFileDialog1.FileName)
            Dim FileName As String = OpenFileDialog1.FileName

            excel = fi.FullName
            econn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;")
            eda = New OleDbDataAdapter("Select * From ", econn)
            eds = New DataSet
            eda.Fill(eds, "")

            DataGridView2.DataSource = eds
            DataGridView2.DataMember = ""
            econn.Close()
      End If
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
      'ค้นหาแบบเจาะจง เช่น ผู้ใช้ชื่อ C
      '      Dim cmd1 As New OleDbCommand("SELECT * FROM Table1 Where dName like '%' +@Name1+ '%' ", Conn)
      Dim cmd1 As New OleDbCommand("SELECT dName, SCB, KTB, TMB, UOB FROM Table1 Where dName like '%' +@Name1+ '%' ", Conn)
      cmd1.Parameters.AddWithValue("@Name1", TextBox1.Text)

      DataGridView3.ClearSelection()


      Dim da As New OleDbDataAdapter
      da.SelectCommand = cmd1
      Dim table1 As New DataTable
      table1.Clear()
      da.Fill(table1)
      DataGridView3.DataSource = table1
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
      'ค้นหาข้อมูลจาก MyData.mdb โดยลูปจากชื่อ ในตารางที่ 2 แล้วนำมาแสดง ในตารางที่ 3

      If DataGridView2.Rows.Count = 0 Then
            Exit Sub
      Else
      End If
      For i As Integer = 0 To DataGridView2.Rows.Count - 1

            TextBox1.Text = DataGridView2.Rows(i).Cells(0).Value 'กำหนดให้ TextBox1.Text เก็บค่า จาก ตารางที่ 1 คอลัมที่ 1

            Dim SearchQuery As String = "SELECT dName, SCB, KTB, TMB, UOB FROM Table1 Where dName='" & TextBox1.Text & "'"
            Dim cmd1 As New OleDbCommand(SearchQuery, Conn)

            cmd1.Parameters.AddWithValue("@dName1", TextBox1.Text)

            Dim da As New OleDbDataAdapter
            da.SelectCommand = cmd1
            Dim dt As New DataTable
            da.Fill(dt)

            DataGridView3.DataSource = dt

      Next

      Conn.Close()

    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
      'นำตารางที่ 2 และ 3 มาบวกกัน แล้วแสดงผลลัพ ในตารางที่ 4
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
      'นำผลลัพที่ได้จากตารางที่ 4 กลับไปบันทีกที่ MyData.mdb โดยลูปจากชื่อ ในตารางที่ 4
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
      'ปิดโปรแกรมจบการทำงาน
      Me.Dispose()
      Application.Exit()
      'Close()

    End Sub

End Class


หน้า: [1]
ดูในรูปแบบกติ: รบกวนสอบถาม วิธีลูปเช็คข้อมูลจากตารางดาต้ากริด ครับผม