0 записей ошибка EOF or BOF

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

0 записей ошибка EOF or BOF

Сообщение Vini » 11.03.2005 (Пт) 21:32

Приветствую!
Вот что делаю
Код: Выделить всё
LastMonth = Conn.Execute("Select total from stat where month = 2")

потом если записей нет LastMonth = NULL
то мне надо это переменной m присвоить значение N/A

Делаю так
Код: Выделить всё
If isnull(LastMonth(0)) = True Then m="N/A"


Не работает правильно.

Как с этим бороться?
Спасибо.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 11.03.2005 (Пт) 22:24

Ну ты хотя бы чуть больше инфы дал... А то
LastMonth = NULL
и LastMonth(0)
как то не очень рядом друг с другом... А
If isnull(LastMonth(0)) = True
можно смело заменить на просто If isnull(LastMonth(0))

Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Сообщение Vini » 11.03.2005 (Пт) 22:49

А что подробнее?
Conn.Execute("Select total from stat where month = 2")
Должно дать мне значение из ячейки total где month = 2 и поместить это в массив LastMonth
Если запись пресутствует то и будет первый элемент в массиве LastMonth(0)
И что с этим не так?

Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Сообщение Vini » 11.03.2005 (Пт) 23:00

Нужен какой то стэйтмент типа

If LastMonth EOF or BOF Then
...
End If

Но вот как это должно выглядеть?

Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Сообщение Vini » 11.03.2005 (Пт) 23:06

Пришлось сделать так
Код: Выделить всё
Dim LastMonth As New ADODB.Recordset
LastMonth.Open("Select total from stat where month = 2"), Conn
    If LastMonth.EOF = True Or Testing.BOF = True Then
        MsgBox ("Null")
    End If



Так работает правильно.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 12.03.2005 (Сб) 3:00

Бр-р-р-р. Ничего не понял. Количество записей в рекордсете - свойство RecordCount. Далее, если LastMonth изначально был массивом, то не стоило обращаться к нему без индекса - лишняя путаница редко когда помогает. Ну и т.д. ...

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 14.03.2005 (Пн) 10:44

что-то как-то с трудом понимаю, что именно желает получить автор топика... но смутно догадываюсь, что ему нужно определить наличие записей в наборе. если это так, то решается это следующим образом:
Код: Выделить всё
Dim LastMonth As New ADODB.Recordset
LastMonth.Open("Select total from stat where month = 2"), Conn
    If LastMonth.BOF And Testing.EOF Then
        MsgBox ("Null")
    End If

смысл в том, что когда набор записей пуст, свойства BOF и EOF (признаки начала и конца набора записей) равны True.
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 156

    TopList