กระทู้เก่าบอร์ด อ.Yeadram
1,985 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 แรกเสมอ มีวิธีการอย่างไรบ้างมั้ยคะที่จะให้ มันอ่านที่ละเรคอร์ด
เพื่อที่จะได้ทำงานอย่างอื่น ... ก่อนถึงจะไปอ่านเรคอร์ดถัดไปนะค่ะ
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
2 @R08316
ขอถามคุณ yeadram ต่อนะคะ
ตัวอย่างข้อมูลนะคะ
empno empnam
z0001 test1
z0002 test2
z0003 test3
z0004 test4
คำว่า มันจะได้ record แรกเสมอ นั้น พรไม่ได้ต้องการอย่างนั้นค่ะ
พรต้องการให้อ่านทีละ record เพื่อที่เมื่ออ่าน z0001 แล้วพรจะให้
ไปทำงาน อื่น ๆ ต่อ หลังจากจบแล้ว ก็ให้กลับมาอ่าน z0002 ต่อ
ไม่ทราบว่า มีวิธีการไหนที่จะให้อ่านจนจบข้อมูลทั้ง table หรือเปล่าค่ะ
ตัวอย่างข้อมูลนะคะ
empno empnam
z0001 test1
z0002 test2
z0003 test3
z0004 test4
คำว่า มันจะได้ record แรกเสมอ นั้น พรไม่ได้ต้องการอย่างนั้นค่ะ
พรต้องการให้อ่านทีละ record เพื่อที่เมื่ออ่าน z0001 แล้วพรจะให้
ไปทำงาน อื่น ๆ ต่อ หลังจากจบแล้ว ก็ให้กลับมาอ่าน z0002 ต่อ
ไม่ทราบว่า มีวิธีการไหนที่จะให้อ่านจนจบข้อมูลทั้ง table หรือเปล่าค่ะ
3 @R08321
ขอเข้ามาเสริมให้อาจารย์ Yeadram ...มือใหม่เหมือนกัน
คำถามต้องชัดเจนกว่านี้หรือเปล่าครับ
"...ต้องการให้อ่านทีละ record เพื่อที่เมื่ออ่าน z0001 แล้วพรจะให้
ไปทำงาน อื่น ๆ ต่อ..."
ที่ให้ไปทำงานอื่น ๆคืออะไรครับ ไปออกรีพอร์ต, ไปรันคิวรี ฯลฯ
คำถามต้องชัดเจนกว่านี้หรือเปล่าครับ
"...ต้องการให้อ่านทีละ 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 ค่ะ
มี 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 ไม่ได้หรือครับ ถ้าได้เด๋วคงมีคนช่วยตอบ
ใช้ code vb ไม่ได้หรือครับ ถ้าได้เด๋วคงมีคนช่วยตอบ
6 @R08374
ยอมรับว่าเขียนไม่เป็นค่ะ และเห็นใน marcro มีคำสั่ง
ให้สามารถนำไปใช้ได้เลย ก็เลยลองทำดูค่ะ
ให้สามารถนำไปใช้ได้เลย ก็เลยลองทำดูค่ะ
Time: 0.2599s
เพื่อที่จะได้ทำงานอย่างอื่น ... ก่อนถึงจะไปอ่านเรคอร์ดถัดไปนะค่ะ"
แยกคำถามออกมาก็จะเจอสองประเด็นหลักๆ
- มันจะได้ record แรกเสมอ
- มีวิธีการอย่างไรบ้างมั้ยคะที่จะให้ มันอ่านที่ละเรคอร์ด
ประเด็นแรก "มันจะได้ record แรกเสมอ"
ขอชี้แจงว่า มันไม่ใช่ทฤษฎีที่ตายตัวเสมอไปครับ มันขึ้นอยู่กับว่าคุณออกแบบมันเป็นแบบ contineous หรือ single ถ้าคุณออกแบบฟอร์มเป็นแบบ contineous มันก็จะโหลดข้อมูลมาให้คุณทันทีอย่างน้อย 30 เรคคอร์ด ครับ และในคำถามไม่ได้แจ้งมาว่า การที่ได้เรคคอร์ดแรกเสมอนั้น เป็นปัญหากับคุณหรือเปล่า การได้เรคคอร์ดแรกเสมอ มันตรงความต้องการของคุณหรือไม่ ต้องการแก้ไขหรือไม่ (แต่ละงาน แต่ละคนอาจมีความต้องการที่แตกต่าง บางฟอร์ม บางงาน บางโปรแกรมของผม ก็ต้องการเพียงแค่ให้มันแสดงเรคคอร์ดแรกเท่านั้นจริงๆ ดังนั้นลักษณะที่เกิดกับคุณนี้ จึงไม่ได้เป็นปัญหาสำหรับผม)
ประเด็นที่สอง "มีวิธีการอย่างไรบ้างมั้ยคะที่จะให้ มันอ่านที่ละเรคอร์ด"
อันนี้ต้องขยายความให้มากกว่านี้ครับ คำว่า "มันอ่าน" ในความหมายของคุณ คืออะไร หรืออย่างไร