2012-03-20 56 views
1

我真的不明白這一點。我有一個簡單的ASP與3格在它。 每個div都有一些HTML,當頁面加載時,列表框會填充值。10個,3次我得到這個錯誤:Microsoft JET數據庫引擎錯誤'80040e10'沒有給出一個或多個所需參數的值

當我運行這個頁面時,大多數時候它工作正常,但約10次中有3次,我明白了。

Microsoft JET Database Engine error '80040e10' No value given for one or more required parameters. /order_tracking/order_admin.asp, line 269

此行有此查詢寫:這是第一個查詢頁面上錯誤它說在哪裏rsRecordSet.Open寫入

<%Set rsRecordSet = Server.CreateObject("ADODB.Recordset") 
rsRecordSet.Open "select top 1 * from orders order by id desc", cn 
While not rsRecordSet.EOF 
%> 
<input type="text" size="15" id="last_order_no" name="last_order_no" value="<%=rsRecordSet("order_no")%>" disabled="disabled"/> 
<%rsRecordSet.MoveNext 
Wend 
If rsRecordSet.State = adStateOpen Then rsRecordSet.Close 
Set rsRecordSet= nothing 
%> 

請建議什麼錯行了。 ..我將不勝感激。

+2

使用程序會顯示行號,請告訴我們哪行是行269。 – 2012-03-20 22:19:27

回答

1

聽起來像內部數據庫問題,如果它有時工作,有時它不起作用。

你有很多的流量?如果是這樣,你最好轉移到像SQL Server或MySQL這樣的現代數據庫。

無論如何,我會首先嚐試這些事情,看看會發生什麼:

  1. 更改代碼是:

    Set rsRecordSet = cn.Execute("select top 1 * from orders order by id desc") 
    

    爲什麼它可能工作?因爲Open方法正在使用可能「很重」的遊標和鎖。連接本身使用Execute應儘可能「輕量級」。

  2. 更改SQL語句是:

    "select top 1 [order_no] from [orders] order by [id] desc" 
    

    也許這將幫助 - 訪問就是有時字段名稱敏感。

  3. 更改代碼:

    rsRecordSet.Open "select * from orders order by id desc", cn 
    IF not rsRecordSet.EOF Then %> 
        <input type="text" size="15" id="last_order_no" name="last_order_no" value="<%=rsRecordSet("order_no")%>" disabled="disabled"/> <% 
    End If 
    

    也許Select Top是做幕後的一些骯髒的東西。

  4. 作爲放棄之前的最後一招,寫出存儲過程返回單個記錄並使用它來代替原始SQL語句。

+0

非常感謝。我發現了這個問題。在查詢中,我使用「id」,有時它不喜歡。 – VJV 2012-03-21 09:30:30

+0

非常奇怪,預期的行爲總是拋出錯誤..但是我們第二次想到的是我們在這裏談論的是微軟。 ;) – 2012-03-21 09:39:38

相關問題