ปัญหานำข้อมูลจาก Form ไปลงตาราง
กระทู้เก่าบอร์ด อ.Yeadram

 8,495   8
URL.หัวข้อ / URL
ปัญหานำข้อมูลจาก Form ไปลงตาราง

คือผมมี Table และมี ฟิลด์ ประมาณ 9 ฟิลด์
มี 1 Form มี 9 Textbox
VBA code นี้ก็อาศัยดัดแปลงจากของ อ.yeadram ที่ตอบกระทู้คุณ paitoon หัวข้อ "นำข้อมูลที่หน้าฟอร์มไปเก็บลงตาราง" ครับ
*** มีปัญหาอยู่ว่า ข้อมูลที่เป็น ตัวเลข ไปลงตารางถูกต้อง แต่ข้อมูล ฟิลด์ที่ Date/Time (Text35) และ ฟิลด์ที่เป็นตัวหนังสือ (Text37,Text39) บันทึกข้อมูลไม่ถูกต้อง   คือ Text35 ใช้เลือกวันที่/เดือน/ปี จากปฏิทินของ Access ที่มีมาให้ คือ 5/10/2555 ตามต้องการ ส่วน Textbox ที่เป็นตัวหนังสือ คือ Text37 และ Text39 พิมพ์ตัวหนังสือภาษาไทยลงไป   เมื่อกดปุ่ม Command48 จะมี popup ขึ้นมาให้ใส่ค่า พารามิเตอร์ ของ Textbox Text37 และ Text39 ถ้าพิมพ์ตัวหนังสือหรือตัวเลขลงไป แล้วตอบ ตกลง จะนำข้อมูลดังกล่าวไปลงตาราง ถ้าไม่พิมพ์ข้อมูลลงไป ดูในตาราง เป็นที่ว่างไม่มีข้อมูล ส่วนในฟิลด์ที่เป็น Date/Time ในตารางข้อมูลจะเป็น 0:00:19   ไม่ทราบว่าผมตั้งค่าฟิลด์ผิดหรือเปล่าครับ ( ตัวอย่าง code นี้ผมตัดมาเฉพาะฟิลด์ที่มีปัญหาครับ )   

Private Sub Command48_Click()
DoCmd.SetWarnings False
DoCmd.GoToRecord acDataForm, Me.Name, acFirst
DoCmd.RunSQL "INSERT INTO Table1(Auction_Date, Customer_Name, Project_Name) Values(" & Text35 & " , " & Text37 & " , " & Text39 & ")"
End Sub

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

1 @R14026
เปลี่ยนข้อมูล ตามนี่ แล้วทดลองดูว่าติดขัดอะไร

DoCmd.RunSQL "INSERT INTO Table1(Auction_Date, Customer_Name, Project_Name) Values(#" & Text35 & "# , '" & Text37 & "' , '" & Text39 & "')"

เนื่องจากประเภทข้อมูลเป็นวันที่ ต้องใส่ # หน้าและหลัง
และข้อมูลเป็น text ต้องใส่ single quote หน้าและหลังข้อมูล
2 @R14027
ขอบคุณมากครับ คุณ ditasilk

ตอนนี้ข้อมูลเข้า Table ถูกต้องแล้วครับ ยกเว้น ฟิลด์ที่เป็น Date/Time ตอนเลือกจากปฏิทินของ Access ที่มีมาให้ คือ 5/10/2555 แต่พอลงไปใน Table มันเป็น 10/5/3098 เป็น เดือน/วัน/ปี ที่ร้ายมันดัน + 543 ให้ด้วย   ผมตั้งรูปแบบฟิลด์ : Short Date รูปแบบการป้อน: 99/99/0000;0;_   วันที่ของคอมฯ เป็นแบบไทย 13 ตุลาคม 2555 สงสัยจังผมตั้งค่าที่ฟิลด์ไม่ถูกต้องหรือต้องเปลี่ยนตรงไหนบ้างครับ   ขอบคุณล่วงหน้าครับ
3 @R14029
ลองเปลี่ยน
รูปแบบการป้อนข้อมูลเป็น 00/00/0000;;_
รูปแบบเป็น dd/mm/yyyy

ขอดูผลอีกครั้งครับ
4 @R14030
ผมลองเปลี่ยน รูปแบบการป้อนข้อมูลเป็น 00/00/0000;;_ แล้วครับ
แต่รูปแบบเป็น dd/mm/yyyy มันไม่มีให้เลือกครับมันจะมีแต่ให้เลือก เช่น Short Date , Medium Date , Long Date ประมาณนี้ครับ ตอนนี้ตั้งเป็น
รูปแบบ : Short Date
รูปแบบการป้อนข้อมูลเป็น 00/00/0000;;_

ผลที่ได้ 5/10/3098   คือ วันเดือนตรงแต่ ปี เหมือนเดิมครับ
ลองเปลี่ยนหลายรูปแบบแล้วครับ และลองลบเรคคอร์ด ออกทั้งหมดแล้วป้อนข้อมูลใหม่ ปียังผิดเหมือนเดิม ขอคำแนะนำด้วยครับจะให้ลองแบบใดอีกครับ ผมรอรับฟังข้อเสนอแนะอยู่นะครับ   ขอบคุณล่วงหน้าอีกครั้งครับ


5 @R14031
ขอดู 2 ที่
ใน regional date time setting คุณตั้งรูปแบบเป็น อะไรครับ
และในการออกแบบ field ที่ชนิดข้อมูล date/time กำหนดรูปแบบเป็นอะไรครับ
6 @R14032
การออกแบบ Field ดังนี้ ตอนนี้เปลี่ยนเป็น.
ชนิดข้อมูล Date/Time
รูปแบบ : Long Date
รูปแบบการป้อนข้อมูล : 09\L?.L.\00;0;_

ผลลัพธ์ออกมาเป็น : 13 ตุลาคม 3098

ส่วน regional date time setting ผมจะแนบรูปไปแล้วกัน (regional.jpg)

***** เพิ่มเติมครับเล่าย้อนหลัง แต่เดิมวิธีการเพิ่ม Record ผมใช้วิธี สร้าง Form และมี Text box ผูกกับ Table ตรง ๆ วิธีนี้ได้ข้อมูลถูกต้องครับ แต่พอเปลี่ยนวิธีใช้ SQL มันจึงมีผลเฉพาะ Field ชนิดข้อมูล Date/Time ครับ


7 @R14033
DoCmd.RunSQL "INSERT INTO Table1(Auction_Date, Customer_Name, Project_Name) Values(CDate('" & Text35 & "') , '" & Text37 & "' , '" & Text39 & "')"

ใช้ตัว CDate("String") แทน ก็จะได้ CDate('" & Text35 & "')
8 @R14034
ขอบคุณมาก ๆ นะครับ ตอนนี้ใช้งานได้แล้วครับ
ไว้มีปัญหาคราวหน้าจะรบกวนอีกครับ   ขอบคุณอีกครั้งนะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3254s