Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по EOF / 4 сообщений из 4, страница 1 из 1
17.10.2011, 14:46
    #37485158
Alex_men
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по EOF
Добрый день на самом деле не первый цикл уже так оформляю, но сейчас просто клина какого то словил

Задача простая есть набор данных рекордсет, его надо залить в отчет ворда.
Первый цикл отмеряет не кончился ли у нас рекордсет, второй проверяет закончили мы формировать строку или нет (ну и соответственно если строка не доформировалась а рекордсет кончился то тоже надо выходить. ну так задумано.

Вот код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 While Not rst.EOF
                oDoc.Tables( 1 ).Rows.Add
                lcl_Code = rst!code
                j = j +  1 
                If rst!sum =  0  Then
                        Tbl.Cell(j,  1 ).range.Text = rst!name
                    Else
                        Tbl.Cell(j,  1 ).range.Text = rst!name & Chr( 13 ) & _
                                            "(" & Format(rst!sum, "#0.00") & ")"
                End If
                
                While (Not rst.EOF) And (rst!code = lcl_Code)
                        Select Case rst!cur_type
                            Case "1"
                                Tbl.Cell(j,  2 ).range.InsertAfter rst!rate
                            Case "2"
                                Tbl.Cell(j,  4 ).range.InsertAfter rst!rate
                            Case "3"
                                Tbl.Cell(j,  3 ).range.InsertAfter rst!rate
                        End Select
                                    
                    rst.MoveNext
                Wend


Однако когда доходим до конца рекордсета. Вместо выхода из внутреннего цикла получаю ошибку "bof или eof имеет значение TRUE"

не пойму где я ошибся.
...
Рейтинг: 0 / 0
17.10.2011, 14:59
    #37485179
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по EOF
В коде не хватает закрывающего Wend.
А по алгоритму: у тебя может быть несколько записей с одинаковым кодом, что нужен ещё один цикл по тем-же строкам?

Я бы клонировал RecordSet и делал-бы внешний цикл по одному, а второй цикл был-бы по клонированному рекордсету с
фильтрацией по коду записи. И не забывать делать MoveFirst для клонированного рекордсета пере каждой новой обработкой.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
17.10.2011, 15:05
    #37485186
Alex_men
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по EOF
Игорь ГорбоносВ коде не хватает закрывающего Wend.


прошу прощения ошибка копипаста

Игорь Горбонос
А по алгоритму: у тебя может быть несколько записей с одинаковым кодом, что нужен ещё один цикл по тем-же строкам?

Я бы клонировал RecordSet и делал-бы внешний цикл по одному, а второй цикл был-бы по клонированному рекордсету с
фильтрацией по коду записи. И не забывать делать MoveFirst для клонированного рекордсета пере каждой новой обработкой.



да при одинаковом коде может быть разный тип.

хм попробую отклонировать.
...
Рейтинг: 0 / 0
17.10.2011, 15:19
    #37485221
Alex_men
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по EOF
Спасибо помогло ! :)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по EOF / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]