วนลูป อ้างขัอมูลใน Query อื่นๆ
กระทู้เก่าบอร์ด อ.Yeadram

 1,543   7
URL.หัวข้อ / URL
วนลูป อ้างขัอมูลใน Query อื่นๆ

           Dim dbs As Database, rstQ, rstT As Recordset

            Set dbs = CurrentDb
            Set rstQ = dbs.OpenRecordset("คิวรี่1", dbOpenSnapshot)
            Set rstT = dbs.OpenRecordset("ตาราง1", dbOpenDynaset)
            Do Until rstQ.EOF
                    rstT.addNew
                    rstT!SEQ= DLookup("[ข้อมูลในฟิลด์]", "คิวรี่3", "[ID_member]=[ID_member]")
                    rstT.update
                    rstQ.MoveNext
            Loop

ผมตัดตอนโค๊ตมาในส่วนของคำถามครับ
คือ ผมต้องการให้ข้อมูลในคิวรี่1 ไปอยู่ในตาราง1 ซึ่ง ข้อมูลในคิวรี่1 ไม่พอในการนำมาใช้ต้อง Dlookup
ข้อมูลจากหลายคิวรี่ คำถามของผมคือ ผมอ้างอิงเงื่อนไขไม่ถูก ให้ ID_member ของคิวรี่1 ตรงกับ คิวรี่3

ผมลองรันโค๊ตแล้ว มันไม่ Error แต่ข้อมูลมันไม่ออกมา รบกวนอาจารย์และเพื่อนๆ ด้วยครับ

7 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R13914
คิดว่ามีวิธีง่ายกว่าเขียนวนลูปแบบนี้ด้วย SQL ครับ
แต่เนื่องจากไม่เห็นข้อมูล ก็ให้คำแนะนำตามที่เห็นก่อนก็แล้วกัน

จาก
rstT!SEQ= DLookup("[ข้อมูลในฟิลด์]", "คิวรี่3", "[ID_member]=
[ID_member]")
น่าจะเปลี่ยนเป็นแบบนี้ครับ
rstT!SEQ= DLookup("[ข้อมูลในฟิลด์]", "คิวรี่3", "[ID_member]=" & rstQ!ID_Member)
2 @R13915
อาจารย์ครับ ยังError อยู่ครับ แบบนี้ผมก็ลองแล้ว น่าจะอยู่ที่ Syntex รึปล่าวครับ
3 @R13916
ID_Member เป็น text
rstT!SEQ= DLookup("[ข้อมูลในฟิลด์]", "คิวรี่3", "[ID_member]='" & rstQ!ID_Member & "'" )

หรือ ตัวเลข
rstT!SEQ= DLookup("[ข้อมูลในฟิลด์]", "คิวรี่3", "[ID_member]=" & rstQ!ID_Member)
4 @R13917
คุณ un ฟ้อง error อย่างไร แจ้งด้วยครับ
5 @R13918
ตอนอาจารย์พิชัยตอบมาแล้ว Error ผมนึกถึงอาจารย์ ditasilk เลย เพราะเรื่อง Syntax แบบเนี้ย อาจารย์เก่ง
สรุปว่า ID_Member ของผมเป็น Text เลยใช้สูตรของอาจารย์พิชัยไม่ได้
อาจารย์ ditasilk อธิบาย Qote กับ Duble Qote ที่ใส่มาให้หน่อยนะครับ
ตอนแรกผมจะทำแบบนี้ แต่ไม่เข้าใจ รองผิดลองถูกอยู่หลายแบบ แต่ยังไม่ได้
เห็นอาจารย์พิชัย บอกวิธีอื่นดีกว่า เลย ไปลองดึงค่าลงในคิวรียังทำไม่เสร็จ
อาจารย์ ditasilk มาตอบพอดี เลยทำได้แล้วครับ

ขอบพระคุณอาจารย์พิชัย และ อาจารย์ ditasilk ด้วยครับ
6 @R13921
ที่จริงเรื่องการเขียนต่อสายอักขระ มีอยู่ในตำรา อยู่แล้วครับ อ.แต่ละท่านก็ทราบกันดีอยู่แล้ว แต่ในโจทย์ที่คุณ UN ให้มา อย่างไร อ.แต่ละท่านก็หยิบมาใช้เลย ผมเข้ามาทีหลัง ก็ได้แต่ตั้งสมมุติฐานว่า ถ้า error อีก ก็น่าจะเป็นเรื่องของ data type เป็นส่วนใหญ่ ซึ่งเวลาต่อสายอักขระ พวก text หรือ number จะต้องแยกแยะให้ รับรู้ได้ ผมยกตัวอย่าง เช่น

i = 1 จะรู้ว่า เป็น ตัวเลข
แต่
i="1" จะเป็น text
เช่นกัน เวลาคุณ UN ต่อสายอักขระ ที่เป็น Text ก็ต้องมี Single หรือ Double Quote ให้ประโยคด้วยครับ
ผมยกตรงส่วนหลังมาดู
"[ID_member]=' "     & rstQ!ID_Member & " ' "
"[ID_member]=' " ส่วนนี้จะเติม single quote ภายใน Double quote เพื่อใช้นำหน้าข้อมูล rstQ!ID_Member
และตามด้วย Single quote ภายใน Double quote (" ' ")
เพื่อปิดส่วนหลัง
ถ้า rstQ!ID_Member มีค่า = abc โดยไม่มี Single Quote หรือ double quote ปิดหน้าหลังค่าก็ผิดพลาดตามที่มันฟ้อง













7 @R13922
ก่อนอาจารย์พิชัย ตอบผมก็ลองแบบนี้ "[ID_member]=rstQ!ID_Member")
เพราะเข้าใจว่ามันต้องมีเครื่องหมาย Double Quote เปิดปิด
แต่พออาจารย์พิชัยตอบ ทำให้นึกขึ้นได้ว่า น่าจะเกี่ยวกับเครื่องหมาย Single หรือ Double Quote
ผมลองผิดลองถูกอยู่นานเพราะไม่ได้เข้าใจวิธีใช้ จนอาจารย์ ditasilk มาตอบเลยทำให้นึกถึง
ตอน Copy โคตที่คล้ายๆ กันนี้มาใช้ ทำไมบางครั้งใช้ได้ บางครั้งไม่ได้ เพราะว่ามันเกี่ยวกับ
Datatype นี่เอง เครื่องหมาย Single หรือ Double Quote การใช้งานคล้ายกัน ผมเข้าใจว่า
ถ้ามันใช้ Double Quote ทั้งหมด โปรแกรมจะสับสน ในการจัด Sub ของแต่ละชุด ดูแล้วมันก็ งง น่าดู

ขอบพระคุณ อาจารย์พิชัย อาจารย์ ditasilk ที่ช่วยให้งานลื่นไหล และเพิ่มความรู้ขึ้นมาอีกครับ /|\
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.4107s