Syntax error in update statement
กระทู้เก่าบอร์ด อ.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 ถูกหรือเปล่า
ขอบคุณครับ

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

1 @R00466
MODIFIED เป็นข้อมูลประเภท Date/Time จะครอบด้วยsingle quote ทำเหมือนข้อมูลประเภท Text ไม่ได้ ต้องใช้เครื่องหมาย # ครอบแทน และวันที่ก็ต้องอยู่ในรูปแบบของ mm/dd/yyyy ด้วย ดังนั้นจึงต้องเป็น

MODIFIED = #" & txtModDate_Unit.Value & "#,

ให้ไปดู http://www.thai-access.com/yeadram_view.php?topic_id=55 เพิ่มเติมด้วยครับ

นอกจากนี้ ให้ใช้คำสั่ง dbCurrentDB.Execute UpdateUnitQuery แทน เพราะ OpenRecordset เอาไว้ใช้กับ Select Statement เท่านั้น
2 @R00467
โค้ดบรรทัดนี้ >>Set rsUpdateUnitRecords = dbCurrentDB.OpenRecordset(UpdateUnitQuery, dbOpenSnapshot)

ผมเปลี่ยนเป็น 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 ที่เราสั่ง ทำงานสำเร็จได้หรือไม่ มีหลายวิธีเช็คครับ ลองวิธีนี้ดูครับ เช็คได้เหมือนกัน
4 @R00470
ผมลองเปลี่ยนโค้ดตามที่คุณบอกแล้ว มันฟ้องว่า"Method or data member not found" และมีแถบสีน้ำเงินที่ docmd.setwarning=false
5 @R00471
เปลี่ยนครับเปลี่ยน ขออภัย เปลี่ยนเป็น
Docmd.SetWarnings False
6 @R00472
เปลี่ยนแล้วก็ฟ้องเหมือนเดิมครับ

ผมต้องแอดcomponent อะไรเพิ่มอีกหรือเปล่าครับ
7 @R00473
จริงๆ มันก็ไม่จำเป็นหรอกครับ ลบมันทิ้งก็ได้
มันเป็นคำสั่ง ที่ไม่ให้ระบบแจ้งเตือน ครับ ถ้าเราไม่รำคาญมันนัก ก็ปล่อยให้มันแจ้งเตือนมาก็ได้ครับ
คือมันจะแจ้งเตือนทุกครั้งที่เราจะอัพเดตข้อมูล คล้ายๆ จะถามย้ำว่า เราแน่ใจหรือไม่ว่าจะสั่ง อัพเดต อะไรประมาณนั้นครับ

ดังนั้น ถ้าบรรทัดนี้มันมีปัญหากับ 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

ต้องเลือกปุ่มไหนครับ
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 แก้ตรงไหนอ่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2482s