0 / 0 / 0
Регистрация: 05.08.2007
Сообщений: 55
|
|
1 | |
Ошибка ADODB.Field error '800a0bcd' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current recor04.09.2007, 17:52. Показов 2955. Ответов 10
Метки нет Все метки)
(
Имею скрипт
Set dbo = Server.CreateObject('ADODB.Connection') dbo.Open 'PEN1' Title = Request.QueryString('mess') SQLQuery = 'SELECT * FROM Q_TOVAR WHERE name='' & Title & ''' Set rso = dbo.Execute(SQLQuery) Response.Write rso.Fields('Cast').value dbo.Close Set dbo = Nothing Он работает нормально, если такие данные в базе есть. Но если запрос не возвращает не одной строки тогда выдает ошибку. ADODB.Field error '800a0bcd' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. /pen/ifrsrc/penscript1.asp, line 21 Как правильно проанализировать данную ситуацию. Причес при конекте к подобной базе на MSSQL проблема не возникает, просто значение неопределено. И еще както странно получается с вычислением на компъютере клиента Суммы получаются только целыми хотя работа ведется с 2 знаками после запятой, может быть тут играет роль настройки десятичного разделителя.Они на сервере и у клиента разные
0
|
|
04.09.2007, 17:52 | |
Ответы с готовыми решениями:
10
ADODB.Field error '800a0bcd' Either BOF or EOF is True, or the current record has been deleted; the operation requested by the application requires ADODB.Field error '80020009' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. Голосовалка, ошибка: Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. Ошибка Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record |
Sergik
|
|
04.09.2007, 17:58 | 2 |
перед выводом записи надо проверять:
if not rso.eof then response.write rso.Fields('Cast').value |
0 / 0 / 0
Регистрация: 05.08.2007
Сообщений: 55
|
|
04.09.2007, 18:11 [ТС] | 3 |
Попробовал как предложили тот же ефект и та же ошибка.Забыл сказать что данные в Access.(Думаю не важно)
А по поводу 2 части вопрос ??? Спасибо за предыдущие ответы.
0
|
Sergik
|
|
04.09.2007, 18:23 | 4 |
не может быть той же ошибки, если запрос не возвратил ни одной записи, то свойство rso.eof=true, тогда ничего не выведется
по поводу второго - код бы надо посмотреть |
0 / 0 / 0
Регистрация: 05.08.2007
Сообщений: 55
|
|
04.09.2007, 18:38 [ТС] | 5 |
1/Сделал так
if rso.eof then Response.Write 0 else response.write rso.Fields('Cast').value endif Тот же эфект. 2/Код пока такой (для отладки), затем оптимизирую. Пока поставил разделитель ',' дальше накерное буду просто из запроса получать цену*100 ,на клиенте делить. function OnLodTotalPrice() { var Total, Final; Total = 0; Total+= parseFloat(Message1.innerText)*(document.forms.PEN _MainFrmS.elements.quant1.value); Total+= parseFloat(Message2.innerText)*(document.forms.PEN _MainFrmS.elements.quant2.value); Total+= parseFloat(Message3.innerText)*(document.forms.PEN _MainFrmS.elements.quant3.value); Total+= parseFloat(Message4.innerText)*(document.forms.PEN _MainFrmS.elements.quant4.value); Total+= parseFloat(Message5.innerText)*(document.forms.PEN _MainFrmS.elements.quant5.value); Total+= parseFloat(Message6.innerText)*(document.forms.PEN _MainFrmS.elements.quant6.value); Total+= parseFloat(Message7.innerText)*(document.forms.PEN _MainFrmS.elements.quant7.value); Total+= parseFloat(Message8.innerText)*(document.forms.PEN _MainFrmS.elements.quant8.value); Total+= parseFloat(Message9.innerText)*(document.forms.PEN _MainFrmS.elements.quant9.value); Total+= parseFloat(Message10.innerText)*(document.forms.PE N_MainFrmS.elements.quant10.value); Total+= parseFloat(Message11.innerText)*(document.forms.PE N_MainFrmS.elements.quant11.value); Total+= parseFloat(Message12.innerText)*(document.forms.PE N_MainFrmS.elements.quant12.value); Total+= parseFloat(Message13.innerText)*(document.forms.PE N_MainFrmS.elements.quant13.value); Total+= parseFloat(Message14.innerText)*(document.forms.PE N_MainFrmS.elements.quant14.value); Total+= parseFloat(Message15.innerText)*(document.forms.PE N_MainFrmS.elements.quant15.value); PEN_MainFrmS.price1.value=parseFloat(Message1.inne rText); PEN_MainFrmS.price2.value=parseFloat(Message2.inne rText); PEN_MainFrmS.price3.value=parseFloat(Message3.inne rText); PEN_MainFrmS.price4.value=parseFloat(Message4.inne rText); PEN_MainFrmS.price5.value=parseFloat(Message5.inne rText); PEN_MainFrmS.price6.value=parseFloat(Message6.inne rText); PEN_MainFrmS.price7.value=parseFloat(Message7.inne rText); PEN_MainFrmS.price8.value=parseFloat(Message8.inne rText); PEN_MainFrmS.price9.value=parseFloat(Message9.inne rText); PEN_MainFrmS.price10.value=parseFloat(Message10.in nerText); PEN_MainFrmS.price11.value=parseFloat(Message11.in nerText); PEN_MainFrmS.price12.value=parseFloat(Message12.in nerText); PEN_MainFrmS.price13.value=parseFloat(Message13.in nerText); PEN_MainFrmS.price14.value=parseFloat(Message14.in nerText); PEN_MainFrmS.price15.value=parseFloat(Message15.in nerText); Final = String(Total); if (Final != 'NaN') { var i = Final.indexOf(','); i += 3; Final = Final.substring(0,i); TMessage.innerText = Total; } }
0
|
Sergik
|
|
04.09.2007, 18:44 | 6 |
насчет первого - первый о таком слышу, может действительно Access барахлит
по поводу второго - попробуй вместо document.forms.PEN_MainFrmS.elements.quant15.value parseFloat(document.forms.PEN_MainFrmS.elements.qu ant15.value) |
0 / 0 / 0
Регистрация: 05.08.2007
Сообщений: 55
|
|
04.09.2007, 19:33 [ТС] | 7 |
Попробовал
if rso.recordCount<=0 THEN Response.Write 0 else Response.Write rso.Fields('Cast').value end if Тот же эфект.
0
|
Sergik
|
|
04.09.2007, 19:40 | 8 |
1)номер строки 21 - это где response.write?
2) сделай Response.Write(rso('Cast')) 3)попробуй еще переименуй поле cast, например в SQLServer это название является зарезервированным, команда так называется |
0 / 0 / 0
Регистрация: 05.08.2007
Сообщений: 55
|
|
05.09.2007, 12:26 [ТС] | 9 |
>1)номер строки 21 - это где response.write?
Да >2) сделай Response.Write(rso('Cast')) Попробовал ничего не дало Expected identifier /pen/ifrsrc/penscript1.asp, line 21 response.write rso.('Casts') Для Response.Write rso.Fields('Casts').value получаю Item cannot be found in the collection corresponding to the requested name or ordinal. >3)попробуй еще переименуй поле cast, например в SQLServer это название является зарезервированным, команда так называется Попробовал ничего не дало.
0
|
Sergik
|
|
05.09.2007, 12:33 | 10 |
ошибка говорит о том, что такого поля в таблице нету
|
0 / 0 / 0
Регистрация: 05.08.2007
Сообщений: 55
|
|
05.09.2007, 14:18 [ТС] | 11 |
Поставил такой код и Добавил в HEAT
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=windows-1251'> <META HTTP-EQUIV='pragma' CONTENT='no-cache'> <META HTTP-EQUIV='Cache-Control' CONTENT='no-cache'> On error resume next Response.Write rso.Fields('Cast').value if Err.Number<>0 then Response.Write 0 end if Все заработало,вроде даже быстрее. Осталось разобраться с '.' и ',' в типе Float Спасибо за помощь.
0
|
05.09.2007, 14:18 | |
Помогаю со студенческими работами здесь
11
Как подавить вывод на экран предупреждения - Either BOF or EOF is True, or the current record has been deleted... ? Ошибка ADODB.Recordset error '800a0e78' The operation requested by the application is not allowed if the object is closed. ADODB.Recordset (0x800A0BCD) BOF или EOF имеет значение True, либо текущая запись удалена. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |