Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Recordset.MoveNext и Recordset.EOF непонятное мне поведение
|
|||
|---|---|---|---|
|
#18+
Доброго дня, уважаемые форумчане, Помогите плиз разобратся с проблемкой. Есть небольшой цикл, в котором пробегаясь по рекордсету, программа сравнивает дату и время текущей записи и дату и время следующей записи. Если разница больше пяти минут, делаются нужные действия. Для получения даты из следующей записи внутри цикла я перехожу на следующую запись, беру значение даты и возвращаюсь на одну запись назад. Если текущая запись последняя, и EOF возвращает тру - то переменной даты следующей записи присваивается значение даты текущей записи. Но на последней записи программа выдает ошибку. То есть rst.EOF выдает постоянно false. Хотя как я понимаю, должен бы возвратить true. вот код цикла. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Просветите, что не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2020, 14:58 |
|
||
|
Recordset.MoveNext и Recordset.EOF непонятное мне поведение
|
|||
|---|---|---|---|
|
#18+
AM_ufu, Код: vbnet 1. 2. 3. Ещё бы не было проблемы.. EOF это не последняя запись, а запись которая идёт после последней. То есть пустая служебная строка , которая предназначена для заполнения данными. Если ее пытаться вывести ,то выпадет ошибка. Смотрите вкратце как устроен набор данных: BOF Первая запись Вторая запись Запись N Последняя запись EOF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2020, 15:17 |
|
||
|
Recordset.MoveNext и Recordset.EOF непонятное мне поведение
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов AM_ufu, Код: vbnet 1. 2. 3. Ещё бы не было проблемы.. EOF это не последняя запись, а запись которая идёт после последней. То есть пустая служебная строка , которая предназначена для заполнения данными. Если ее пытаться вывести ,то выпадет ошибка. Смотрите вкратце как устроен набор данных: BOF Первая запись Вторая запись Запись N Последняя запись EOF Как тогда проверить, есть ли ещё записи после текущей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2020, 15:32 |
|
||
|
Recordset.MoveNext и Recordset.EOF непонятное мне поведение
|
|||
|---|---|---|---|
|
#18+
Я к тому, что если после последней записи есть "техническая" запись EOF то я должен бы переместится на неё и получить значение Истина на EOF. Но я не получаю его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2020, 15:45 |
|
||
|
Recordset.MoveNext и Recordset.EOF непонятное мне поведение
|
|||
|---|---|---|---|
|
#18+
AM_ufu Есть небольшой цикл, в котором пробегаясь по рекордсету, программа сравнивает дату и время текущей записи и дату и время следующей записи. Если разница больше пяти минут, делаются нужные действия. Записи то хоть в наборе отсортированы по времени? А то каша будет еще та... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2020, 15:48 |
|
||
|
Recordset.MoveNext и Recordset.EOF непонятное мне поведение
|
|||
|---|---|---|---|
|
#18+
Схематично: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2020, 15:50 |
|
||
|
Recordset.MoveNext и Recordset.EOF непонятное мне поведение
|
|||
|---|---|---|---|
|
#18+
AM_ufu, для этой задачи удобнее методом GetRows выгрузить данные в двумерный массив, а там в цикле сравнивать значения текущего и предыдущего элементов. Код: vbnet 1. 2. 3. 4. 5. 6. Выделенный цветом 0, это индекс первого поля в коллекции полей. Если DateInf не первое - поменяйте значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2020, 16:12 |
|
||
|
Recordset.MoveNext и Recordset.EOF непонятное мне поведение
|
|||
|---|---|---|---|
|
#18+
AM_ufu Я к тому, что если после последней записи есть "техническая" запись EOF то я должен бы переместится на неё и получить значение то ты должен просто выйти из процедуры... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. тоже схематично... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2020, 16:29 |
|
||
|
Recordset.MoveNext и Recordset.EOF непонятное мне поведение
|
|||
|---|---|---|---|
|
#18+
Спасибо, всем кто откликнулся. Я переписал немного цикл и всё заработало. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2020, 18:32 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=39913751&tid=1610289]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
5ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 291ms |

| 0 / 0 |
