สอบถามวิธีไม่บันทึกข้อมูลจนกว่าจะกดปุ่ม Reccord
กระทู้เก่าบอร์ด อ.Yeadram

 2,569   9
URL.หัวข้อ / URL
สอบถามวิธีไม่บันทึกข้อมูลจนกว่าจะกดปุ่ม Reccord

ตอนนี้มันจะบันทึกข้อมูลลงใน table ทันทีที่พิมพ์ แต่อยากจะหาวิธีไม่ให้บันทึกจนกว่าจะกด Reccord ไม่ทราบว่าต้องใช้วิธีไหนครับ
รบกวนสอบถามอาจารย์ด้วยครับ

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

1 @R07077
เขียน "คิวรี่แบบเพิ่มข้อมูล" เป็นไหมครับ (ส่วนใหญ่จะเรียกว่า sql statement แบบ Insert..into..)

1 ทำฟอร์มของคุณให้เป็นแบบ Unbound ทั้งหมด
2 เมื่อกดปุ่ม save ค่อยต่อสายอักขระให้เป็น sql statment แล้วสั่งรัน

เช่น
dim sq as string
sq = "Insert into table1(field1, field2, field3) values('" & text1 & "', '" & text2 & "', '" & text3 & "');"
currentproject.connection.execute sq

** ถ้าคุณทำวิธีนี้ จะได้ตามที่คุณต้องการ คือไม่มีการบันทึกอัตโนมัติ ระบบจะทำการบันทึกข้อมูลเมือ่กดปุ่ม บันทึกเท่านั้น
** ฟอร์มของคุณจะมีไว้เพื่อรับข้อมูลเท่านั้น ไม่สามารถใช้เพื่อย้อนดูเรคคอร์ดเก่าๆ ได้
2 @R07082
ขอบคุณอาจารย์ yeadram มากๆครับที่ช่วยให้คำแนะนำ
3 @R07086
รบกวนสอบถามอาจารย์ด้วยครับไม่ทราบว่าทำพลาดตรงไหน

ทีแรกลองทำโดยใช้ชื่อฟอร์มและตารางตามข้างล่างสามารถใช้งานได้ตามปกติ
table1
field1..2..3
text1..2..3

แต่พอเปลี่ยนชื่อให้เป็นข้อมูลตามจริงแล้วลองกด reccord อีกรอบกลับใช้งานไม่ได้ เป็น pop up ขึ้นว่า
"Run-time error '-2147217900 (80040e14)':
syntax error in INSERT INTO statement."
4 @R07087
ขอเพิ่มเติมนะครับ

เมื่อกด debug เข้าไปดูจะเห็นว่า

CurrentProject.Connection.Execute sq ได้กลายเป็นแถบสีเหลือง

ตอนนี้จนปัญญาจริงๆ ครับ ไม่รู้ว่าจะไปแก้ตรงไหน ต้องขอรบกวนอาจารย์ด้วยนะครับ
5 @R07088
ก่อนจะถึงบรรทัดคำสั่งให้ execute
ให้แทรกบรรทัด debug ดูครับ
debug.print sq
แล้วลองรันดู มันจะ error อีกครั้ง ไม่เป็นไร
ให้เรากด Ctl+G เพื่อเปิดดูหน้าต่าง debug ซึ่งมันจะปริ๊นท์สายอักขระที่คุณต่อไว้ มาให้ดู ให้คุณลองตรวจสอบดูจากตรงนั้นครับ ว่า คุณลืมต่อ อักขระหรือเครื่องหมายสำคัญๆ อะไรไปหรือเปล่า อย่าลืมความสำคัญของชนิดข้อมูลด้วยนะครับ
- ถ้าเป็น string ต้องคร่อมด้วย single quote ( ' )
- ถ้าเป็น number ไม่ต้องคร่อม
- ถ้าเป็น DateTime อาจต้องคร่อมด้วยเครื่องหมาย sharp ( # )

ถ้าดูไม่ออก ลองคัดลอกสายอักขระที่มัน Debug ออกมา เอามาโพสต์ให้ดูอีกรอบก็ได้ครับ
6 @R07092
ไม่เข้าใจจริงๆ ครับ พอลองเปลี่ยนกลับไปใช้ชื่อตารางกับฟอร์มในแนวๆ
field1 field2
text1 text2
ก็ใช้ได้เหมือนเดิม

ได้ลองก็อบโค้ดที่ใช้ไม่ได้มาให้อาจารย์ดูครับ

Private Sub Command4_Click()
Dim sq As String
sq = "Insert into input(month, zone) values('" & cbmonth & "', '" & cbzone & "');"
Debug.Print sq
CurrentProject.Connection.Execute sq
End Sub


Insert into input(month, zone) values('a', 'a');

7 @R07093
-ชื่อตาราง (ไม่แน่ใจนัก) ชื่อว่า input น่าจะเป็นคำสงวน
-ชื่อฟิลด์ month เป็นคำสงวนแน่ๆ ไปเปลี่ยนชื่อฟิลด์ด่วนๆ ครับ

การตั้งชื่อด้วยคำสงวน มักจะเจอปัญหาแบบนี้ครับ

หรือไม่ ถ้าไม่แน่ใจว่าคำใดเป็นคำสงวนให้ใส่เครื่องหมายสี่เหลี่ยมคร่อมไว้ครับ
ลองไปปรับสายอักขระ เพื่อให้มันต่อออกมาเป็น
Insert into [input]([month], zone) values('a', 'a');

ลองดูครับ
8 @R07365
ในกรณีนี้ถ้าต้องการให้มีรูปภาพเข้าไปด้วย จะสามารถทำได้มั๊ยครับ
หรือว่าต้องแยกออกเป็นอีก form ผมคิดไม่ออกจริงๆ ครับว่าจะสร้าง frame แล้ว add รูปเข้าไปยังไง
9 @R07368
ค้นดูกระทู้เก่าๆ ครับ เรื่องการเพิ่มรูป มันหลายขั้นหลายตอน หรือหลายวิธี
ไม่สะดวกในการตอบซ้ำๆ หลายกระทู้ครับ เพราะมันพิมพ์ยาวมาก

ต้องค้นหาอ่านหลายๆ กระทู้ลองเรียบเรียงความเข้าใจเอาเองแล้วลองปฎิบัติตามดูครับ ดูว่าเข้าใจวิธีไหนก็ลองทำตามไป (บางกระทู้อาจมีลิงค์ให้โหลดตัวอย่างด้วย) ลองค้นหาดูครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2779s