สอบถามการวนลูปใน marcro
กระทู้เก่าบอร์ด อ.Yeadram

 1,981   6
URL.หัวข้อ / URL
สอบถามการวนลูปใน marcro

คือดิฉันเป็นมือใหม่หัดเขียนค่ะ เขียน code vba ไม่เป็นค่ะ เลยลองเขียน
macro ใน ACCESS ใช้งานค่ะ
เริ่มเลยละกันนะคะ
คือมี table ชื่อ TBLNAME ค่ะ มี field empno,empname
เก็บรหัสพนักงานและชื่อพนักงานทั้งหมด
และดิฉันก็สร้าง query : qryname ผูกกับ tblname ค่ะ
และสร้าง form : frmname ผูกกับ query : qryname ค่ะ
ใน macro ดิฉันใช้คำสั่ง openform ตามด้วยการระบุชื่อ form :frmname ค่ะ
มันจะได้ record แรกเสมอ มีวิธีการอย่างไรบ้างมั้ยคะที่จะให้ มันอ่านที่ละเรคอร์ด
เพื่อที่จะได้ทำงานอย่างอื่น ... ก่อนถึงจะไปอ่านเรคอร์ดถัดไปนะค่ะ

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

1 @R07239
ประเด็นคำถามอยู่ตรงนี้ "มันจะได้ record แรกเสมอ มีวิธีการอย่างไรบ้างมั้ยคะที่จะให้ มันอ่านที่ละเรคอร์ด
เพื่อที่จะได้ทำงานอย่างอื่น ... ก่อนถึงจะไปอ่านเรคอร์ดถัดไปนะค่ะ"

แยกคำถามออกมาก็จะเจอสองประเด็นหลักๆ
- มันจะได้ record แรกเสมอ
- มีวิธีการอย่างไรบ้างมั้ยคะที่จะให้ มันอ่านที่ละเรคอร์ด

ประเด็นแรก "มันจะได้ record แรกเสมอ"
ขอชี้แจงว่า มันไม่ใช่ทฤษฎีที่ตายตัวเสมอไปครับ มันขึ้นอยู่กับว่าคุณออกแบบมันเป็นแบบ contineous หรือ single ถ้าคุณออกแบบฟอร์มเป็นแบบ contineous มันก็จะโหลดข้อมูลมาให้คุณทันทีอย่างน้อย 30 เรคคอร์ด ครับ และในคำถามไม่ได้แจ้งมาว่า การที่ได้เรคคอร์ดแรกเสมอนั้น เป็นปัญหากับคุณหรือเปล่า การได้เรคคอร์ดแรกเสมอ มันตรงความต้องการของคุณหรือไม่ ต้องการแก้ไขหรือไม่ (แต่ละงาน แต่ละคนอาจมีความต้องการที่แตกต่าง บางฟอร์ม บางงาน บางโปรแกรมของผม ก็ต้องการเพียงแค่ให้มันแสดงเรคคอร์ดแรกเท่านั้นจริงๆ ดังนั้นลักษณะที่เกิดกับคุณนี้ จึงไม่ได้เป็นปัญหาสำหรับผม)

ประเด็นที่สอง "มีวิธีการอย่างไรบ้างมั้ยคะที่จะให้ มันอ่านที่ละเรคอร์ด"
อันนี้ต้องขยายความให้มากกว่านี้ครับ คำว่า "มันอ่าน" ในความหมายของคุณ คืออะไร หรืออย่างไร
2 @R08316
ขอถามคุณ yeadram ต่อนะคะ
ตัวอย่างข้อมูลนะคะ
empno      empnam
z0001       test1
z0002       test2
z0003       test3
z0004       test4
คำว่า มันจะได้ record แรกเสมอ นั้น พรไม่ได้ต้องการอย่างนั้นค่ะ
พรต้องการให้อ่านทีละ record เพื่อที่เมื่ออ่าน z0001 แล้วพรจะให้
ไปทำงาน อื่น ๆ ต่อ หลังจากจบแล้ว ก็ให้กลับมาอ่าน z0002 ต่อ
ไม่ทราบว่า มีวิธีการไหนที่จะให้อ่านจนจบข้อมูลทั้ง table หรือเปล่าค่ะ
3 @R08321
ขอเข้ามาเสริมให้อาจารย์ Yeadram ...มือใหม่เหมือนกัน
คำถามต้องชัดเจนกว่านี้หรือเปล่าครับ

"...ต้องการให้อ่านทีละ record เพื่อที่เมื่ออ่าน z0001 แล้วพรจะให้
ไปทำงาน อื่น ๆ ต่อ..."

ที่ให้ไปทำงานอื่น ๆคืออะไรครับ ไปออกรีพอร์ต, ไปรันคิวรี ฯลฯ


4 @R08333
เอาเป็นว่าอย่างนี้นะคะ
มี table ชื่อ TBLNAME ค่ะ มี field empno,empname
เก็บรหัสพนักงานและชื่อพนักงานทั้งหมด
และดิฉันก็สร้าง query : qryname ผูกกับ tblname ค่ะ
และสร้าง form : frmname ผูกกับ query : qryname ค่ะ
ใน macro ดิฉันใช้คำสั่ง openform ตามด้วยการระบุชื่อ form :frmname ค่ะ
ยกตัวอย่างข้อมูลของ TBLNAME นะคะ
empno      empnam
z0001       test1
z0002       test2
z0003       test3
z0004       test4
ดิฉันต้องการให้ทำงานอย่างนี้นะคะ
อ่าน record 1 ได้ empno = z0001 ให้ show MSGBOX = z0001
อ่าน record 2 ได้ empno = z0002 ให้ show MSGBOX = z0002
อ่าน record 3 ได้ empno = z0003 ให้ show MSGBOX = z0003
อ่าน record 4 ได้ empno = z0004 ให้ show MSGBOX = z0004
ถ้ามีข้อมูลและอ่านครบทุก record ให้ show MSGBOX = END OF FILE
สิ่่งที่ทำได้ตอนนี้คือ
อ่าน record 1 ได้ empno = z0001 ให้ show MSGBOX = z0001
ไม่รู้คำสั่งที่จะอ่านให้ได้ record ต่อ ๆ ไป จนกระทั่งครบทุก record ค่ะ
5 @R08335
จำเป็นต้องใช้ Macro ในการเขียนเท่านั้นหรือครับ
ใช้ code vb ไม่ได้หรือครับ ถ้าได้เด๋วคงมีคนช่วยตอบ
6 @R08374
ยอมรับว่าเขียนไม่เป็นค่ะ และเห็นใน marcro มีคำสั่ง
ให้สามารถนำไปใช้ได้เลย ก็เลยลองทำดูค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2633s