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 recor

04.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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2007, 17:52
Ответы с готовыми решениями:

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 '800a0bcd' Either BOF or EOF is True, or the current...

ADODB.Field error '80020009' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
Выдается следующая ошибка : === ADODB.Field error '80020009' Either BOF or EOF is True, or...

Голосовалка, ошибка: 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
Большое спасибо всем кто хоть что-нибудь подскажет или наведёт на нужную мысль!! Короче...

10
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2007, 14:18
Помогаю со студенческими работами здесь

Как подавить вывод на экран предупреждения - Either BOF or EOF is True, or the current record has been deleted... ?
Как подавить вывод на экран предупреждения - Either BOF or EOF is True, or the current record has...

Ошибка ADODB.Recordset error '800a0e78' The operation requested by the application is not allowed if the object is closed.
Podskazhite, pochemu u menya posle vipolneniya vseh zadaniy pri popitke vipolnit' sleduyushiy kod...

ADODB.Recordset (0x800A0BCD) BOF или EOF имеет значение True, либо текущая запись удалена.
Пишу вебстраничку для доступа к даным При формировании пустого ркекордсета на Movefirst грязно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru