|
|
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 23:34:01 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
а как обычно не подходит? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 23:56:27 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
>а как обычно не подходит? нет :) Вот реальная ситуация (вкратце): По нажатии на кнопку вызывается функция Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Здесь есть функция yeratedate, вычисляющая курс валюты на определенную дату. Если курс не введен, то необходимо остановить выполнение функции aa() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 00:03:04 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
не понял, что мешает проверить наличие введенного курса перед запуском функции. Я всегда проверяю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 00:08:39 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Alexander Gне понял, что мешает проверить наличие введенного курса перед запуском функции. Я всегда проверяю :) Grrrrrrrrrrrrrrrrrrrr :) Попробую ограничиться ответом "Так надо" :) Хотя ладно - немного поясню. Обрабатывается большой массив данных, где участвует масса дат с разными курсами валют соответственно, и предварительная проверка снизит скорость работы программы. Да и работа это лишняя :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 00:25:04 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
В общем это... Меня интересует ответ по существу вопроса :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 00:25:37 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Vsevolod V Да и работа это лишняя :)А-а-а.... :) Vsevolod V В общем это... Меня интересует ответ по существу вопроса :)без обработки возвращаемого функцией значения- никак :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 00:47:17 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Можно в функции вызвать ошибку (например деление на 0) а в процедуре ее обработать правда на VB никогда не делал тока на C# там для этого есть удобные инструменты обработки исключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 08:18:57 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
можно в дочернюю функцию передать байреф параметр и его проверять из материнской Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 09:13:24 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
По-моему это не будет работать, т.к. функция вызывается из строки SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 09:33:24 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
2 Vsevolod V Сделать запрос, который джойнит нужную нам табличку с датами с табличкой с курсами по полю с датами - сделать группировку в этом запросе и посмотреть количество записей - если оно равно количеству дат в искомой табличке - то выполнять запрос. Данная проверка будет достаточно бысто работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 09:42:51 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Vsevolod VПо-моему это не будет работать, т.к. функция вызывается из строки SQL т.е. вы хотите остановить выполнение запроса в зависимости от результата работы функции? тогда впросы: 1. функция возвращает одинаковое значение для всего надора записей? Если да - то вычисляем функцию до выполнения запроса, а в запрос уже значение вставляем. Если нет: 2. Что делать, когда (например) из 3 вариантов функция 2 раза отработала корректно и 1 раз не корректно: - остановить весь запрос? - пропустить только не корректную запись? ИМХО - надо менять сам подход к решению задачи (алгоритм то есть), а не пытаться скрестить удава с носорогом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 09:44:31 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
2 paparome Функция вычисляет значение по дате в исходной табличке - т.е. для всех дат разные значения. yeratedate(yetype(1), дата1) - это из текста запроса. Так что вариант с подстановкой значения в запрос не катит:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 09:47:29 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
т.е. вы хотите остановить выполнение запроса в зависимости от результата работы функции? нет-нет. Мне нужно остановить выполнение всей функции. --- Идея такая: пользователь нажимает кнопку "Проводки" - происходит вычисление проводок - если какой-либо курс не введен, то форма "Проводки" не открывается, а выдается сообщение, что нужно ввести такой-то курс на такую-то дату Организовано так: на Click весит функция, составляющая проводки. В этойфункции используется YerateDate(CurrencyType, DateType), где и проверяется наличие курса на определенную дату. Если курса нет, то функция выдает соответствующее сообщение. Проблема в том, что если не введено несколько курсов (а их бывает много), то выдается серия сообщений, после чего открывается форма с никчемными данными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:41:16 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
может сначала выполнить проверку данных а потом запускать отчет или что еще там ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:45:39 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Vsevolod V Если курса нет, то функция выдает соответствующее сообщение. Проблема в том, что если не введено несколько курсов (а их бывает много), то выдается серия сообщений, после чего открывается форма с никчемными данными Т.е. задача сводится к тому, чтобы предварительно проверить все ли курсы валют есть? Тогда наилучший вариант, имхо, сделать предварительно запрос который это проверит, а затем уже выполнять основной по результатам проверки... или не выполнять и информировать суммарно где чего не хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 11:49:46 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Ясно, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 12:28:24 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
2 Vsevolod V Ура, то что я сказал больше 2-х часов назад наконец-то осмыслено:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 12:31:37 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Когда ты уже меня слушать начнеш? Не дело над больными глумиться, ой не дело... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 13:27:10 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Hummer2 Vsevolod V Ура, то что я сказал больше 2-х часов назад наконец-то осмыслено:) Иногда хор звучит убедительнее солиста. "А карфаген должен быть разрушен!!!" (с) Пример работы солиста, когда его не слышат с первого раза... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 13:35:31 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Hummer2 Vsevolod V Ура, то что я сказал больше 2-х часов назад наконец-то осмыслено:) Если посмотреть выше, я попытался это сказать 12 с лишним часов назад в 4-м посте топика. Сколько же за это время клавиш потоптали.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 14:04:43 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
2 Alexander G Ага - был не прав:) 2 Совесть Хаммера Зато у меня ластиков мульон:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 14:46:34 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
Объясняю ситуацию спешиал фо Hummer и Ко Был задан конкретный вопрос - вопрос остался без ответа - Ясно, спасибо. Решение нашел попроще: поместил на форме с кнопкой галку, галка ставится, если курса нет. Вот и все :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 17:20:00 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
2 Vsevolod V на мой взгляд, вопрос ты задал плохой. Ответ от Hummer-a и Ко получил почти полный По существу им и воспользовался. Выражая благодарность таким специальным образом, можно вообще "без советов" остаться... (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 17:27:05 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#18+
2 Vsevolod V Блин - ответ выполнить запрос с проверкой - это уже не конкретный ответ?:) Тест запроса надо написать нашему умному парню?:) А если пользователь галку забудет поставить?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2004, 17:28:09 |
|
||
|
Как останвить выполнение процедуры из функции, используемой в этой процедуре
|
|||
|---|---|---|---|
|
#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?all=1&fid=45&tid=1670257]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 428ms |

| 0 / 0 |
