powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Определение возраста
25 сообщений из 187, страница 2 из 8
Определение возраста
    #36134538
pruha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я когда-то написал и всегда использовал такую функцию

function years(mdr)
if type('mdr')!='D'.and.type('mdr')!='T'
return 1
endif
local i
*set step on
i=0
i=year(date())-year(mdr)
if month(mdr)>month(date()).or.(day(mdr)>day(date()) .AND. month(mdr)=>month(date()))
i=i-1
endif
return i
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Определение возраста
    #38019660
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Евгений1111, смотрю ваш код для определения возраста по даже рождения, как я понял возраст вычисляется от системной даты, а как сделать так чтобы вместо системной даты можно было использовать дату из таблицы и результат определять просто как целое число, а не как в вашем коде
...
Рейтинг: 0 / 0
Определение возраста
    #38019675
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991 как сделать так чтобы вместо системной даты можно было использовать дату из таблицы
замени date() на свою переменную или поле с нужной датой.
...
Рейтинг: 0 / 0
Определение возраста
    #38019680
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991Евгений1111, смотрю ваш код для определения возраста по даже рождения, как я понял возраст вычисляется от системной даты, а как сделать так чтобы вместо системной даты можно было использовать дату из таблицы и результат определять просто как целое число, а не как в вашем коде

"а как сделать так чтобы вместо системной даты можно было использовать дату из таблицы"
Неужели тут может быть несколько вариантов?

"результат определять просто как целое число, а не как в вашем коде"
Из командного окна попробуй посмотреть на результат и вопрос отпадет.
...
Рейтинг: 0 / 0
Определение возраста
    #38019699
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, заменил он пишет невозможно найти такой объект.

lnYears=YEAR(pacient.dr)-year(ldBirthDay)
lnMonth=MONTH(pacient.dr)-MONTH(ldBirthDay)

вот так пишу показывает -40 лет. у меня есть таблица пациентов там у них дата рождения поле dr. Есть другая таблица где есть поле dat.obsl дата обследования. и вот мне нужно найти сколько лет было пациентам на момент обследования
...
Рейтинг: 0 / 0
Определение возраста
    #38019726
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтобы просто как целое число выводил оказалось ерунда ))) в конец кода не посмотрел, а там готовый ответ. А как сделать чтобы для пациентов определять возраст на момент даты обследования
...
Рейтинг: 0 / 0
Определение возраста
    #38019739
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991,

Dima T тебе ж уже ответил
...
Рейтинг: 0 / 0
Определение возраста
    #38019782
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG, Вот смотрите пожалуйста: без всяких дней и месяцев просто возраст определить пишу такой код из выше описанного, убрав все остальное. В поле pacient.dr дата рождения 1975.05.28, дата обследования поле sluch.data_2 равно 2012.09.13. пишу так:

Код: sql
1.
lnYears=YEAR(sluch.date_2)-year(pacient.dr)



вроде результат должен быть 37, а выводится 43. Не понимаю с чем это связано в курсоре pacient много таких пациентов, в курсоре sluch тоже много записей. и когда пишу так чтобы в поел agep курсора pacient вывести возрасты пишет объект pacient Не найден

Код: sql
1.
2.
SELECT pacient
pacient.agep=lnYears
...
Рейтинг: 0 / 0
Определение возраста
    #38019813
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
заметил что в курсоре дата идет так 28.05.1975 если в обеих курсорах дата в таком формате тоже мне кажется правильно должен результат выводится, однако не выводит
...
Рейтинг: 0 / 0
Определение возраста
    #38019822
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991IgorNG, Вот смотрите пожалуйста: без всяких дней и месяцев просто возраст определить пишу такой код из выше описанного, убрав все остальное. В поле pacient.dr дата рождения 1975.05.28, дата обследования поле sluch.data_2 равно 2012.09.13. пишу так:

Код: sql
1.
lnYears=YEAR(sluch.date_2)-year(pacient.dr)



вроде результат должен быть 37, а выводится 43. Не понимаю с чем это связано в курсоре pacient много таких пациентов, в курсоре sluch тоже много записей. и когда пишу так чтобы в поел agep курсора pacient вывести возрасты пишет объект pacient Не найден

Код: sql
1.
2.
SELECT pacient
pacient.agep=lnYears [color=red]&& Это ты пытаешься в таблицу записать? REPLACE pacient.agep WITH lnYears или INSERT - я не знаю что у тебя там должно бытть.[/color]



Из командного окна попробуй так:
d1 = {^1975.05.28}
d2 = {^2012.09.13}
?YEAR(d2) - YEAR(d1)
Ну и нужно проверить количество месяцев, а то будет прибавлять лишний год, если ДР еще не наступил
...
Рейтинг: 0 / 0
Определение возраста
    #38019832
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG, если в таком формате то верно выводит, а в курсоре у меня дата так идет 28.05.1975 можно сделать чтобы дата была в формате 20.05.1975 или как поступить тут:

lnYears=YEAR(sluch.date_2)-year(pacient.dr)
...
Рейтинг: 0 / 0
Определение возраста
    #38019839
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понял почему 43 выводится и он правильно выводит 43 это оказывается возраст последнего человека она вычисляет. А как для всех пациентов вычислить?
...
Рейтинг: 0 / 0
Определение возраста
    #38019857
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991,

SCAN
...
ENDSCAN

или SELECT, но нужно связать две таблицы
...
Рейтинг: 0 / 0
Определение возраста
    #38019863
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lnYears хранит одно число и видимо он в конец его прописывает к последнему человеку. попробовал такой вариант тоже для последнего только вычисляет:
Код: sql
1.
REPLACE pacient.agep WITH year(usl.date_in)-year(pacient.dr)


Можно сделать чтобы вычислял возраст для первого например и сразу записывал в поле pacient.agep?
...
Рейтинг: 0 / 0
Определение возраста
    #38019868
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Scan помогло вроде. Сейчас проверю правильно ли обновил записи в курсоре для уверенности
...
Рейтинг: 0 / 0
Определение возраста
    #38019870
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991lnYears хранит одно число и видимо он в конец его прописывает к последнему человеку. попробовал такой вариант тоже для последнего только вычисляет:
Код: sql
1.
REPLACE pacient.agep WITH year(usl.date_in)-year(pacient.dr)


Можно сделать чтобы вычислял возраст для первого например и сразу записывал в поле pacient.agep?

Чем связаны таблицы usl и pacient
...
Рейтинг: 0 / 0
Определение возраста
    #38019917
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG, можно связать по полям npolis и spolis, я проверил пару записей вроде правильно возраст определил для пациентов. Вы думаете логически неправильно вычисляет возраст?
...
Рейтинг: 0 / 0
Определение возраста
    #38019919
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот код который вычисляет возраст для всех пациентов:

Код: sql
1.
2.
3.
4.
SCAN
REPLACE pacient.agep WITH year(usl.date_in)-year(pacient.dr)
LOOP
ENDSCAN
...
Рейтинг: 0 / 0
Определение возраста
    #38019938
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991,

Не думаю.
Во-первых зачем LOOP
Во вторых SCAN...ENDSCAN работает по одной выбранной таблице. Поэтому, данные из второй таблицы (pacient) будут браться из одной и той же записи.
...
Рейтинг: 0 / 0
Определение возраста
    #38019947
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG, Loop чтобы передать управление обратно Scan. Ну не знаю вроде как правильно вычисляет. Если есть более правильный вариант напиши.
...
Рейтинг: 0 / 0
Определение возраста
    #38019958
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991вот код который вычисляет возраст для всех пациентов:

Код: sql
1.
2.
3.
4.
SCAN
REPLACE pacient.agep WITH year(usl.date_in)-year(pacient.dr)
LOOP
ENDSCAN



Не может этот код правильно вычислять возраст ВСЕХ пациентов, поскольку SCAN делаешь по таблице pacient и при этом из таблицы USL берешь ОДНО И ТО ЖЕ ЗНАЧЕНИЕ. Если только таблицы у тебя не связаны SET RELATION
...
Рейтинг: 0 / 0
Определение возраста
    #38019974
P-232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: xml
1.
F1

не пробовал?
...
Рейтинг: 0 / 0
Определение возраста
    #38019991
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P-232
Код: xml
1.
F1

не пробовал?

Судя по всему - нет. Там букв много :)
...
Рейтинг: 0 / 0
Определение возраста
    #38020017
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG, таблицы никак не связываю.. это курсоры полученные из xml файла. если так оставить тоже наверное ошибки нету потому что в курсоре usl поле data_in вернее год будет всегда одинаковым. помогите разобрать логику другой задачи, вернее это часть этой же задачи. есть таблица Hediag там есть основные поля age, compr и code - это код МКБ. Есть вычисленные возрасты пациентов в поле pacient.age. В курсоре sluch есть три поля ds0,ds1,ds2 это коды МКБ. и в курсоре usl есть поле ds тоже КОД МБК нужно проверить соответствие кода МБК для sluch - случай и для usl - услуга возрасту пациента.

поле age в hediag содержат такие значения 14 может 19 и т.д. а поле compr такие ">=", "<", ">". Для каждого кода МКБ в Hediag поля age и compr имеют свои значения. Не могу понять как проверять соответствие кода МКБ в sluch и usl для возраста.
...
Рейтинг: 0 / 0
Определение возраста
    #38020027
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проверяю два условия, а потом тормозит мозг ((

Код: sql
1.
2.
IF hediag.compr='>='
   IF pacient.agep>=hediag.age
...
Рейтинг: 0 / 0
25 сообщений из 187, страница 2 из 8
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Определение возраста
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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