กระทู้เก่าบอร์ด อ.Yeadram
5,492 11
URL.หัวข้อ /
URL
การ insertข้อมูล
Private Sub cmdClosefrmmodUnit_Click()
Dim rsInsertUnitRecords As DAO.Recordset
Dim dbCurrentDB As DAO.Database
Dim InsertUnitQuery As String
InsertUnitQuery = " INSERT INTO tblUnit(SECTID, NAMES, CRIT, NO_OF, NOTES, MODIFIED, CREATE_USER, MOD_USER) VALUES(" & SECTID.Value & ", '" & txtName_Unit.Value & "'," & txtCrit_Unit.Value & ", " & txtNoOf_Unit.Value & ", '" & txtNote_Unit.Value & "', #" & txtCurrentTime_Unit.Value & "#, '" & txtCreateUser_Unit.Value & "', '" & txtCurrentUser_Unit.Value & "'); "
Set dbCurrentDB = Access.CurrentDb
'DoCmd.setwarning False
On Error GoTo er
dbCurrentDB.Execute InsertUnitQuery
MsgBox "Data was Added"
dbCurrentDB.Close
Exit Sub
er:
MsgBox "Cannot Added data !!!" & Err.Number & "-" & Err.Description
'On Error GoTo Err_cmdClosefrmmodUnit_Click
' DoCmd.Close
'Exit_cmdClosefrmmodUnit_Click:
' Exit Sub
'Err_cmdClosefrmmodUnit_Click:
' MsgBox Err.Description
' Resume Exit_cmdClosefrmmodUnit_Click
End Sub
โค้ดข้างบนนี้เป็นโค้ดสำหรับ insert ข้อมูลลงตาราง tblUnit
เมื่อกดปุ่ม SAVE โปรแกรมฟ้องว่าข้อมูลได้ถูกเซฟลงตารางแล้ว แต่เมื่อไปดูในตาราง ผลปรากฎว่าไม่มีข้อมูลนั้น ผมไม่แน่ใจว่าโค้ด INSERT ของผมนั้นถูกหรือเปล่า ช่วยทีนะครับ
ขอคุณครับ
Dim rsInsertUnitRecords As DAO.Recordset
Dim dbCurrentDB As DAO.Database
Dim InsertUnitQuery As String
InsertUnitQuery = " INSERT INTO tblUnit(SECTID, NAMES, CRIT, NO_OF, NOTES, MODIFIED, CREATE_USER, MOD_USER) VALUES(" & SECTID.Value & ", '" & txtName_Unit.Value & "'," & txtCrit_Unit.Value & ", " & txtNoOf_Unit.Value & ", '" & txtNote_Unit.Value & "', #" & txtCurrentTime_Unit.Value & "#, '" & txtCreateUser_Unit.Value & "', '" & txtCurrentUser_Unit.Value & "'); "
Set dbCurrentDB = Access.CurrentDb
'DoCmd.setwarning False
On Error GoTo er
dbCurrentDB.Execute InsertUnitQuery
MsgBox "Data was Added"
dbCurrentDB.Close
Exit Sub
er:
MsgBox "Cannot Added data !!!" & Err.Number & "-" & Err.Description
'On Error GoTo Err_cmdClosefrmmodUnit_Click
' DoCmd.Close
'Exit_cmdClosefrmmodUnit_Click:
' Exit Sub
'Err_cmdClosefrmmodUnit_Click:
' MsgBox Err.Description
' Resume Exit_cmdClosefrmmodUnit_Click
End Sub
โค้ดข้างบนนี้เป็นโค้ดสำหรับ insert ข้อมูลลงตาราง tblUnit
เมื่อกดปุ่ม SAVE โปรแกรมฟ้องว่าข้อมูลได้ถูกเซฟลงตารางแล้ว แต่เมื่อไปดูในตาราง ผลปรากฎว่าไม่มีข้อมูลนั้น ผมไม่แน่ใจว่าโค้ด INSERT ของผมนั้นถูกหรือเปล่า ช่วยทีนะครับ
ขอคุณครับ
11 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R00486
อ่านแล้วตาลาย ผมถนัดปฎิบัติมากกว่า ไม่ทราบว่า พอจะมีที่ Upload ไฟล์หรือเปล่าครับ ผมจะได้ดูให้
2 @R00489
เรียนคุณ "ม่อนนะครับ"
ขอบอกว่า เป็นโอกาสอันดีมากครับ ที่ อ.ศรี-นคร จะลงมือดูให้ด้วยตัวเอง
ยังไงถ้าไม่มีที่อัพไฟล์ตัวอย่าง ส่งเข้าเมล์ accboard_gmail_com ได้นะครับ
เขียนหัวข้อจดหมายว่า "ปัญหา Insert ข้อมูล: ม่อนนะครับ"
แล้วท่านอื่นๆ ที่มาอ่านทีหลัง อาจจะพลอยได้ประโยชน์ไปด้วย ด้วยการเข้าไปโหลดมาศึกษาครับ
ขอบอกว่า เป็นโอกาสอันดีมากครับ ที่ อ.ศรี-นคร จะลงมือดูให้ด้วยตัวเอง
ยังไงถ้าไม่มีที่อัพไฟล์ตัวอย่าง ส่งเข้าเมล์ accboard_gmail_com ได้นะครับ
เขียนหัวข้อจดหมายว่า "ปัญหา Insert ข้อมูล: ม่อนนะครับ"
แล้วท่านอื่นๆ ที่มาอ่านทีหลัง อาจจะพลอยได้ประโยชน์ไปด้วย ด้วยการเข้าไปโหลดมาศึกษาครับ
3 @R00494
ส่งเมล์ไปให้แล้วครับ
4 @R00495
เรียน คุณม่อนครับ
ผมเดาว่า คุณ Copy คำสั่ง SQL มาแต่ลืมลบเครื่องหมาย ; ที่ท้ายประโยคออก ให้ลองลบและลองทดดูนะครับ
ผมเดาว่า คุณ Copy คำสั่ง SQL มาแต่ลืมลบเครื่องหมาย ; ที่ท้ายประโยคออก ให้ลองลบและลองทดดูนะครับ
5 @R00496
InsertUnitQuery = " INSERT INTO tblUnit(SECTID, NAMES, CRIT, NO_OF...
ในประโยคนี้มีคำสงวนของระบบ SQL แต่คุณ เอามาตั้งเป็นชื่อฟิลด์ มันจะมีปัญหาบ้าง ไม่มีปัญหาบ้าง ไม่แน่นอน ต้องใส่เครื่องสี่เหลี่ยม คร่อมไว้ด้วย ครับ
ลองดู
InsertUnitQuery = " INSERT INTO tblUnit(SECTID, [NAMES], CRIT, NO_OF...
ในประโยคนี้มีคำสงวนของระบบ SQL แต่คุณ เอามาตั้งเป็นชื่อฟิลด์ มันจะมีปัญหาบ้าง ไม่มีปัญหาบ้าง ไม่แน่นอน ต้องใส่เครื่องสี่เหลี่ยม คร่อมไว้ด้วย ครับ
ลองดู
InsertUnitQuery = " INSERT INTO tblUnit(SECTID, [NAMES], CRIT, NO_OF...
6 @R00510
ผมใส่เครื่อง [ ] แล้ว ก็ยังเหมือนเดิม
7 @R00511
Library
- Microsoft Excel 11.0 เปลี่ยนเป็น 10.0
- Microsoft ActiveX Data Objects 2.1 Library เปลี่ยนเป็น 2.8
ผมเขียน โพรซีเยอร์ทั้งสอง(Update, Insert) ขึ้นใหม่ แม้จะแก้ไขรูปแบบคำสั่งไปเยอะ แต่ใน statement ผมคัดลอกมาทั้งหมด
นอกจากการตัดบรรทัด เพื่อให้ดูกระชับง่ายขึ้น และแก้ที่ฟิลด์ คำว่า NAMES เป็น [NAMES] ที่เหลือผมไม่ได้แก้ไขคำใด หรือเครื่องหมายใดๆ อีกเลย
** อยู่ใน Reply ต่อไป **
Private Sub Form_Load()
ผมคอมเมนต์คำสั่งไป 1 คำสั่ง
'cmdClosefrmmodUnit.Enabled = False
ที่ฟอร์ม frmModUnit คอนโทรลที่คุณซ่อนไว้ มีสองตัว
txtUNITID กับ SECTID ผมตั้งค่าให้แสดงผล
------------------------------------------------------------------------------------------
- เซฟโค้ด เซฟฟอร์ม ทุกอย่างแล้วเปิดฟอร์ม frmModUnit ขึ้นมา
- ไม่มีการเลื่อนเรคคอร์ด
- เรคคอร์ดแรก ค่าในช่อง Name: เขียนว่า MAIN SHAFT ผมเปลี่ยนเป็น Yeadram
- กดปุ่ม Update ได้รับ message แจ้งว่า "Data was updated"
- ผมทำการปิดฟอร์ม แล้วไปเปิดดูข้อมูลในตาราง tblUnit
- เรคคอร์ดแรก, ฟิลด์ NAMES ถูกแก้ไขเป็นคำว่า Yeadram ถูกต้อง!!!
-------------------------------------------------------------------------------------------
- ปิดตาราง tblUnit แล้วเปิดฟอร์ม frmModUnit ขึ้นมาใหม่อีกครั้ง
- ผมกดปุ่ม ctl++ (เพื่อเพิ่มข้อมูลใหม่)
- ในช่อง SECTID (ที่เคยถูกซ่อน แล้วผมไปแก้ให้มองเห็น) ผมกรอกเลขเข้าไปเป็น 2
- ที่ช่อง Name: ผมกรอกคำว่า "ไทย แอคเซส"
- กดปุ่ม Save ได้รับ message แจ้งว่า "Data was Add"
- ผมทำการปิดฟอร์ม แล้วไปเปิดดูข้อมูลในตาราง tblUnit
- ข้อมูลถูกเพิ่มเข้าตารางถูกต้อง !!
** อ้อ แถมอีกอย่าง การหาชื่อโปรไฟล์ หรือ user name ไม่ต้องใช้ฟังก์ชั่น API ก็ได้นะครับ
ใช้สั่ง Environ() แทนก็ได้ เช่น $us = Environ("UserName")
- Microsoft Excel 11.0 เปลี่ยนเป็น 10.0
- Microsoft ActiveX Data Objects 2.1 Library เปลี่ยนเป็น 2.8
ผมเขียน โพรซีเยอร์ทั้งสอง(Update, Insert) ขึ้นใหม่ แม้จะแก้ไขรูปแบบคำสั่งไปเยอะ แต่ใน statement ผมคัดลอกมาทั้งหมด
นอกจากการตัดบรรทัด เพื่อให้ดูกระชับง่ายขึ้น และแก้ที่ฟิลด์ คำว่า NAMES เป็น [NAMES] ที่เหลือผมไม่ได้แก้ไขคำใด หรือเครื่องหมายใดๆ อีกเลย
** อยู่ใน Reply ต่อไป **
Private Sub Form_Load()
ผมคอมเมนต์คำสั่งไป 1 คำสั่ง
'cmdClosefrmmodUnit.Enabled = False
ที่ฟอร์ม frmModUnit คอนโทรลที่คุณซ่อนไว้ มีสองตัว
txtUNITID กับ SECTID ผมตั้งค่าให้แสดงผล
------------------------------------------------------------------------------------------
- เซฟโค้ด เซฟฟอร์ม ทุกอย่างแล้วเปิดฟอร์ม frmModUnit ขึ้นมา
- ไม่มีการเลื่อนเรคคอร์ด
- เรคคอร์ดแรก ค่าในช่อง Name: เขียนว่า MAIN SHAFT ผมเปลี่ยนเป็น Yeadram
- กดปุ่ม Update ได้รับ message แจ้งว่า "Data was updated"
- ผมทำการปิดฟอร์ม แล้วไปเปิดดูข้อมูลในตาราง tblUnit
- เรคคอร์ดแรก, ฟิลด์ NAMES ถูกแก้ไขเป็นคำว่า Yeadram ถูกต้อง!!!
-------------------------------------------------------------------------------------------
- ปิดตาราง tblUnit แล้วเปิดฟอร์ม frmModUnit ขึ้นมาใหม่อีกครั้ง
- ผมกดปุ่ม ctl++ (เพื่อเพิ่มข้อมูลใหม่)
- ในช่อง SECTID (ที่เคยถูกซ่อน แล้วผมไปแก้ให้มองเห็น) ผมกรอกเลขเข้าไปเป็น 2
- ที่ช่อง Name: ผมกรอกคำว่า "ไทย แอคเซส"
- กดปุ่ม Save ได้รับ message แจ้งว่า "Data was Add"
- ผมทำการปิดฟอร์ม แล้วไปเปิดดูข้อมูลในตาราง tblUnit
- ข้อมูลถูกเพิ่มเข้าตารางถูกต้อง !!
** อ้อ แถมอีกอย่าง การหาชื่อโปรไฟล์ หรือ user name ไม่ต้องใช้ฟังก์ชั่น API ก็ได้นะครับ
ใช้สั่ง Environ() แทนก็ได้ เช่น $us = Environ("UserName")
8 @R00512
'** อย่าลืมย้อนอ่าน Reply ก่อนหน้า *****
'--------------------------------------------------------------------------------------------
Private Sub cmdClosefrmmodUnit_Click()
Dim sq As String
sq = "INSERT INTO tblUnit (SECTID, [NAMES], CRIT, NO_OF, NOTES, MODIFIED, CREATE_USER, " & _
"MOD_USER) VALUES(" & SECTID.Value & ", '" & txtName_Unit.Value & "', " & txtCrit_Unit.Value & ", " & _
txtNoOf_Unit.Value & ", '" & txtNote_Unit.Value & "', #" & txtCurrentTime_Unit.Value & "#, '" _
& xtCurrentUser_Unit.Value & "', '" & txtModUser_Unit.Value & "');"
On Error GoTo er
CurrentDb.Execute sq
MsgBox "Data was Added"
Exit Sub
er:
MsgBox "Cannot Added data !!!" & Err.Number & "-" & Err.Description
End Sub
'----------------------------------------------------------------------------------------------
Private Sub cmdUpdateUnit_Click()
Dim sq As String
sq = "UPDATE tblUnit SET [NAMES] = ' " & txtName_Unit.Value & " ', CRIT = " & txtCrit_Unit.Value & _
", NO_OF = " & txtNoOf_Unit.Value & ", NOTES = '" & txtNote_Unit.Value & "', MODIFIED = #" & _
txtCurrentTime_Unit.Value & "#, CREATE_USER = ' " & txtCreateUser_Unit.Value & _
" ', MOD_USER = ' " & txtCurrentUser_Unit.Value & " ' WHERE UNITID = " & txtUNITID.Value & ";"
On Error GoTo er
CurrentDb.Execute sq
MsgBox "Data was updated"
Exit Sub
er:
MsgBox "Cannot Updated data !!!" & Err.Number & "-" & Err.Description
End Sub
'** อย่าลืมย้อนอ่าน Reply ก่อนหน้า *****
'--------------------------------------------------------------------------------------------
Private Sub cmdClosefrmmodUnit_Click()
Dim sq As String
sq = "INSERT INTO tblUnit (SECTID, [NAMES], CRIT, NO_OF, NOTES, MODIFIED, CREATE_USER, " & _
"MOD_USER) VALUES(" & SECTID.Value & ", '" & txtName_Unit.Value & "', " & txtCrit_Unit.Value & ", " & _
txtNoOf_Unit.Value & ", '" & txtNote_Unit.Value & "', #" & txtCurrentTime_Unit.Value & "#, '" _
& xtCurrentUser_Unit.Value & "', '" & txtModUser_Unit.Value & "');"
On Error GoTo er
CurrentDb.Execute sq
MsgBox "Data was Added"
Exit Sub
er:
MsgBox "Cannot Added data !!!" & Err.Number & "-" & Err.Description
End Sub
'----------------------------------------------------------------------------------------------
Private Sub cmdUpdateUnit_Click()
Dim sq As String
sq = "UPDATE tblUnit SET [NAMES] = ' " & txtName_Unit.Value & " ', CRIT = " & txtCrit_Unit.Value & _
", NO_OF = " & txtNoOf_Unit.Value & ", NOTES = '" & txtNote_Unit.Value & "', MODIFIED = #" & _
txtCurrentTime_Unit.Value & "#, CREATE_USER = ' " & txtCreateUser_Unit.Value & _
" ', MOD_USER = ' " & txtCurrentUser_Unit.Value & " ' WHERE UNITID = " & txtUNITID.Value & ";"
On Error GoTo er
CurrentDb.Execute sq
MsgBox "Data was updated"
Exit Sub
er:
MsgBox "Cannot Updated data !!!" & Err.Number & "-" & Err.Description
End Sub
9 @R00515
ทำไมต้อง??ชว์ txtUNITID กับ SECTID ด้วยครับ
10 @R00516
ทั้ง txtUNITID กับ SECTID ถ้าผมเซ็ต Visible = T, Enable = F จะมีผลอะไรมั้ยครับ
11 @R00518
อ้อถ้าการทำงานทั่วไป หรือการทำงานปกติ ก็ไม่ต้องโชว์ครับ ซ่อนมันไปอย่างเดิมนั่นแหละดีแล้วครับ
เพราะผมเดาว่า ค่าที่สองคอนโทรลนั้น จะได้มา หรือจะรับไป คงเป็นการ ให้และรับ โดยระบบของคุณเอง
แต่ที่ผมโชว์ขึ้นมาเพราะผมจะใช้วิธีลัด เพื่อให้สามารถทดสอบการเพิ่มรายการ ได้
ถ้าผมไม่ใส่ SECTID เข้าไปเอง ผมก็ทดสอบการเพิ่มข้อมูลไม่ได้
เพราะผมเดาว่า ค่าที่สองคอนโทรลนั้น จะได้มา หรือจะรับไป คงเป็นการ ให้และรับ โดยระบบของคุณเอง
แต่ที่ผมโชว์ขึ้นมาเพราะผมจะใช้วิธีลัด เพื่อให้สามารถทดสอบการเพิ่มรายการ ได้
ถ้าผมไม่ใส่ SECTID เข้าไปเอง ผมก็ทดสอบการเพิ่มข้อมูลไม่ได้
Time: 0.5395s