Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как останвить выполнение процедуры из функции, используемой в этой процедуре / 25 сообщений из 31, страница 1 из 2
03.11.2004, 23:34:01
    #32767670
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub aa()
call Yo(param)
end sub

function Yo(param as integer)
if param =  1  then
lalala
else
ЗАВЕРШЕНИЕ ВЫПОЛНЕНИЯ aa()
end if
end function
Как такое сделать?
...
Рейтинг: 0 / 0
03.11.2004, 23:56:27
    #32767677
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
а как обычно не подходит?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub aa()
if Yo(param)=false then 
exit sub
end if
end sub

function Yo(param as integer) as boolean
if param =  1  then
lalala
Yo=true
else
Yo=false
end if
end function
...
Рейтинг: 0 / 0
04.11.2004, 00:03:04
    #32767683
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
>а как обычно не подходит?
нет :)
Вот реальная ситуация (вкратце):
По нажатии на кнопку вызывается функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function aa()
SQLStr = "INSERT INTO __TEMP_ОПЕРАТОР_Характеристики_заказа ( operid_2, tbl_id, [Реф №], " _
        & "Наименование, Дата1, Дата2, валюта, [КА+]) " _
        & "SELECT operid, 'bill_arrival', [Реф №], " _ 
        & "'Заявка подписана', Дата1, дата2, валюта, " _
        & "iif(валюта <> '" & [Forms]![заказ]!cur & "', round(эквивалент1*yeratedate(yetype(1), " _
        & "дата1)/yeratedate('" & [Forms]![заказ]!cur & "',дата1), 2), round(приход,2)) " _
        & "FROM __TEMP_Характеристики_заказа_bill_arrival " _
        & "WHERE ((([operid_3])=" & [Forms]![заказ]![OperID] & ") and расход is null)"
CurrentDb.Execute SQLStr
end function

Здесь есть функция yeratedate, вычисляющая курс валюты на определенную дату. Если курс не введен, то необходимо остановить выполнение функции aa()
...
Рейтинг: 0 / 0
04.11.2004, 00:08:39
    #32767688
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
не понял, что мешает проверить наличие введенного курса перед запуском функции. Я всегда проверяю :)
...
Рейтинг: 0 / 0
04.11.2004, 00:25:04
    #32767694
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Alexander Gне понял, что мешает проверить наличие введенного курса перед запуском функции. Я всегда проверяю :)
Grrrrrrrrrrrrrrrrrrrr :)
Попробую ограничиться ответом "Так надо" :)
Хотя ладно - немного поясню.
Обрабатывается большой массив данных, где участвует масса дат с разными курсами валют соответственно, и предварительная проверка снизит скорость работы программы. Да и работа это лишняя :)
...
Рейтинг: 0 / 0
04.11.2004, 00:25:37
    #32767695
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
В общем это... Меня интересует ответ по существу вопроса :)
...
Рейтинг: 0 / 0
04.11.2004, 00:47:17
    #32767700
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Vsevolod V Да и работа это лишняя :)А-а-а.... :)
Vsevolod V
В общем это... Меня интересует ответ по существу вопроса :)без обработки возвращаемого функцией значения- никак :)
...
Рейтинг: 0 / 0
04.11.2004, 08:18:57
    #32767826
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Можно в функции вызвать ошибку (например деление на 0)
а в процедуре ее обработать
правда на VB никогда не делал тока на C#
там для этого есть удобные инструменты обработки исключений.
...
Рейтинг: 0 / 0
04.11.2004, 09:13:24
    #32767875
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
можно в дочернюю функцию передать байреф параметр и его проверять из материнской

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub aa()
dim er as integer
call Yo(param , er )
if er <>  0  then exit sub



end sub

function Yo(param as integer , byref er as integer)
if param =  1  then
lalala
else
er =  1 
end if
end function
...
Рейтинг: 0 / 0
04.11.2004, 09:33:24
    #32767914
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
По-моему это не будет работать, т.к. функция вызывается из строки SQL
...
Рейтинг: 0 / 0
04.11.2004, 09:42:51
    #32767935
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
2 Vsevolod V
Сделать запрос, который джойнит нужную нам табличку с датами с табличкой с курсами по полю с датами - сделать группировку в этом запросе и посмотреть количество записей - если оно равно количеству дат в искомой табличке - то выполнять запрос.
Данная проверка будет достаточно бысто работать.
...
Рейтинг: 0 / 0
04.11.2004, 09:44:31
    #32767940
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Vsevolod VПо-моему это не будет работать, т.к. функция вызывается из строки SQL
т.е. вы хотите остановить выполнение запроса в зависимости от результата работы функции?

тогда впросы:
1. функция возвращает одинаковое значение для всего надора записей?
Если да - то вычисляем функцию до выполнения запроса, а в запрос уже значение вставляем.
Если нет:
2. Что делать, когда (например) из 3 вариантов функция 2 раза отработала корректно и 1 раз не корректно:
- остановить весь запрос?
- пропустить только не корректную запись?

ИМХО - надо менять сам подход к решению задачи (алгоритм то есть), а не пытаться скрестить удава с носорогом.
...
Рейтинг: 0 / 0
04.11.2004, 09:47:29
    #32767951
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
2 paparome
Функция вычисляет значение по дате в исходной табличке - т.е. для всех дат разные значения.
yeratedate(yetype(1), дата1) - это из текста запроса. Так что вариант с подстановкой значения в запрос не катит:)
...
Рейтинг: 0 / 0
04.11.2004, 11:41:16
    #32768310
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
т.е. вы хотите остановить выполнение запроса в зависимости от результата работы функции?
нет-нет. Мне нужно остановить выполнение всей функции.
---
Идея такая: пользователь нажимает кнопку "Проводки" - происходит вычисление проводок - если какой-либо курс не введен, то форма "Проводки" не открывается, а выдается сообщение, что нужно ввести такой-то курс на такую-то дату
Организовано так: на Click весит функция, составляющая проводки. В этойфункции используется YerateDate(CurrencyType, DateType), где и проверяется наличие курса на определенную дату. Если курса нет, то функция выдает соответствующее сообщение. Проблема в том, что если не введено несколько курсов (а их бывает много), то выдается серия сообщений, после чего открывается форма с никчемными данными
...
Рейтинг: 0 / 0
04.11.2004, 11:45:39
    #32768323
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
может сначала выполнить проверку данных а потом запускать отчет или что еще там ?
...
Рейтинг: 0 / 0
04.11.2004, 11:49:46
    #32768346
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Vsevolod V Если курса нет, то функция выдает соответствующее сообщение. Проблема в том, что если не введено несколько курсов (а их бывает много), то выдается серия сообщений, после чего открывается форма с никчемными данными

Т.е. задача сводится к тому, чтобы предварительно проверить все ли курсы валют есть? Тогда наилучший вариант, имхо, сделать предварительно запрос который это проверит, а затем уже выполнять основной по результатам проверки... или не выполнять и информировать суммарно где чего не хватает.
...
Рейтинг: 0 / 0
04.11.2004, 12:28:24
    #32768464
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Ясно, спасибо
...
Рейтинг: 0 / 0
04.11.2004, 12:31:37
    #32768472
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
2 Vsevolod V
Ура, то что я сказал больше 2-х часов назад наконец-то осмыслено:)
...
Рейтинг: 0 / 0
04.11.2004, 13:27:10
    #32768650
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Когда ты уже меня слушать начнеш? Не дело над больными глумиться, ой не дело...
...
Рейтинг: 0 / 0
04.11.2004, 13:35:31
    #32768674
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Hummer2 Vsevolod V
Ура, то что я сказал больше 2-х часов назад наконец-то осмыслено:)

Иногда хор звучит убедительнее солиста. "А карфаген должен быть разрушен!!!" (с) Пример работы солиста, когда его не слышат с первого раза...
...
Рейтинг: 0 / 0
04.11.2004, 14:04:43
    #32768775
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Hummer2 Vsevolod V
Ура, то что я сказал больше 2-х часов назад наконец-то осмыслено:)
Если посмотреть выше, я попытался это сказать 12 с лишним часов назад в 4-м посте топика. Сколько же за это время клавиш потоптали....
...
Рейтинг: 0 / 0
04.11.2004, 14:46:34
    #32768910
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
2 Alexander G
Ага - был не прав:)

2 Совесть Хаммера
Зато у меня ластиков мульон:)
...
Рейтинг: 0 / 0
04.11.2004, 17:20:00
    #32769322
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
Объясняю ситуацию спешиал фо Hummer и Ко
Был задан конкретный вопрос - вопрос остался без ответа - Ясно, спасибо.

Решение нашел попроще: поместил на форме с кнопкой галку, галка ставится, если курса нет. Вот и все :)
...
Рейтинг: 0 / 0
04.11.2004, 17:27:05
    #32769334
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
2 Vsevolod V
на мой взгляд, вопрос ты задал плохой.

Ответ от Hummer-a и Ко получил почти полный
По существу им и воспользовался.

Выражая благодарность таким специальным образом, можно вообще "без советов" остаться...




(с выражением лица)
...
Рейтинг: 0 / 0
04.11.2004, 17:28:09
    #32769338
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как останвить выполнение процедуры из функции, используемой в этой процедуре
2 Vsevolod V
Блин - ответ выполнить запрос с проверкой - это уже не конкретный ответ?:)
Тест запроса надо написать нашему умному парню?:)

А если пользователь галку забудет поставить?:)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как останвить выполнение процедуры из функции, используемой в этой процедуре / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]