Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > รบกวนเรียนสอบถามอาจารย์และสมาชิกทุกท่านครับ เรื่องการค้นหาข้อมูลโดยอิงจากข้อมูล Import Excel



 

รบกวนเรียนสอบถามอาจารย์และสมาชิกทุกท่านครับ เรื่องการค้นหาข้อมูลโดยอิงจากข้อมูล Import Excel

 



Topic : 136760



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์




ShowIndex

รบกวนเรียนสอบถามอาจารย์และสมาชิกทุกท่านครับ เรื่องการค้นหาข้อมูลโดยอิงจากข้อมูล Import Excel ตารางที่ 1 คอลัม dName
เพื่อมาค้นหาให้ฐานข้อมูล Acess ชื่อ MyData และแสดงข้อมูลในตารางที่ 4 ควรเขียนโค๊ดอย่างไรดีครับผม

Code (VB.NET)
Imports System.Data.OleDb
Imports System.Linq
Imports System.Data.SqlClient
'Imports Microsoft.Office.Core
Imports Excel = Microsoft.Office.Interop.Excel
Imports ExcelAutoFormat = Microsoft.Office.Interop.Excel.XlRangeAutoFormat
Imports Microsoft.Office.Interop
Imports System.IO
Imports System.Xml.XPath
Imports System.Data
Imports System.Xml

Public Class Form1
    Public Conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\MyData.MDB")
    Dim da As OleDbDataAdapter
    Dim dt As DataTable
    Dim sql As String
    Dim Myreader As OleDbDataReader
    Dim cmd As OleDbCommand


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

    Private Sub bt_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_exit.Click
        'Application.Exit()
        Close()

    End Sub

    Private Sub bt_Import_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_Import.Click
        'นำเข้าข้อมูลจาก excel มาใส่ตาราที่ 1
        Dim iconn As OleDbConnection
        Dim idta As OleDbDataAdapter
        Dim idts 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
            DataGridView1.Columns.Clear()

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

            excel = fi.FullName
            iconn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;")
            idta = New OleDbDataAdapter("Select * From [Sheet1$]", iconn)
            idts = New DataSet
            idta.Fill(idts, "[Sheet1$]")
            DataGridView1.DataSource = idts
            DataGridView1.DataMember = "[Sheet1$]"
            iconn.Close()
        End If

    End Sub

    Private Sub bt_showData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_showData.Click
        'เลือกตารางข้อมูลชื่อ Table1 มาแสดงในตารางที่ 2
        sql = "SELECT * From Table1"
        da = New OleDbDataAdapter(sql, Conn)
        Try
            If Conn.State = ConnectionState.Open Then Conn.Close()
            Conn.Open()
            dt = New DataTable
            da.Fill(dt)
            Conn.Close()
            If dt.Rows.Count > 0 Then
                DataGridView2.Columns.Clear()
                DataGridView2.DataSource = dt
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try
    End Sub

    Private Sub btSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSearch.Click
        'dName,SCB,KTB,TMB,UOB
        'ค้นหาข้อมูลจากชื่อ และแสดงข้อมูลในตาราที่ 3
        If Conn.State = ConnectionState.Open Then Conn.Close()
        Conn.Open()

        cmd = New OleDbCommand("Select * From Table1 Where dName=@dName", Conn)
        cmd.Parameters.AddWithValue("dName", TextBox1.Text)
        Dim da As New OleDbDataAdapter
        da.SelectCommand = cmd
        Dim dt As New DataTable
        da.Fill(dt)

        DataGridView3.DataSource = dt

        Conn.Close()

    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

    End Sub
End Class





Tag : .NET, Ms Access, VB.NET, Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2022-07-25 20:54:37 By : tawitsittanong View : 693 Reply : 15
 

 

No. 1



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

Code (VB.NET)
  Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'เช็คว่าใน DataGridView3 มีข้อมูลไม๊ 
if  ........... then

' ถ้ามี forloop ยัดมันลง DataGridView4
 for ............

end if
    End Sub



คร่าวๆ น่าจะประมาณนี้ครับ
ลองแจกแจง remark หรือ comment ให้ชัดเจนก่อนเขียนโค้ดดูครับ
คือ วาง remark หรือ comment ไว้ก่อน อย่าเพิ่งเขียนโค้ด
พอวางลำดับครบแล้ว ค่อยมาเขียนโค้ดลงไปกำกับครับ
แบบนั้น เราจะมองขั้นตอนชัดเจนกว่า ที่เราเขียนโค้ดแล้วค่อยมาเขียน remark หรือ comment






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-07-25 21:15:00 By : lamaka.tor
 


 

No. 2



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : lamaka.tor เมื่อวันที่ 2022-07-25 21:15:00
รายละเอียดของการตอบ ::
ขอบคุณอาจารย์มาก ๆ ครับที่คอยแนะนำตลอด
อาจารย์พอจะเขียนเป็นโค๊ดให้สักหน่อยได้ไหมครับผมหาอ่านในเน็ตวันนี้ไม่เจอเคสตัวอย่างแบบนี้เลยครับ
ต้องบอกว่ากำลังหัดศึกษา VB.NET อยุ่น่ะครับ ต้องรบกวนด้วยครับผม


code1
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-07-25 22:23:49 By : tawitsittanong
 

 

No. 3



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ลองแบบนี้ดูนะครับ

หลักๆ คือ ดึงข้อมูลจาก excel มาลงใน DataGridView1 ก่อน แล้วค่อย select ข้อมูลจาก Table1 ตาม DataGridView1 ทีละแถว เพื่อมาลงใน DataGridView4 อีกที
Code (VB.NET)
'1 ใช้ if เช็คข้อมูลใน DataGridView1 ว่ามีหรือไม่

'2 ถ้ามี ให้ for loop เพื่อ select ข้อมูลจาก Table1 DataGridView3

'3  ใช้ if เช็คข้อมูลใน DataGridView3 ว่ามีหรือไม่

'4 ถ้ามี ให้ for loop เพื่อ นำข้อมูลจาก  DataGridView3 มาลงใน DataGridView4 (ซึ่งเดาว่าน่าจะมีค่าเดียว อยู่แล้ว)

'5
'6
'7


จะเห็นว่า ผมจะข้าม DataGridView2 ไป เนื่องจากไม่มีการเพิ่มข้อมูลลงใน Table1 จึงไม่จำเป็นต้องดึงข้อมูลทั้งหมดมาโชว์ก็ได้ครับ
ใช้แค่ Select * From Table1 Where เพื่อนำข้อมูลไปลง DataGridView3 ได้เลย

ลองดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-07-25 22:53:58 By : lamaka.tor
 


 

No. 4



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : lamaka.tor เมื่อวันที่ 2022-07-25 22:53:58
รายละเอียดของการตอบ ::
ผมใช้จริง ๆ แค่ 3 ตารางครับอาจารย์
ตารางที่ 1 แสดงข้อมูล Import จาก Excel ครับ
ตารางที่ 2 ผมเอาไว้แสดงข้อมูลทั้งหมดในไฟล์ Database MyData.mdb ครับ
ตารางที่ 3 ผมไม่ได้ใช้ครับแต่ว่าเขียนเพื่อเก็บเอาไว้ศึกษาเรื่องการค้นหาด้วย Code Name ครับ *
ตารางที่ 4 อันนี้ที่ต้องการ คือให้แสดงข้อมูลจากฐานข้อมูล MyData.mdb โดยค้นหาอ้างอิงข้อมูลจาก dName ในตารางที่ 1 ครับผม

คำสั่ง Loop เราให้
For i As Integer = 0 To DataGridView1.Rows.Count - 1 แทนไม่ได้เหรอครับอาจารย์

XName = DataGridView1.Rows(i).Cells(0).Value 'กำหนดให้ XName คือค่าแรกของตารางที่ 1
sql = "SELECT * FROM Table1 Where dName='XName '" 'เรียกข้อมูลจาก Table1 ตาม XName

แล้วตัวแปร XName ที่กำหนดขึ้นมาเพื่อเก็บค่า คอลัมแรกของ ตารางที่ 1 ผมเขียนถูกไหมครับ
เพราะว่า ตัวแปร sql เลือกข้อมูลออกมาแสดงผิดพลาดน่ะครับ




ประวัติการแก้ไข
2022-07-25 23:19:27
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-07-25 23:15:01 By : tawitsittanong
 


 

No. 5



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 4 เขียนโดย : tawitsittanong เมื่อวันที่ 2022-07-25 23:15:01
รายละเอียดของการตอบ ::
ใช้ For i As Integer = 0 To DataGridView1.Rows.Count - 1 ได้ ครับ

แต่

sql = "SELECT * FROM Table1 Where dName='XName'"

นั้น เขียนผิด
น่าจะเป็นเป็น
sql = "SELECT * FROM Table1 Where dName='" & XName & "'" ' ต้องมีเครื่องหมาย คำพูด
มากกว่า
หรือแม้ในเว็บ หรือ ยูทูป เขาจะเขียนประมาณนี้

https://www.thaicreate.com/tutorial/sql-where.html
Dim US = "us"
SELECT * FROM customer WHERE CountryCode = 'US'

แต่เราก็ต้องแปลให้เป็น string โดยใช้
"SELECT * FROM customer WHERE CountryCode = 'US'"
ดังนั้น US จะอยู่ใน string ไม่ใช่ ตัวแปร
วิธีที่จะยังคงให้มันเป็นตัวแปรอยู่ คือ เพิ่ม " ลงไปเป็น
"SELECT * FROM customer WHERE CountryCode = '" & US & "'"



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-07-26 00:21:29 By : lamaka.tor
 


 

No. 6



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : lamaka.tor เมื่อวันที่ 2022-07-26 00:21:29
รายละเอียดของการตอบ ::
ขอบคุณในคำแนะนำของอาจารย์ครับผม
ผมเขียนโค๊ดผิดตรงไหนหรือควรเพิ่มแบบไหนดีครับอาจารย์เพราะว่าตารางที่ 4 ช่อง SCB,KTB,TMB,UOB ยังแสดงผลผิดพลาดอยุ่เลยครับผม


code2

รบกวนอาจารย์ด้วยครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-07-26 00:53:13 By : tawitsittanong
 


 

No. 7



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ลองทำความเข้าใจโค้ดนี้ดูครับ


Code (VB.NET)
  Dim dbName As String
  Dim dbAddress As String
  Dim dbZip As String
  Using connObj As New SqlClient.SqlConnection("<connectionString>")
     Using cmdObj As New SqlClient.SqlCommand("select name, address, zip from terr where id = '33334'", connObj)
        connObj.Open()
        Using readerObj As SqlClient.SqlDataReader = cmdObj.ExecuteReader
           'This will loop through all returned records 
           While readerObj.Read
              dbName = readerObj("name").ToString
              dbAddress = readerObj("address").ToString
              dbZip = readerObj("zip").ToString
              'handle returned value before next loop here
           End While
        End Using
        connObj.Close()
     End Using
  End Using


https://stackoverflow.com/questions/10856686/need-to-get-value-from-sql-query
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-07-26 07:55:56 By : lamaka.tor
 


 

No. 8



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : lamaka.tor เมื่อวันที่ 2022-07-26 07:55:56
รายละเอียดของการตอบ ::
อาจารย์เขียนคำตอบให้ผมเลยไม่ได้เหรอครับ อ่านจนตาแดงหมดแล้วครับผม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-07-26 12:13:41 By : tawitsittanong
 


 

No. 9



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์


ยังทำไม่ได้เลยครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-07-30 01:06:58 By : tawitsittanong
 


 

No. 10



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ขอดูโค้ดล่าสุดหน่อยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-08-01 08:14:57 By : lamaka.tor
 


 
วิธีการคิด มันผิดหมดเลยตั้งแต่แรกเริ่มต้น

อยากให้เขียนให้ดูไหม?ล่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-08-03 16:45:34 By : ผ่านมา
 


 
เห็นเงียบหายไปก็เลยนึกถึง ท่าน ขงจื้อ และท่าน เหลาจือ
อยากรู้ไหม?ว่าต้องคิดอย่างไร? ต้องเขียนอย่างไร?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-08-04 18:24:49 By : ผ่านมา
 


 

No. 13



โพสกระทู้ ( 14 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : ผ่านมา เมื่อวันที่ 2022-08-03 16:45:34
รายละเอียดของการตอบ ::
รบกวนอาจารย์ เขียนคำตอบ ให้ด้วยครับผม นึกว่าสงสาร เพิ่งเริ่มศึกษา

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-08-09 19:02:54 By : tawitsittanong
 


 
แยกค้นหาทีละส่วน
1. select เฉพาะคอลัมน์ dName จาก excel หรือ dataset มาเก็บใน array (ดูเรื่อง loop)
2. นำผลข้อ 1. มาใส่ where clause ด้วย IN operator https://www.w3schools.com/sql/sql_in.asp
3. แสดงผลลัพธ์ใน DataGridView

หรือข้อ 1 รวมกับ 2 ทำเป็น subquery ก็ได้
เขียนเลยไม่ได้เพราะไม่มี DB ทดสอบ
ลองศึกษาดู ไม่ยาก ลองผิดลองถูกเดี๋ยวก็ได้
ที่สำคัญอย่าเรียนข้าม ค่อยๆ ต่อเหมือนจิ๊กซอ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-08-10 09:43:54 By : 009
 


 
ตอนนี้อยู่ที่ พม่า มาเที่ยวแหละ เงินเหลือคิดว่ามากแต่ก็ไม่พอ
ทนทนทนอยู่พม่าไป

ตอนนี้ต้องจำใจสอนพวกเด็กฯ พม่า ตามวิชาที่เราถนัดคือวิชา คอมพิวเตอร์
สรุป ไม่ได้สอนหรอก หาข้าวให้พวกเด็กฯ ได้อิ่มท้องก่อน อันนี้สำคัญกว่า
....
....
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-08-10 12:06:05 By : ผ่านมา
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนเรียนสอบถามอาจารย์และสมาชิกทุกท่านครับ เรื่องการค้นหาข้อมูลโดยอิงจากข้อมูล Import Excel
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่