กระทู้เก่าบอร์ด อ.Yeadram
5,143 9
URL.หัวข้อ /
URL
Syntax error in update statement
ผมเขียนโปรแกรมบน Access 2003 ผมติดปัญหาเวลาอัพเดทข้อมูลอะครับ
โปรแกรมฟ้องว่า"Syntax error in Update statement"
ฟิลด์ในตารางtblUnit
UNITID - AUTONUMBER - PK
SECTID - NUMBER - FK
NAME - TEXT
CRIT - NUMBER
NO_OF - NUMBER
NOTE - MEMO
MODIFIED - DATE/TIME
CREATE_USER - TEXT
MOD_USER - TEXT
Private Sub cmdUpdateUnit_Click()
Dim rsUpdateUnitRecords As DAO.Recordset
Dim dbCurrentDB As DAO.Database
Dim UpdateUnitQuery As String
'คำสั่ง SQL ไม่ได้มีการเว้นบรรทัดนะครับ เขียนต่อกันเป็นบรรทัดเดียว
UpdateUnitQuery = " UPDATE tblUnit SET NAME = ' " & txtName_Unit.Value & " ', CRIT = " & txtCrit_Unit.Value & ", NO_OF = " & txtNoOf_Unit.Value & ", NOTE = ' " & txtNote_Unit.Value & " ', MODIFIED = ' " & txtModDate_Unit.Value & " ', CREATE_USER = ' " & txtCreateUser_Unit.Value & " ', MOD_USER = ' " & txtCurrentUser_Unit.Value & " ' WHERE UNITID = " & txtUNITID.Value
Set dbCurrentDB = Access.CurrentDb
Set rsUpdateUnitRecords = dbCurrentDB.OpenRecordset(UpdateUnitQuery, dbOpenSnapshot)
If rsUpdateUnitRecords.BOF = True And rsUpdateUnitRecords.EOF = True Then
MsgBox "Data was updated"
Else
MsgBox "Cannot Updated data !!!"
End If
End Sub
ผมไม่แน่ใจว่าผมเขียน คำสั่ง UPDATE ถูกหรือเปล่า
ขอบคุณครับ
โปรแกรมฟ้องว่า"Syntax error in Update statement"
ฟิลด์ในตารางtblUnit
UNITID - AUTONUMBER - PK
SECTID - NUMBER - FK
NAME - TEXT
CRIT - NUMBER
NO_OF - NUMBER
NOTE - MEMO
MODIFIED - DATE/TIME
CREATE_USER - TEXT
MOD_USER - TEXT
Private Sub cmdUpdateUnit_Click()
Dim rsUpdateUnitRecords As DAO.Recordset
Dim dbCurrentDB As DAO.Database
Dim UpdateUnitQuery As String
'คำสั่ง SQL ไม่ได้มีการเว้นบรรทัดนะครับ เขียนต่อกันเป็นบรรทัดเดียว
UpdateUnitQuery = " UPDATE tblUnit SET NAME = ' " & txtName_Unit.Value & " ', CRIT = " & txtCrit_Unit.Value & ", NO_OF = " & txtNoOf_Unit.Value & ", NOTE = ' " & txtNote_Unit.Value & " ', MODIFIED = ' " & txtModDate_Unit.Value & " ', CREATE_USER = ' " & txtCreateUser_Unit.Value & " ', MOD_USER = ' " & txtCurrentUser_Unit.Value & " ' WHERE UNITID = " & txtUNITID.Value
Set dbCurrentDB = Access.CurrentDb
Set rsUpdateUnitRecords = dbCurrentDB.OpenRecordset(UpdateUnitQuery, dbOpenSnapshot)
If rsUpdateUnitRecords.BOF = True And rsUpdateUnitRecords.EOF = True Then
MsgBox "Data was updated"
Else
MsgBox "Cannot Updated data !!!"
End If
End Sub
ผมไม่แน่ใจว่าผมเขียน คำสั่ง UPDATE ถูกหรือเปล่า
ขอบคุณครับ
9 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R00467
โค้ดบรรทัดนี้ >>Set rsUpdateUnitRecords = dbCurrentDB.OpenRecordset(UpdateUnitQuery, dbOpenSnapshot)
ผมเปลี่ยนเป็น Set rsUpdateUnitRecords = dbCurrentDB.Execute(UpdateUnitQuery)
โปรแกรมฟ้องว่า "Expected Function or variable"
ผมเปลี่ยนเป็น Set rsUpdateUnitRecords = dbCurrentDB.Execute(UpdateUnitQuery)
โปรแกรมฟ้องว่า "Expected Function or variable"
3 @R00469
ตั้งแต่บรรทัด Set dbCurrentDB = Access.CurrentDb
ไปจนถึง End Sub
ถ้าจะใช้คำสั่ง ตามแบบ อ.สันติสุข ลอง คอมเม้นต์ให้หมด แล้วเอานี่ไปใส่แทน
Set dbCurrentDB = Access.CurrentDb
docmd.setwarning=false
on error goto er
dbCurrentDB.execute UpdateUnitQuery
MsgBox "Data was updated"
exit sub
er:
MsgBox "Cannot Updated data !!!"
End Sub
การเช็คว่า คำสั่ง update ที่เราสั่ง ทำงานสำเร็จได้หรือไม่ มีหลายวิธีเช็คครับ ลองวิธีนี้ดูครับ เช็คได้เหมือนกัน
ไปจนถึง End Sub
ถ้าจะใช้คำสั่ง ตามแบบ อ.สันติสุข ลอง คอมเม้นต์ให้หมด แล้วเอานี่ไปใส่แทน
Set dbCurrentDB = Access.CurrentDb
docmd.setwarning=false
on error goto er
dbCurrentDB.execute UpdateUnitQuery
MsgBox "Data was updated"
exit sub
er:
MsgBox "Cannot Updated data !!!"
End Sub
การเช็คว่า คำสั่ง update ที่เราสั่ง ทำงานสำเร็จได้หรือไม่ มีหลายวิธีเช็คครับ ลองวิธีนี้ดูครับ เช็คได้เหมือนกัน
4 @R00470
ผมลองเปลี่ยนโค้ดตามที่คุณบอกแล้ว มันฟ้องว่า"Method or data member not found" และมีแถบสีน้ำเงินที่ docmd.setwarning=false
5 @R00471
เปลี่ยนครับเปลี่ยน ขออภัย เปลี่ยนเป็น
Docmd.SetWarnings False
Docmd.SetWarnings False
6 @R00472
เปลี่ยนแล้วก็ฟ้องเหมือนเดิมครับ
ผมต้องแอดcomponent อะไรเพิ่มอีกหรือเปล่าครับ
ผมต้องแอดcomponent อะไรเพิ่มอีกหรือเปล่าครับ
7 @R00473
จริงๆ มันก็ไม่จำเป็นหรอกครับ ลบมันทิ้งก็ได้
มันเป็นคำสั่ง ที่ไม่ให้ระบบแจ้งเตือน ครับ ถ้าเราไม่รำคาญมันนัก ก็ปล่อยให้มันแจ้งเตือนมาก็ได้ครับ
คือมันจะแจ้งเตือนทุกครั้งที่เราจะอัพเดตข้อมูล คล้ายๆ จะถามย้ำว่า เราแน่ใจหรือไม่ว่าจะสั่ง อัพเดต อะไรประมาณนั้นครับ
ดังนั้น ถ้าบรรทัดนี้มันมีปัญหากับ Access 2003 นัก ก็ลบมันออกก็ได้ครับ เวอร์ชั่น 11 เนี่ย มันมีปัญหาอะไรกันนักหนากับ docmd นะ เหอๆ
มันเป็นคำสั่ง ที่ไม่ให้ระบบแจ้งเตือน ครับ ถ้าเราไม่รำคาญมันนัก ก็ปล่อยให้มันแจ้งเตือนมาก็ได้ครับ
คือมันจะแจ้งเตือนทุกครั้งที่เราจะอัพเดตข้อมูล คล้ายๆ จะถามย้ำว่า เราแน่ใจหรือไม่ว่าจะสั่ง อัพเดต อะไรประมาณนั้นครับ
ดังนั้น ถ้าบรรทัดนี้มันมีปัญหากับ Access 2003 นัก ก็ลบมันออกก็ได้ครับ เวอร์ชั่น 11 เนี่ย มันมีปัญหาอะไรกันนักหนากับ docmd นะ เหอๆ
8 @R00474
ตอนนี้update ข้อมูลได้แล้วครับ แต่ผมมีข้อสงสัยอีกนิดครับ คือหลังจากที่ข้อมูลและกดปุ่มปิดฟอร์มนี้ มันจะโชว์dial box ว่า "This record has been changed by another user since you started editing it. If you save the record you will overwrite the changes the other user made. Copying the changes to the clipboard will let you look at the values the other user entered, and then paste your changes back in if you decide to make changes."
มีปุ่ม Save Record, Copy to Clipboard, Drop Changes
ต้องเลือกปุ่มไหนครับ
มีปุ่ม Save Record, Copy to Clipboard, Drop Changes
ต้องเลือกปุ่มไหนครับ
9 @R11206
String sqlUpdate = "UPDATE Member SET Name = '"+txtName.getText()+"',"+
"Last = '"+txtLast.getText()+"',"+
"Sex = '"+sex+"'"+
"Address = '"+txtAddress.getText()+"',"+
"Province = '"+cmbProv.getSelectedItem()+"',"+
"ZipCode = '"+txtZip.getText()+"',"+
"Telephone = '"+txtTel.getText()+"',"+
"WHERE ID = '"+txtID.getText()+"'";
มันฟ้องว่า syntax error in update statement แก้ตรงไหนอ่ะ
"Last = '"+txtLast.getText()+"',"+
"Sex = '"+sex+"'"+
"Address = '"+txtAddress.getText()+"',"+
"Province = '"+cmbProv.getSelectedItem()+"',"+
"ZipCode = '"+txtZip.getText()+"',"+
"Telephone = '"+txtTel.getText()+"',"+
"WHERE ID = '"+txtID.getText()+"'";
มันฟ้องว่า syntax error in update statement แก้ตรงไหนอ่ะ
Time: 0.2482s
MODIFIED = #" & txtModDate_Unit.Value & "#,
ให้ไปดู http://www.thai-access.com/yeadram_view.php?topic_id=55 เพิ่มเติมด้วยครับ
นอกจากนี้ ให้ใช้คำสั่ง dbCurrentDB.Execute UpdateUnitQuery แทน เพราะ OpenRecordset เอาไว้ใช้กับ Select Statement เท่านั้น