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

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

Вот код

Код: 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
Вопрос по EOF
    #37485179
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В коде не хватает закрывающего Wend.
А по алгоритму: у тебя может быть несколько записей с одинаковым кодом, что нужен ещё один цикл по тем-же строкам?

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

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


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

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

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



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

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


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