10/10/2018, 00:04

Cập nhật dữ liệu bằng ASP như thế nào

Mình viết một trang asp để cập nhật nội dung một bảng trong cơ sở dữ liệu access
Không hiểu tại sao khi chạy thì lại có thông báo lỗi
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Cannot update. Database or object is read-only.
Mặc dù mình đã dùng con trỏ adOpenKeySet, rồi con trỏ adOpenDynamic, dùng khóa adLockOptimistic,khóa adPessimistic
Bạn nào biết chỉ giúp mình tại sao lại có lỗi như trên và làm thế nào để cập nhật được
themummy viết 02:10 ngày 10/10/2018
Có phải bạn đang làm web trên máy của chính mình và dùng IIS không? Hãy chuyển wwwroot sang ổ khác, mà không định dạng ở NTFS. Vì khi định dạng ở NTFS bạn phải phân quyền, cho phép cái folder chứa trang web của bạn có quyền đọc, ghi... Tốt nhất nên chuyển folder wwwroot sang ổ khác. Đỡ phải lằng nhằng trong cái việc phân quyền.
klasdfe viết 02:16 ngày 10/10/2018
Phù! Cuối cùng thì mình cũng đã cập nhật được rồi. Mình cám ơn bạn nhiều. Hồi đầu thấy lỗi mình cứ nghĩ là tại cái DSN, rồi ODBC, mình còn cài lại win mấy lần, chuyển cả sang win xp SP1 cũng vẫn không được. Trong khi đó khi mình thử vẫn trang asp đó ở máy nhà bạn mình thì vẫn tốt. Thậm chí cả khi mình thử trang asp đó ở trên một ổ cứng khác của mình thì trang đó cũng vẫn tốt. Vậy là không phải tại win rồi. Mình nghĩ hay là tại access, thế là mình cài từ access 97, access 2000, access 2002, access 2003. Thế mà vẫn công cốc. Đến nỗi mình chán quá luôn. Mãi gần đây mình mới tình cờ phát hiện ra là giữa máy của mình và máy của thằng bạn mình chỉ khác nhau ở chỗ là nó dùng fat32 còn mình dùng ntfs. Hôm đó lên đây đọc được bài của bạn, thế là mình về làm được luôn.
Mình cũng kiểm tra và thấy là ổ C cứ để ntfs cũng được, chỉ cần chuyển cái database sang ổ đĩa nào dùng fat32 là được.
Bạn cho mình hỏi là ntfs phân quyền thế nào, làm sao để vẫn dùng ntfs mà vẫn cập nhật dữ liệu được ?
thanhlamtc2007 viết 02:19 ngày 10/10/2018
Minh co 1 CSDL access DT1.mdb Ben trong co 1 table
Baotin(STT,NGAY,VT,MOTA,HTNBT)

trang Them01.asp nhu sau :
<html>
<body>
<form method="post" action="THEM02.asp">
<h2>Thêm mẫu tin mới</h2>
<table>
<tr>
<td>So thu tu :</td>
<td><input name="STT"></td>
</tr><tr>
<td>Ngày báo tin : </td>
<td><input name="NGAY"></td>
</tr><tr>
<td>Vị trí : </td>
<td><input name="VT"></td>
</tr><tr>
<td>Mô tả : </td>
<td><input name="MOTA"></td>
</tr><tr>
<td>Tên người báo tin: </td>
<td><input name="HTNBT"></td>
</tr>
</table>
<br><br>
<input type="submit" value="Add New" Name="B1">
<input type="reset" value="Cancel" Name="B2">
<input type="button" value="return" Name="B2" onclick="history.go(-1)" >
</form>
</body>
</html>

Trang them02.asp nhu sau :
<html>
<head>
<title>Xử Lý Thêm Record Mới</title>
<%
set cn=Server.CreateObject("ADODB.Connection")
cn.Provider="Microsoft.Jet.OLEDB.4.0"
cn.Open(Server.Mappath("DT1.mdb"))

set rs = Server.CreateObject("ADODB.recordset")
rs.Open "BAOTIN",cn,1,3
On Error Resume Next
MSTT= Request.Form("STT")
MNGAY= Request.Form("NGAY")
MVT= Request.Form("VT")
MMOTA= Request.Form("MOTA")
MHTNBT= Request.Form("HTNBT")
rs.addnew
rs("STT")=MSTT
rs("Ngay")=MNGAY
rs("VT")=MVT
rs("MOTA")=MMOTA
rs("HTNBT")=MHTNBT
rs.update
If Err<>0 then
rs.cancelupdate
Response.write("Đã tồn tại STT này hoặc nhập sai dữ liệu <a href=them01.asp>Nhập Lại</a>")
Else
Response.write("Đã Thêm Thành Công")
end if
rs.close
cn.close
%>
</head>

<body>
<form name="Tthem" method="Post" action="them01.asp">
<p><input type="submit" value="Tiếp Tục Thêm Record Mới" name="Tthem"></p></form>
</body>

</html>

=> Máy mình sử dụng NTFS và cấp quyền FullControl Chạy vẫn tốt bạn thử xem sao !
thanhlamtc2007 viết 02:20 ngày 10/10/2018
Hoac ban co the chay thu vidu don gian nay xem sao
Minh co 1 csdl dat ten la csdl.mdb ben trong co 1 table
dat ten la tblNhanvien(Manv,Hotennv)

Trang Thongtincapnhat.asp co noi dung sau :
<html>

<head>
<title>Thong Tin Cap Nhat</title>
</head>
<body>
<h2>Thong Tin Nhan Vien</h2>
<form method="post" action="xulycapnhat.asp" name="F">
<p>Nhap Ma Nhan Vien : <input type="text" name="Manv" size="12"></p>
<p>Nhap Ho Ten Nhan Vien : <input type="text" name="Hotennv" size="27"></p>
<p><input type="submit" name="B1" value="Them"></p>
</form>
</body>

</html>

Trang xulycapnhat.asp co noi dung sau :
<html>

<head>
<title>Xu Ly Cap Nhat Thong Tin</title>
<%
set cn=Server.CreateObject("ADODB.Connection")
cn.Provider="Microsoft.Jet.OLEDB.4.0"
cn.Open(Server.Mappath("CSDL.mdb"))
set rs = Server.CreateObject("ADODB.recordset")
rs.Open "tblNhanvien",cn,1,3
MManv= Request.Form("Manv")
MHotennv=Request.Form("Hotennv")
rs.addnew
rs("Manv")=MManv
rs("Hotennv")=MHotennv
rs.update

if rs.supports(addnew) then
Response.write("Them duoc")
else
Response.write("ko them duoc")
End If
rs.close
cn.close
%>
</head>
<body>
</body>
</html>

ban thu xem sao nha ! chuc vui ve
Bài liên quan
0