|
|
|
FindNext, обработка исключений
|
|||
|---|---|---|---|
|
#18+
C++Builder + ADO + mdb. Нужно в обьекте ADOTable организовать поиск типа "Найти далее" с последовательным переходом по записям (фильтрация не подойдет). Для поиска записей использую FindNext c соответствующим фильтром. В принципе работает, но есть проблема. Если курсор попадает на последнюю удовлетворяющую запись, то следующий FindNext вызывает исключительную ситуацию EOleException с сообщением Eof или Bof имеет значение true. Пытаюсь ее стандартно обработать, типа try { ADOTable->FindNext(); } catch (...) { ShowMessage("Исключение"); } но что-то не получается, все-равно вызывается исключение. Подскажите пожалуйста в чем ошибка или подскажите другой вариант решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 16:59 |
|
||
|
FindNext, обработка исключений
|
|||
|---|---|---|---|
|
#18+
Ошибка во время отладки в IDE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 17:30 |
|
||
|
FindNext, обработка исключений
|
|||
|---|---|---|---|
|
#18+
Ошибка во время выполнения. Т.е. запускаю программу в IDE, выполняю поиск - переходит по записям, но когда становиться на последнюю удовлетворяющую запись в таблице и нажимаю Найти далее - вылетает ошибка. Может это я туплю где-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 18:45 |
|
||
|
FindNext, обработка исключений
|
|||
|---|---|---|---|
|
#18+
А если без отладчика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 18:47 |
|
||
|
FindNext, обработка исключений
|
|||
|---|---|---|---|
|
#18+
Вообще процесс навигации по записям задуман без обработки исключений. А справка не поможет? FindFirst, FindNext, FindClose Example The following example uses an edit control, a button, a string grid, and seven check boxes. The check boxes correspond to the seven possible file attributes. When the button is clicked, the path specified in the edit control is searched for files matching the checked file attributes. The names and sizes of the matching files are inserted into the string grid. void __fastcall TForm1::Button1Click(TObject *Sender) Код: 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. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 23:11 |
|
||
|
FindNext, обработка исключений
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы, действительно если запускать без отладчика - исключение ловится. Но все оказалось не так просто. Идея была такая - на последней записи обработать исключение и запустить FindFirst() и так по кругу. Но оказалось,во первых, что если в очередном шаге поменять условие фильтра и запустить FindNext, то он продолжает искать записи по старому фильтру и чтобы действительно поменять условие нужно запустить сначала FindFirst с новым фильтром. Во-вторых, метод FindFirst, если не находит запись - возвращает false и, на сколько я понял, устанавливает значение Eof в true и при повторном вызове вызывает исключение. Вобщем удалось пока решить куском кода, который и выставляю для критики. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 14:09 |
|
||
|
FindNext, обработка исключений
|
|||
|---|---|---|---|
|
#18+
а зачем здесь try/catch ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 14:39 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34623427&tid=2028580]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 433ms |

| 0 / 0 |
