ทำไมข้อมูลเรียกออกมาไม่ได้
กระทู้เก่าบอร์ด อ.Yeadram

 2,107   7
URL.หัวข้อ / URL
ทำไมข้อมูลเรียกออกมาไม่ได้

สวัสดีค่ะ
ตอนนี้กำลังทดลองใช้งานโปรแกรมที่พัฒนามาจากคำตอบของอาจารย์หลายท่านจากเวบนี้ แต่มีปัญหา ที่งงมากๆ ค่ะคือ
1. บนฟอร์มที่เขียนไว้
Private Sub Command28_enter()
On Error GoTo Err_Command28_enter


    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Exit_Command28_enter:
    Exit Sub

Err_Command28_enter:
    MsgBox Err.DESCRIPTION
    Resume Exit_Command28_enter
    
End Sub
คือจะมีปุ่มให้บันทึกโดยที่กด enter แล้วก็บันทึกได้เลย ไม่ต้องไปกดแป้นบันทึกอีกครั้ง
แต่เวลาทำจริง enter แล้วจะไม่บันทึกให้ ต้องกดแป้นทุกครั้งที่คีย์ข้อมูลชุดนั้นเสร็จ ต้องแก้ไขตรงไหนคะ หนูไม่ค่อยรู้เรื่อง SQL หรือโค้ดเลยค่ะ

2. ข้อมูลที่บันทึกแล้ว มีข้อมูลบางกลุ่มเรียกรายงานไม่ออกค่ะ คือจะมี คิวรี่ดึงข้อมูลจากตารางนี้เพื่อไปออกรายงาน ดูจากคิวรี่แล้วก็ไม่มีข้อมูลกลุ่มนี้โชว์ขึ้นมาเลย ทั้งๆ ที่ข้อมูลอื่นๆ ที่คีย์ในคราวเดียวกัน หรือหลังจากนั้นก็ยังออกรายงานได้

ตอนนี้ งง มากจนตั้งคำถามได้แค่นี้ค่ะ ระหว่างรอคำตอบ หนูจะเช็คความถูกต้องดูอีกครั้งค่ะ
ขอบคุณมากค่ะ

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

1 @R09141
- ผมไม่รู้คำสั่ง DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
ยังถูกต้องสำหรับเวอร์ชั่นใหม่ๆไหม แต่ปกติเขาไม่ใช้กันแล้วเพราะมันเก่ามากแล้ว ถ้าต้องการเซฟข้อมูล ให้สั่ง

Me.Dirty = False

- ไม่ควรใช้ OnEnter event ในกรณีนี้ ควรใช้ OnClik event แทน

- ถ้าเป็น Bound Form (ถ้าไม่รู้ว่าคืออะไร ลองไปค้นกระทู้เก่าๆดู) โดยส่วนตัวของผมแล้ว ผมไม่เขียนปุ่มเพื่อเซฟข้อมูลอะไรทั้งสิ้น เพราะ Access มันจะเซฟให้เราอย่างอัตโนมัติในหลากหลายวิธีอยู่แล้ว แต่ถ้าเป็น Unbound Form แล้ว ปกติก็จะต้องทำ

- ถ้าเชื่อว่ามีข้อมูลในเทเบิล และข้อมูลถูกต้องแล้ว ก็น่าจะเป็นว่าคิวรี่กำหนดอะไรผิดสักอย่าง ลองเอาคิวรี่ที่แสดงผลไม่ได้ และที่แสดงผลได้ เอามาแสดงในนี้ด้วย แสดงเป็น SQL มา และบอกด้วยว่าประเภทของข้อมูลของฟิลด์ "กลุ่ม" ที่คุณว่ามันเป็นประเภทอะไร เช่น Text, Integer, เป็นต้น
2 @R09147
ขอบคุณค่ะอาจารย์สันติสุข

1.หนูสร้างปุ่มคอมมานด์แล้วกำหนดให้เป็นปุ่ม save record ตามขั้นตอนที่เค้าแนะนำค่ะ ตอนแรก เป็น onclick() ก็จะบันทึกเฉพาะข้อมูลสุดท้ายเหมือนกัน เลยลองเปลี่ยนเป็น enter ดูค่ะ เพราะไม่ใจว่าเวลาคีย์เราลืมคลิ๊กหรือเปล่า
หนูทดลองทำตามที่อาจารย์แนะนำแล้วก็ยังไม่ได้เหมือนเดิมค่ะ จะลองแบบไม่มีปุ่มเซฟข้อมูลอีกทีค่ะ
แล้วขอถามเพิ่มค่ะว่าเมื่อคีย์ฟิลด์สุดท้ายแล้วเราจะกำหนดให้เคอร์เซอร์วิ่งไปตัวแรกที่จะเริ่มคีย์ชุดใหม่ได้ยังไงคะ


ขอบคุณมากค่ะ
3 @R09148

2. หนูก๊อปปี้ SQL มาวางแล้วส่งไม่ผ่านค่ะ ต้องส่งยังไงคะ

4 @R09149
ขอโทษค่ะอาจารย์ ขอโทษมากๆ ค่ะ

ปัญหาข้อที่2 หนูเจอแล้วว่าที่รายงานไม่แสดงผลเพราะคีย์ข้อมูลผิดไปตัวนึงค่ะ แล้วจึงรู้ว่าaccess ผิดนิดเดียวก็ไม่ได้เลย คราวหน้าต้องระวังมาก ๆ

ส่วนคำถามข้อ 1 หนูเปลี่ยนปุ่มคำสั่งจากเซฟข้อมูลเป็นเพิ่มข้อมูล ก็เซฟทุกข้อมูลที่คีย์เข้าไปแล้วค่ะ
แต่ขอทราบว่าทำยังไงให้เคอร์เซอร์วิ่งอัตโนมัติไปที่ฟิลด์แรกเพื่อคีย์ข้อมูลต่อไปได้ค่ะ
อ้อ หนูใช้ เวอร์ชั่น 2002 ค่ะ เพราะอ่านจากหัวข้อเก่าๆ แล้วยังไม่กล้าใช้ เวอร์ชั่น2007 กลัวไปไม่ถึงครึ่งทาง คงต้องศึกษาอีกเยอะ


ขอบคุณมากๆ ค่ะ
5 @R09150
1) อ่านแล้วไม่ค่อยเข้าใจ   
- ฟอร์มของคุณเป็น Single Form หรือ Continuos Form
- ที่บอกว่า "บันทึกเฉพาะข้อมูลสุดท้าย" หมายถึงอย่างไร จะหมายถึงเรคอร์ดสุดท้ายใช่หรือไม่
- OnEnter event เกิดเมื่อคอนโทรล (ในที่นี้คือปุ่มคอมมานด์) ได้รับโฟกัส ดังนั้นโค้ดของคุณจะทำงานทันทีแม้ว่าจะไม่ได้คลิกที่ปุ่มคอมมานด์เลยก็ตาม ผมถึงบอกว่าไม่ควรใช้ในกรณีนี้ เพราะผิดวัตถุประสงค์ที่เราต้องการให้มีการบันทึกข้อมูลเฉพาะเมื่อเกิดการคลิกเท่านั้น
- กำหนดให้ Cycle property ของฟอร์มให้เป็น All Records ดูครับ
- อยากให้โพสรูปหน้าฟอร์มของคุณขึ้นมาให้ดูในนี้ด้วย (ทำได้โดยการกดปุ่มรูปภาพที่มีรูปลูกศรขึ้น , ปุ่มก่อนปุ่มสุดท้าย)

2) เวลาจะแปะโค้ดเข้ามาในบอร์ดนี้ ให้ใส่ภายในแท็ก ซึ่งเริ่มด้วยสัญญลักษณ์ ก้ามปูเปิด ตามด้วยคำว่า CODE ตามด้วยสัญญลักษณ์ก้ามปูปิด ตามด้วยโค้ดที่ต้องการแสดง จบด้วยสักญลักษณ์ ก้ามปูเปิด ตามด้วยคำว่า /CODE ตามด้วยสัญญลักษณ์ก้ามปูปิด

ปล.
- เวลาถามคำถาม ต้องใช้ภาษาที่ชัดเจน อย่าให้มีคำทั่วไป เช่น "ข้อมูล" เป็นต้น เพราะคนตอบจะตอบไม่ได้ ก็ต้องถามกลับไปอีกที อาจเสียเวลาได้

- เขียนว่า "คลิก" ก็พอ ไม่ต้องใส่ไม้ตรีเป็น "คลิ๊ก"

- คุณใช้ "คะ" "ค่ะ" ได้ถูกต้องดีมาก ขอชมเชย เพราะเด็กผู้หญิง (หรือไม่ใช่เด็กก็ตาม) ยุคนี้ใช้ "คะ" กับ "ค่ะ" ไม่ถูกต้องกันแล้ว
6 @R09152
อ้าวโทษที เพิ่งเห็นว่าคุณมาเขียนตอบก่อนผมตอบแป๊ปเดียว เลยไม่รู้ว่ามีเขียนมาแล้ว

- การไปที่ฟิลด์ใดๆ ให้สั่งด้วยคำสั่ง Me.ชื่อคอลโทรล.SetFocus ครับ

- พอใช้ 2002 ไปได้สักพัก เอาเป็นว่าพอทำความคุ้นเคยและพอจะเข้าใจในการทำงานของ Access แล้ว แนะนำว่ากระโดดไป 2010 ไปเลยครับ เพราะมีคุณสมบัติเพิ่มเติมมาให้น่าใช้หลายๆอย่าง (หรืออาจไม่น่าใช้ ) แต่ระหว่างนี้ควรต้องอัพเดต MS Office 2002 ถึง Service Pack 3 ด้วยนะครับ จะได้ไม่เจอ Bug บางอย่าง
7 @R09153
ขอบคุณค่ะ ต่อไปจะไม่เขียน " คลิก" ผิดแล้วค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2581s