2012-03-20 3 views
1

私は本当にこれを理解していません。私はそれに3 divを持つ単純なASPを持っています。 各divには、ページが読み込まれるときにリストボックスで値が入力されるHTMLがいくつかあります。10のうち3回このエラーが表示されます:Microsoft JETデータベースエンジンのエラー '80040e10' 1つ以上の必須パラメータに値が指定されていません

このページを実行すると、ほとんどの場合、正常に動作しますが、約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 
%> 

を書かれている行に言うPAGEエラーON FIRSTクエリですいただきました!間違って示唆してください。 ..私は感謝します。

+2

回線番号を示すプログラムを使用して、269行目を表示してください。 –

答えて

1

時々動作し、時にはうまくいかない場合、内部データベースの問題のように聞こえます。

トラフィックが多いですか?そうであれば、SQL ServerやMySQLのような現代のデータベースに移行する方がよいでしょう。とにかく

、私が最初にそれらの事を試してみて、何が起こるかが表示されます:

  1. 変更するコード:

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

    それがうまくいくかもしれないのはなぜ? Openメソッドが「重い」カーソルとロックを使用しているためです。接続自体のExecuteを使用する場合は、できるだけ軽量にする必要があります。 - アクセスが時々フィールド名程度敏感である

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

    多分それは役立ちます:すべき

  2. 変更SQL文。

  3. 変更するコード:たぶんSelect Topは舞台裏でいくつかの厄介なものをやっている

    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 
    

  4. あきらめる前の最後の手段として、その単一のレコードを返すストアドプロシージャを作成し、生のSQLステートメントの代わりに使用します。

+0

ありがとうございます。私は問題を発見した。クエリで私は "ID"を使用しているいくつかの時間は好きではない。 – VJV

+0

非常に奇妙な、予想される動作は常にエラーをスローしますが、2番目の考えではここでMicrosoftについて話しています。 ;) –

関連する問題