|
|
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
2 hummer если сделано правильно - то галка у него вычислимая... (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 17:31:25 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
плин. С утра хотел написать, что порвать ф-ю в вашем случае - это порвать запрос. Запрос для этого должен выполняться ассинхронно. (см хелп), т.е. процесс который долже его стопнуть должен мочь крутиться параллельно ему и вызвать его .Cancel . По крайней мере у запроса дожен быть такой метод. Кроме ODBC запросов что-то ничего такое не вспоминается. поытка трбюков: __ 1. В джет можно переделать ф-ю так, как это делается для подсчета самопальных сумматоров (типа номера строки) - а именно добавить статик переменную и опциональный параметр. Запрос при этом выполняться после ошибки не перестанет, но можно сделать, чтобы после первой ошибки следующие строки не возвращались. (поместив в Where вашу же ф-ю, но с неким значением опционалого параметра, т, чтобы после ошибки она возвращала FALSE), в (или до) открытии отчета можно еще раз вызвать ф-ю, так, чтобы вычислить ее статик переменную. Если она покажет, что в запросе возникала ошибка, отчет можно не открывать. Но оптимально в вашем случае - взять (Select count(*) From ... Left Join ... ON ... = curs.дата Where curs.дата IS NULL) до запроса (или в запросе - что несколько хуже), и не мучаться. _____________ 2. Есть еще возможность вызвать ошибку в Запросе. Но, к сожалению, если в явном виде err.Rase сделать в ф-ии, она не перехватится обработчиком ошибок вызвавшей исполняемый запрос ф-ии а выдаст вам запрос об отладке. Есть трюк - вызвать ошибку в самом запросе. В случае Insert Into это легко - если заставить запрос вставлять данные не того типа, или большего размера: '__TEMP_ОПЕРАТОР (id, MyFun) - целые Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 18:12:58 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Victosha2 Vsevolod V на мой взгляд, вопрос ты задал плохой. Ответ от Hummer-a и Ко получил почти полный По существу им и воспользовался. Выражая благодарность таким специальным образом, можно вообще "без советов" остаться... Hummer2 Vsevolod V Блин - ответ выполнить запрос с проверкой - это уже не конкретный ответ?:) Тест запроса надо написать нашему умному парню?:) А если пользователь галку забудет поставить?:) Господа, вопрос поставлен в названии темы, а его раскрытие в первом мессаге. Дальше идет полет мысли "на отвлеченную тему". И такие мессаги типа "Ура, то что я сказал больше 2-х часов назад наконец-то осмыслено:)" (учитывая, что их несколько) мне совсем не нравятся. Далее. На данный момент решение проблемы выглядит так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2004, 00:07:49 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Отвечая на поставленный изначально вопрос. Так сделать можно, и очень даже просто, если пожертвовать возможностью локальной обработки ошибок в процедурах. Вот работающий (если я правильно понял суть вопроса, конечно) пример: Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 18:48:01 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
function Yo(param as integer) if param = 1 then lalala else 'ЗАВЕРШЕНИЕ ВЫПОЛНЕНИЯ aa() END end if end function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 19:04:18 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Vsevolod V Victosha2 Vsevolod V на мой взгляд, вопрос ты задал плохой. Ответ от Hummer-a и Ко получил почти полный По существу им и воспользовался. Выражая благодарность таким специальным образом, можно вообще "без советов" остаться... Hummer2 Vsevolod V Блин - ответ выполнить запрос с проверкой - это уже не конкретный ответ?:) Тест запроса надо написать нашему умному парню?:) А если пользователь галку забудет поставить?:) Господа, вопрос поставлен в названии темы, а его раскрытие в первом мессаге. Дальше идет полет мысли "на отвлеченную тему". И такие мессаги типа "Ура, то что я сказал больше 2-х часов назад наконец-то осмыслено:)" (учитывая, что их несколько) мне совсем не нравятся. Далее. На данный момент решение проблемы выглядит так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. мда. Я думаю вы изобретаете велосипед. Чем Ваша галочка отличается от Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 20:28:26 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32769727&tid=1670257]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 324ms |

| 0 / 0 |
