คำสั่ง insert into
กระทู้เก่าบอร์ด อ.Yeadram

 5,867   6
URL.หัวข้อ / URL
คำสั่ง insert into

ผมใช้คำสั่ง   Insert into   ส่งข้อมูลจาก form ไปยัง table

เป็น form เปล่าๆ ไม่ได้เชื่อมโยงกับตารางใด
ใช้ Insert into ส่งไป Table
ใน Table มี 4 ฟิลด์

OutId   เป็น   text
OutName   เป็น   text
OutDate   เป็น Date/Time
OutFor   เป็น   text


ข้่อมูลส่งไปได้ปกติ แต่ติดปัญหาอยู่ 2 อย่าง คือ
1. ข้อมูล ตัวอักษร ส่งไม่ไป มันขึ้นกรอบโต้ตอบให้ใส่ค่า พารามิเตอร์
      พอใส่ตัวอักษรเข้าไปถึงจะไปปรากฏใน table ปลายทาง
2. ในส่วนของวันที่ ในฟอร์ม ใส่วันอะไรไปก็ช่าง พอไปถึง Table
      มันจะกลายเป็น วันที่ 30 ธันวาคม 2442 ทั้งหมดเลย

นี่เป็น Code ครับ

Private Sub Command19_click()
DoCmd.SetWarnings False

DoCmd.GoToRecord acDataForm, Me.Name, acFirst
DoCmd.RunSQL "Insert into TempTbOutMain (OutId, OutName, OutDate, OutFor) values(" & Insert into& ", " & OutName & ", " & OutDate & ", " & OutFor & ")"

End Sub

ไม่ทราบว่าติดอะไรตรงไหน รบกวนทุกท่านช่วย แนะนำด้วยครับ

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

1 @R04329
ข??อภัยครับ แก้ได้แล้วครับ ปัญหา 2 ข้อด้านบน แก้ได้แล้วครับ

แต่ก็ติดปัญหาอีกแล้ว คือ

Private Sub Command19_click()
DoCmd.SetWarnings False
DoCmd.GoToRecord acDataForm, Me.Name, acFirst

DoCmd.RunSQL "Insert into TempTbOutMain (OutId, OutName, OutDate, OutFor) values(OutId, OutName, OutDate, OutFor)"

DoCmd.RunSQL "insert into TempTbOutSub (OutId, OutList, OutCost) values(OutId, child1.OutList, child1.OutCost)"

End Sub


คำสั่งบรรทัดที่ 4 เป็นคำสั่งส่งข้อมูลจาก เมนฟอร์ม ไปยัง เทเบิล ซึ่งแก้ได้แล้ว

แต่คำสั่งบรรทัดที่ 5 เป็นคำสั่งส่งข้อมูลจาก ซับฟอร์ม ไปยัง เทเบิล ซึ่ง ส่งไม่ไป
มันขึ้นกรอบโต้ตอบให้ใส่ค่า พารามิเตอร์ครับ คาดว่า คงใส่ เครื่องหมายผิด
รายละเอียดครับ

ตัว ซับฟอร์ม ชื่อ   FrOutSub   มี 3 ฟิลด์
OutId   เป็น   textbox ไว้เชื่อมกับ เมนฟอร์ม
OutList   เป็น   combobox มี 3 คอลัม ที่ต้องการให้ไปลงเทเบิลคือคอลัมที่ 1
OutCost    เป็น   textbox รูปแบบ standard

ส่วน เทเบิลที่ต้องการให้ข้อมูลไปลงชื่อ   TempTbOutSub
มี 3 ฟิลด์
OutId   เป็น text
OutList    เป็น   text
OutCost    เป็น   currency แบบ standard ครับ
----------------------------------------------------------------------------------------------
ส่วน Code เอามาจาก (R03054) เป็นของ อ.yeadram ให้ไว้ครับ
ผมเอามาเปลี่ยนชื่อเฉย ๆ

เวลาสั่งเซฟ ต้องสั่งตามลำดับ
เอาข้อมูลหลักเข้าตารางหลักก่อน
แล้วค่อยทยอยเอาข้อมูลย่อย (จากฟอร์มย่อย) เข้าตารางย่อย
insert into tableMain(invNo, invDate) values(txtNo, txtDate);
insert into tableSub(invNo, pdCode, pdQuantity, pdPrice) values(txtNo, child1.txtCode, child1.txtQty, child1.txtPrice);
----------------------------------------------------------------------------------------------

อีกข้อหนึ่ง คือผมไม่สามารถเชื่อม เมนฟอร์มเปล่าๆ กับ ซับฟอร์มเปล่า
เข้าด้วยกันได้ครับ มันบอกว่าไม่สามารถสร้างการเชื่อมโยง
สำหรับฟอร์มที่ไม่ถูกผูกไว้ด้วยกันได้


รบกวนทุกท่าน ชี้แนะด้วยครับ

2 @R04330
ผมอยากทราบคำสั่งที่ใช้ในการบันทึกใบเสร็จ และพิพม์เลย เพราะที่ผมทำมันพิพม์ทั้งหมด เลย ผมอยากให้พิมพ์หน้าใบเสร็จหน้าที่เราบันทึกไปเลย ไม่ทราบว่ามีคำสั่ง หรือมีปุ่มพิเศษหรือไม่ครับ ขอบคุณมากครับ
3 @R04332
ตอบคุณ siam
ให้ใช้วิซาร์ด ช่วยสร้างปุ่มปริ๊นท์ครับ
ระบุไปว่าให้ปริ๊นท์เฉพาะเรคคอร์ดที่เกี่ยวข้อง
4 @R21146
เรียนคุณ yeadram

          ผมลองศึกษาจากตัวอย่างด้านบนแล้วเขียนเอง


Private Sub Command257_Click()
Dim sql As String

sql = "insert into QR_PD4OG (Item, A_Total, A_NoCh, A_ToSection, A_DateCh, A_Time, A_Shift, A_Informent, D_Agencies, A_PD4, IC, CyecleT, DueDate, DueDateT) values('" & ITEM & "', '" & A_Total & "', " & A_NoCh & ", " & A_ToSection & ", " & A_DateCh & ", " & A_Time & ", " & A_Shift & ", " & A_Informent & ", " & D_Agencies & ", " & A_PD4 & ", " & IC & ", " & CyecleT & ") WHERE Rework=True;"
Debug.Print sql
DoCmd.RunSQL sql
Endsub

แต่เจอ Error



ผมเช็คดูวันที่และเวลาตามรูป เปฌนที่ A_Time ครับ
จะแก้ยังไงครับ และ ตรงWHERE Rework=True ผมใส่ถูกหรือเปล่าครับ
ขอบคุณครับ
5 @R21147
ผมเปลี่ยน
sql = "insert into QR_PD4OG (Item, A_Total, A_NoCh, A_ToSection, A_DateCh, Cdate(A_Time), A_Shift, A_Informent, D_Agencies, A_PD4, IC, CyecleT, DueDate, DueDateT) values('" & ITEM & "', '" & A_Total & "', " & A_NoCh & ", " & A_ToSection & ", " & A_DateCh & ", " & A_Time & ", " & A_Shift & ", " & A_Informent & ", " & D_Agencies & ", " & A_PD4 & ", " & IC & ", " & CyecleT & ") WHERE Rework=True;"

จาก A_Time เป็น CDate(A_Time) หายครับแต่
เป็นตัวใหม่

Error 3134 SyntaX error in INSERT INTO statement ครับ

6 @R21167
ตอบคุณนครินทร์ ตรงที่ส่งข้อมูลจากฟอร์มย่อยไปยังตารางย่อยไม่ได้ครับ

ที่ให้ใส่พารามิเตอร์เป็นเพราะมันหาตัวควบคุมนั้นไม่เจอเนื่องจากอ้างแหล่งตัวควบคุมไม่ถูกต้องครับ วิธีการอ้างตัวควบคุมบนฟอร์มย่อยปกติต้องอ้างแบบนี้ครับลองเอาไปปรับดูครับ

Forms![main form name]![subform control name].Form![control name]
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2541s