我用ASP程式, 無法寫入資料庫......

2011-11-27 7:21 pm
我用 asp 程式寫入新紀錄入資料庫, 但出現錯誤 :

VBScript 發生錯誤: 錯誤號碼:3251 錯誤說明:目前的資料錄集不支援更新。這可能成為提供者或所選鎖定類型的限制。 錯誤輔助說明:1240648 錯誤來源:Microsoft VBScript 執行階段錯誤


Why ??? 點處理....


Asp 程式如下
-----------------------------------------------------------------------------------------------

<%On Error Resume Next  'Dim strDBDSN, strSQL, objDBConn
strDBDSN = "Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("db/ppdb.mdb")&";"
Set objDBConn = Server.CreateObject("ADODB.Connection")
objDBConn.Open strDBDSNDim strLoginID,strPassword,strEmailif request.form("loginID")<>"" thenstrLoginID = Request.Form("loginID")
strPassword = Request.Form("password")
strEmail = Request.Form("email")Set objRS = Server.CreateObject("ADODB.RecordSet")
sql = "select * from member"
objRS.Open sql,objDBConnobjRS.AddNew
objRS.Fields("loginID") = strLoginID
objRS.Fields("Password") = strPassword
objRS.Fields("email") = strEmail
objRS.Update
...........

%><%On Error Resume Next 'Dim strDBDSN, strSQL, objDBConn
strDBDSN = "Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("db/ppdb.mdb")&";"
Set objDBConn = Server.CreateObject("ADODB.Connection")
objDBConn.Open strDBDSNDim strLoginID,strPassword,strEmail
if request.form("loginID")<>"" thenstrLoginID = Request.Form("loginID")
strPassword = Request.Form("password")
strEmail = Request.Form("email")Set objRS = Server.CreateObject("ADODB.RecordSet")
sql = "select * from member"
objRS.Open sql,objDBConn
objRS.AddNew
objRS.Fields("loginID") = strLoginID
objRS.Fields("Password") = strPassword
objRS.Fields("email") = strEmail
objRS.Update

回答 (2)

2011-12-07 2:45 pm
✔ 最佳答案
執行資料庫查詢時,ASP 檔案發生 ASP 0115 或 Inetinfo 應用程式錯誤

檢視此文章適用的產品。





徵狀

當您執行可進行資料庫查詢的 ASP 檔案時,可能會出現下列其中一則錯誤訊息:

錯誤 'ASP 0115'

意外的錯誤

/RelativePath/ASP_File_Name.asp

外部物件上發生一個可截獲的錯誤。指令碼無法繼續執行。

Inetinfo 應用程式錯誤 The instruction at 0x77f6467a referenced memory at 0x64002e00 the memory could not be written. (0x77f6467a 指令參考 0x64002e00 處的記憶體,該記憶體無法寫入)。



注意:Roadmap 範例網站中含有 ASP 檔案,當 ACL 權限設定不正確時,此檔案便會導致產生上述錯誤訊息。



回此頁最上方

發生的原因

當您執行查詢 (IDQ 或 ADO) 時,網站會先驗證 Windows NT 使用者帳戶,通過之後才會在這個環境下執行查詢。當使用者帳戶沒有存取控制清單 (ACL) 中的適當權限,無法使用查詢所需的所有資源時,便會發生這個錯誤。



回此頁最上方

解決方案

如果要解決這項問題,請依照下列步驟執行:

1.將下列目錄的「讀取」權限授予使用者帳戶 (預設為 IUSR_ComputerName):



•含有 ASP 檔案的磁碟的根目錄。

•%SystemRoot%\system32\ 目錄。

•%SystemRoot%\system32\inetserv 目錄。

•網站的主目錄 (預設為 C:\InetPub)。

注意:如果使用 ADO 查詢,請授予下列目錄的「讀取」權限:



•C:\Program Files\Common Files\System\ole db

•C:\Program Files\Common Files\System\ado

2.將「變更」權限授予使用者帳戶,以變更實際使用的資料庫檔案以及包含該檔案的目錄。

3.將「寫入」權限授予使用者帳戶,以寫入系統的暫存目錄 (此目錄是由系統的 TEMP 和 TMP 環境變數所指定。如需有關暫存變數的詳細資訊,請參閱下一節)。



回此頁最上方

其他相關資訊

暫存變數

Jet 資料庫引擎會在執行 Jet 作業期間,於暫存目錄中建立暫存檔。根據預設,這些環境變數是根據每個使用者設定檔所定義,並不是全系統的設定。如果要修改這些變數,請使用下列方法之一:

•全系統設定



在 Autoexec.bat 檔 (位於系統磁碟的根目錄) 中,加入類似下列的命令列,並使用您要保留暫存檔的目錄路徑:



Set TEMP=C:\Temp

Set TMP =C:\Temp





您必須重新啟動電腦,才能使用新的設定來讀取 Autoexec.bat 檔。

•使用者設定



如果只要針對目前登入伺服器的使用者設定變數,請執行下列步驟:



1.在桌面上的 [我的電腦] 上按一下滑鼠右鍵,再按一下 [內容]。

2.按一下 [環境] 索引標籤。

3.在 User_Name 的「使用者變數」下,變更 TEMP 和 TMP 兩變數的值,再按一下 [確定]。

4.登出之後再登入 Windows NT 電腦。
2011-12-01 4:35 am
錯誤說明:目前的資料錄集不支援更新。這可能成為提供者或所選鎖定類型的限制。

你的 ASP code 看不出有问题。
而错误说明提示,“是不是你的 ppdb.mdb“ 更改了 ”权限“
+ everybody = allow access

看不可以。


收錄日期: 2021-04-11 18:49:06
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20111127000051KK00201

檢視 Wayback Machine 備份