Из 10, 3 раза я получаю эту ошибку: Ошибка Microsoft JET Database Engine '80040e10' Для одного или нескольких обязательных параметров не задано значение - PullRequest
1 голос
/ 20 марта 2012

Я действительно не понимаю этого.У меня есть простой ASP с 3 div в нем.Каждый div имеет некоторый HTML-код со списками, заполняющими значения при загрузке страницы.

Когда я запускаю эту страницу, в большинстве случаев она работает нормально, но 3 раза из 10 я получаю это.

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
%>

Пожалуйста, предложите, что случилось ... я был бы признателен.

1 Ответ

1 голос
/ 21 марта 2012

Звучит как проблема с внутренней базой данных, если она иногда работает, а иногда не работает.

У вас много трафика?Если это так, вам лучше перейти на современную базу данных, такую ​​как 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...