เรื่อง edit update ครับ ... [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 4.
ช่วยแนะนำหน่อยครับ ต้องการให้แก้ไขข้อมูลแล้วข้อมูลไปupdate ทับข้อมูลเก่า
แต่ไม่ update ข้อมูลครับ ผมได้ทำตาม code ตัวอย่าง หัวข้อ ASP Microsoft Access Edit/Update Record ครับ
ขึ้น error แบบนี้ครับ
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 4.
ขอบคุณครับ
หน้า save ครับ
Code (ASP)
<%
Dim Conn,strSQL,objExec
Set Conn = Server.Createobject("ADODB.Connection")
Conn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("db_chair.mdb"),"" , ""
strSQL = "UPDATE MAINTABLE SET "
strSQL = strSQL&"KEYID = '"&Request.Form("txtKEYID")&"' "
strSQL = strSQL&",CODE = '"&Request.Form("txtCODE")&"' "
strSQL = strSQL&",CLEVEL = '"&Request.Form("txtCLEVEL")&"' "
strSQL = strSQL&",SUPPLYCODE = '"&Request.Form("txtSUPPLYCODE")&"' "
strSQL = strSQL&",QUANTITY = '"&Request.Form("txtQUANTITY")&"' "
strSQL = strSQL&",PRICE = '"&Request.Form("txtPRICE")&"' "
strSQL = strSQL&",ID = '"&Request.Form("txtID")&"' "
strSQL = strSQL&",USERNAME = '"&Request.Form("txtUSERNAME")&"' "
strSQL = strSQL&",USESTATUS = '"&Request.Form("txtUSESTATUS")&"' "
strSQL = strSQL&",REMARK = '"&Request.Form("txtREMARK")&"' "
strSQL = strSQL&",COORDINATOR = '"&Request.Form("txtCOORDINATOR")&"' "
strSQL = strSQL&",TELEPHONE = '"&Request.Form("txtTELEPHONE")&"' "
strSQL = strSQL&",CHIEFCODE = '"&Request.Form("txtCHIEFCODE")&"' "
strSQL = strSQL&",DEPARTMENTCODE = '"&Request.Form("txtDEPARTMENTCODE")&"' "
strSQL = strSQL&",DIVISIONCODE = '"&Request.Form("txtDIVISIONCODE")&"' "
strSQL = strSQL&",SECTIONCODE = '"&Request.Form("txtSECTIONCODE")&"' "
strSQL = strSQL&",BUILDING = '"&Request.Form("txtBUILDING")&"' "
strSQL = strSQL&",FLOOR = '"&Request.Form("txtFLOOR")&"' "
strSQL = strSQL&",ROOM = '"&Request.Form("txtROOM")&"' "
strSQL = strSQL&",INSERTDATE = '"&Request.Form("txtINSERTDATE")&"' "
strSQL = strSQL&",DELETEDATE = '"&Request.Form("txtDELETEDATE")&"' "
strSQL = strSQL&",TRANFERDATE = '"&Request.Form("txtTRANFERDATE")&"' "
strSQL = strSQL&"WHERE KEYID = '"&Request.QueryString("CusID")&"' "
Set objExec = Conn.Execute(strSQL)
If Err.Number = 0 Then
Response.write("บันทึกเรียบร้อยแล้วค่ะ")
Else
Response.write("Error Save ["&strSQL&"] ("&Err.Description&")")
End IF
Conn.Close()
Set objExec = Nothing
Set Conn = Nothing
%
Tag : - - - -
Date :
2010-01-28 09:13:43
By :
space
View :
2049
Reply :
6
ตรวจสอบชื่อฟิวด์ให้ถูกต้องด้วยน่ะครับ
Date :
2010-01-28 09:34:38
By :
webmaster
มันเกิดจาก "strSQL =" แหละ ทำไมไม่เชื่อม string ครับ
โทดทีๆ ดูไม่ clear เอง
Date :
2010-01-28 09:36:37
By :
tungman
ลักษณะเหมือนจะมีปัญหาตั้งกะตรงนี้แล้วนะ จาก error message มันบอกว่าต้องมี parameter = 4
แต่ก็ใส่ไป 4 ถูกแล้ว
Conn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("db_chair.mdb"),"" , ""
ของคุณ Tungman บอกเค้าไม่ได้เชื่อม string อ่ะ เค้าเชื่อมอยู่นะครับ ลองดูนี่
strSQL = strSQL&"KEYID = '"&Request.Form("txtKEYID")&"' "
จาก ref ของ Thaicreate link นี้ ลองเปลี่ยนใช้แบบนี้ดูครับ
Set Conn = Server.Createobject("ADODB.Connection")
Conn.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("database.mdb"),"user" , "password"
Date :
2010-01-28 10:16:30
By :
salapao_codeman
ลอง ตรวจสอบชื่อฟิวด์ ตามคุณ win แล้วครับ
ตอนนี้ error แบบนี้แล้วครับ มันไม่ยอม update ให้ ไม่ทราบว่าติดอะไรตรงไหน
[Microsoft][ODBC Microsoft Access Driver] Cannot update 'KEYID'; field not updateable.
ลองเปลี่ยนตามที่คุณ Codeman แนะนำมาก้อเป็นแบบนี้
Microsoft JET Database Engine error '80040e21'
Cannot update 'KEYID'; field not updateable.
Date :
2010-01-28 13:23:48
By :
space
KEYID เป็น index แบบ increment หรือ แบบ autonumber หรือเปล่าครับ
ถ้าใช่ไม่ต้อง update field นี้ครับ
Date :
2010-01-28 13:42:07
By :
tungman
ขอบคุณทุกท่านครับ
ได้ทำตามที่คุณ tungman แนะนำมา โอเคครับ
ผ่านฉลุย แต่ข้อมูลมันไม่ไปทับของเก่า เหอๆ เดี่ยวจะลองไล่ๆดูอีกทีครับ
Date :
2010-01-28 14:38:42
By :
space
Load balance : Server 01