Page 1 of 1

หาค่า Record ที่ไม่ซ้ำกัน ชื่อ Field เหมือนกัน ระหว่าง 2 ตาราง

Posted: Wed Dec 01, 2021 3:49 pm
by Jetnipit
ไปเจอ Code ใน Stackoverflow มาแต่งงตรงนำมาประยุกต์ใช้กับ Form ตัวเองครับ เบื้องต้นลองพยายามปรับแล้ว แต่ยังไม่เข้าใจหลักการใช้ For ดีเท่าไหร่ครับ จึงขอรบกวนทุกท่านหน่อยนะครับ

การทำงานคือ เมื่อกดปุ่ม Check ก็ให้ โชว์ใน Textbox code different ว่า Code ที่ไม่มีเหมือนกันระหว่าง 2 ตารางคืออะไร จากตัวอย่างตารางก็ให้แสดงว่า "F5" ใน Textbox code different

Code: Select all

Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim f As Field
Dim Db As Database
Set Db = CurrentDb()
Set rs1 = Db.OpenRecordset("Table1")
Set rs2 = Db.OpenRecordset("Table2")

  For Each f In rs1.Fields
        If rs1.Fields(f) <> rs2.Fields(f) Then
            Debug.Print "Mismatch found for " + f
        End If

    Next f
8478487.png
89478978.png
ทอสอบตรวจค่าไม่ซ้ำ.7z
อ้างอิงโค้ด : https://stackoverflow.com/questions/221 ... ng-vba-sql

Re: หาค่า Record ที่ไม่ซ้ำกัน ชื่อ Field เหมือนกัน ระหว่าง 2 ตาราง

Posted: Thu Dec 02, 2021 11:22 am
by snasui
:D ควรศึกษา SQL Statement เพื่อ Query เอาค่าที่แตกต่างกันแทนการ Loop ไปทีละบรรทัด หรือหากต้องการจะ Loop ก็จะเป็นการ Loop 2 ชั้น คือ Loop แต่ละค่าใน ตัวแปร rs1 และ แต่ละค่าในตัวแปร rs2

ยกตัวอย่าง rs2 หนึ่งมี 10 Filed ก็จะเป็นการ Loop เอาแต่ละค่า rs1 ไปเช็คแต่ละค่าใน rs2

ในทุกครั้งที่เช็คก็จะบวกตัวแปรไป 1 หากบวกไปถึง 10 แล้วไม่พบค่านั้นก็แสดงไม่เจอให้ฟ้องว่าไม่พบ ถ้าพบก็ให้ออกจาก Loop หรือแล้วแต่กำหนดให้ทำงานใด เช่นนี้เป็นต้น

ตัวอย่าง Code ก็จะเป็น

Code: Select all

For Each f In rs1.Fields
    i = 0
    for each g in rs2.fields
        if g = f then exit for 'or your other functions
        i = i + 1
        if i = 10 then msgbox "Not found"
    next g
Next f