powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как останвить выполнение процедуры из функции, используемой в этой процедуре
25 сообщений из 31, страница 1 из 2
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #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
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #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
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #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
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #32767688
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял, что мешает проверить наличие введенного курса перед запуском функции. Я всегда проверяю :)
...
Рейтинг: 0 / 0
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #32767694
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Gне понял, что мешает проверить наличие введенного курса перед запуском функции. Я всегда проверяю :)
Grrrrrrrrrrrrrrrrrrrr :)
Попробую ограничиться ответом "Так надо" :)
Хотя ладно - немного поясню.
Обрабатывается большой массив данных, где участвует масса дат с разными курсами валют соответственно, и предварительная проверка снизит скорость работы программы. Да и работа это лишняя :)
...
Рейтинг: 0 / 0
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #32767695
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем это... Меня интересует ответ по существу вопроса :)
...
Рейтинг: 0 / 0
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #32767700
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vsevolod V Да и работа это лишняя :)А-а-а.... :)
Vsevolod V
В общем это... Меня интересует ответ по существу вопроса :)без обработки возвращаемого функцией значения- никак :)
...
Рейтинг: 0 / 0
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #32767826
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно в функции вызвать ошибку (например деление на 0)
а в процедуре ее обработать
правда на VB никогда не делал тока на C#
там для этого есть удобные инструменты обработки исключений.
...
Рейтинг: 0 / 0
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #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
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #32767914
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему это не будет работать, т.к. функция вызывается из строки SQL
...
Рейтинг: 0 / 0
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #32767935
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Vsevolod V
Сделать запрос, который джойнит нужную нам табличку с датами с табличкой с курсами по полю с датами - сделать группировку в этом запросе и посмотреть количество записей - если оно равно количеству дат в искомой табличке - то выполнять запрос.
Данная проверка будет достаточно бысто работать.
...
Рейтинг: 0 / 0
Как останвить выполнение процедуры из функции, используемой в этой процедуре
    #32767940
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vsevolod VПо-моему это не будет работать, т.к. функция вызывается из строки SQL
т.е. вы хотите остановить выполнение запроса в зависимости от результата работы функции?

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

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

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

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

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

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

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

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




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

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


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