powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Функция возвращает 0
6 сообщений из 6, страница 1 из 1
Функция возвращает 0
    #33926676
Vaso116
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема такая я создал файл с функциями (вычисление возраста) пишу мол
SET PROCEDURE имя
всё работает, но если я хочу INSERT INTO результат в таблицу то Return неизменно возвращает 0 (в дебуере вроде считает и результат не 0)
...
Рейтинг: 0 / 0
Функция возвращает 0
    #33926679
ДП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
телепатов вызывали?
...
Рейтинг: 0 / 0
Функция возвращает 0
    #33926815
Vaso116
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сама функция :
FUNCTION vozrastPROC (datarojd)
yearR=YEAR(datarojd)
monthR=MONTH(datarojd)
dayR=DAY(datarojd)
yearS=YEAR(date())
monthS=MONTH(date())
dayS=DAY(date())
vozrast=yearS-YearR
IF monthS<monthR
vozrast=vozrast-1
ENDIF
IF (monthS=monthR)and(dayS<dayR)
vozrast=vozrast-1
ENDIF
RETURN vozrast
ENDFUNC

это чудо живёт в d:\fox\progs\function.prg


если по нажатию на кнопку писать:
SET PROCEDURE TO "d:\fox\progs\function.prg"
MESSAGEBOX(vozrastPROC1(thisform.Datecnt1.Value)) - работает

а если вот так, то нет

SET PROCEDURE TO "d:\fox\progs\function.prg"
MESSAGEBOX(vozrastPROC1(thisform.Datecnt1.Value))
INSERT INTO fio (vozrast) VALUES (vozrastPROC(thisform.Datecnt1.Value))

причём перестаёт работать и

SET PROCEDURE TO "d:\fox\progs\function.prg"
MESSAGEBOX(vozrastPROC1(thisform.Datecnt1.Value))

ЧТО ДЕЛАТЬ???
...
Рейтинг: 0 / 0
Функция возвращает 0
    #33926869
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внимательно почитать хелп про область видимости переменных в общем и объектных ссылок типа this, thisform и т.д. в частности.
...
Рейтинг: 0 / 0
Функция возвращает 0
    #33926935
Vaso116
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в функцию параметр предаётся, результат не возвращается
...
Рейтинг: 0 / 0
Функция возвращает 0
    #33927345
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот так:

Код: plaintext
1.
2.
3.
4.
SET PROCEDURE TO "d:\fox\progs\function.prg"
LOCAL lnValue
lnValue = thisform.Datecnt1.Value
MESSAGEBOX(vozrastPROC1(m.lnValue))

Кроме того, обязательно объяви область видимости всех переменных внутри твоей функции. LOCAL или PRIVATE.

Код: plaintext
1.
2.
3.
4.
5.
6.
FUNCTION vozrastPROC (datarojd)
LOCAL yearR, monthR, dayR
LOCAL yearS, monthS, dayS
LOCAL vozrast
...
ENDFUNC

PS: Если это расчет количества полных лет, то проще получить это так:

Код: plaintext
?INT((Date() - m.datarojd)/ 365 . 25 )
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Функция возвращает 0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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