|
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=39913705&tid=1610289]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 161ms |
0 / 0 |