Ошибка 3021. Текущая запись отсутствует.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Ошибка 3021. Текущая запись отсутствует.

Сообщение burik » 25.06.2007 (Пн) 15:00

Здравствуйте!

Вобщем возникает ошибка 3021 (Текущая запись отсутствует).
Есть такой участок кода:
Код: Выделить всё

    For i = 1 To rs.RecordCount
        Load Days(i)
        With Days(i)
        .Top = Days(i - 1).Top + Days(i - 1).Height + 60
       
        .TDate = rs.Fields(1)
        .Text = rs.Fields(3)
        .BackColor = vbWhite
        .Visible = True
        End With
        rs.MoveNext
    Next i

Days - это массив моих контролов.
Ошибка возникает в ...Property Let TDate.. :
Код: Выделить всё

Public Property Let TDate(ByVal New_TDate As Variant)
    DTPicker1.Value() = Mid$(New_TDate, 1, 10) '<<<<<<<< Здесь ошибка возникает
    tTime(0).Text = IIf(Len(CStr(Hour(New_TDate))) = 1, "0" & CStr(Hour(New_TDate)), CStr(Hour(New_TDate)))
    tTime(1).Text = IIf(Len(CStr(Minute(New_TDate))) = 1, "0" & CStr(Minute(New_TDate)), CStr(Minute(New_TDate)))
    tTime(2).Text = IIf(Len(CStr(Second(New_TDate))) = 1, "0" & CStr(Second(New_TDate)), CStr(Second(New_TDate)))
    PropertyChanged "TDate"
End Property


Кол-во записей в rs - 4 у всех fields(1) = "24.06.2007 11:30:25".
Вроде все проверил.. :? Не знаю где ошибка.. :(
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 25.06.2007 (Пн) 15:14

А ты там нигде DataField/DataSource не проставляешь? Такая ошибка возникает, когда присваивается значение контролу, связанному с полем рекордета, который находится в BOF/EOF.
Лучший способ понять что-то самому — объяснить это другому.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 25.06.2007 (Пн) 15:36

А ты там нигде DataField/DataSource не проставляешь? Такая ошибка возникает, когда присваивается значение контролу, связанному с полем рекордета, который находится в BOF/EOF.


Нет. Там только две процедуры с БД работают (эта и еще одна), обе такого типа:

Код: Выделить всё

sub sub_name()
set db = dao.opendatabase..
set rs = db.opendatabase..
...
rs.close
set rs = nothing
db.close
set db = nothing
end sub


Связанных с БД контролов нет. В моем контроле есть DTPicker(календарь), image и два текст бокса
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 25.06.2007 (Пн) 15:51

Возможно рекордсет таки находится в EOF потому что For i = 1 To rs.RecordCount - безграмотно. Грамотно так:
Код: Выделить всё
While Not rs.EOF
     ...
    i = i + 1
    rs.MoveNext
Wend
Кроме того ты передаешь rs.Fields(1) в функцию, которая принимает Variant. Из-за этого передается не значение свойства по умолчанию - Value, - а объект Field.
Лучший способ понять что-то самому — объяснить это другому.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 25.06.2007 (Пн) 16:00

Antonariy спасибо!
Заработало. :)
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман


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

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

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

    TopList