|
Определение возраста
|
|||
---|---|---|---|
#18+
Люди помогите плизз недавно начал программировать на VFP есть ли функция определение возраста ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 10:38 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Такой функции нет. В хелпе найдите функции для работы с датами и через них. З.Ы. Само по себе вычисление возраста - задача нетривиальная. З.З.Ы . Как вариант, смотрите по ссылке http://forum.foxclub.ru/read.php?32,177182,321849#msg-321849 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 10:47 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
homik, Да я это уже понял, перерыл все что можно, может у кого есть готовая функция!!! Заранее СПАСИБО!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 11:01 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Евгений1111homik, Да я это уже понял, перерыл все что можно, может у кого есть готовая функция!!! Готовая для кого? Вам же дали ссылку на статью, в которой достаточно ясно расписывается проблема расчета разницы дат. Вы ее прочитали? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 11:24 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
[/quot]Готовая для кого? Вам же дали ссылку на статью, в которой достаточно ясно расписывается проблема расчета разницы дат. Вы ее прочитали?[/quot] да в том то и дело что прочитал и не чего существенного там нет, я и сам могу написать только это куча проверок надо делать, может уже кто то с этим сталкивался и поможет избежать некоторых проблем ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 11:30 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Евгений1111Готовая для кого? Вам же дали ссылку на статью, в которой достаточно ясно расписывается проблема расчета разницы дат. Вы ее прочитали?[/quot] да в том то и дело что прочитал и не чего существенного там нет, я и сам могу написать только это куча проверок надо делать, может уже кто то с этим сталкивался и поможет избежать некоторых проблем[/quot]Да этим сталкивались все, кто хоть каким-то боком связан с зарплатой, ЖКХ и т.д. Но у всех разные правила расчета. И потому каждый пишет для себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 11:33 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
проходящий.Евгений1111Готовая для кого? Вам же дали ссылку на статью, в которой достаточно ясно расписывается проблема расчета разницы дат. Вы ее прочитали? да в том то и дело что прочитал и не чего существенного там нет, я и сам могу написать только это куча проверок надо делать, может уже кто то с этим сталкивался и поможет избежать некоторых проблем[/quot]Да этим сталкивались все, кто хоть каким-то боком связан с зарплатой, ЖКХ и т.д. Но у всех разные правила расчета. И потому каждый пишет для себя.[/quot] да я это понимаю, есть ли у кого готовый код очень хотелось бы посмотреть, просто в фоксе я чайник ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 11:39 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Ну раз хотите без кучи проверок и готовый пример то : ldBirthDay = {^1972-02-01} Age=Date()-ldBirthDay ? Age/365 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 11:57 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Ну или так, более наглядно : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Тут надо более точнее определиться с коэф.-ми 365.2 и 29.7 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 12:17 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
или так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 12:20 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
homik Тут надо более точнее определиться с коэф.-ми 365.2 и 29.7 Коэффициент 365.2 означает, что у вас один високосный год каждые пять лет (включительно). В реальной ситуации, у нас один високосный год на каждые четыре года (включительно). То-есть, коэффициент должен быть 365.25. Ограничение на этот коэффициент, такое: дата должна быть в пределах 01.03.1900 и 28.02.2100. Дело в том, что 1900 и 2100 годы - невисокосные. С месяцами хуже. Коэффициента недостаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 12:27 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
homikили так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
спасибо только вот если месяц будет не 01 а больше сегодняшнего напр. 11 то месяц получается отрицательное и неправильное значение ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 12:32 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
авторНу раз хотите без кучи проверок и готовый пример то : А это для чего я написал ? Напильник в руки и "алга" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 12:46 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
homikавторНу раз хотите без кучи проверок и готовый пример то : А это для чего я написал ? Напильник в руки и "алга" :) спасибо, сейчас сделаю ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 12:55 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Евгений1111homikавторНу раз хотите без кучи проверок и готовый пример то : А это для чего я написал ? Напильник в руки и "алга" :) спасибо, сейчас сделаю вот что получилось ldBirthDay = {^2008-06-29} Age=Date()-ldBirthDay lnFlowYear=Age/365.2 lnYears=INT(lnFlowYear) lnMonth=Floor((lnFlowYear-lnYears)*12) IF lnMonth<0 THEN lnMonth=lnMonth+12 ENDIF lnDay=Ceiling(((lnFlowYear-lnYears)*12-lnMonth)*29.7) ? ? lnFlowYear ? lnYears," лет",lnMonth," Месяцев",lnDay," дней" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 14:22 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Евгений1111 вот что получилось Хренова получилось. Погрешность: 5 дней за 100 лет. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Поправьте константы, как-минимум. 2001200220032004Среднееянварь3131313131февраль2828282928.25март3131313131апрель3030303030май3131313131июнь3030303030июль3131313131август3131313131сентябрь3030303030октябрь3131313131ноябрь3030303030декабрь3131313131дней в году365365365366365.25дней в месяце30.4166666730.4166666730.4166666730.530.4375 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 14:52 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
А лучше всего вот так ldBirthDay = {^2009-02-24} lnYears=YEAR(DATE())-year(ldBirthDay) lnMonth=MONTH(DATE())-MONTH(ldBirthDay) IF lnMonth<0 THEN lnMonth=lnMonth+12 ENDIF y=31 f=28 m=31 a=30 _m=31 i=30 _i=31 _a=31 s=30 o=31 n=30 d=31 p=DAY(ldBirthDay) l=DAY(DATE()) m1=l-p IF m1>=0 then lnDay=m1 ENDIF IF m1<0 then lnMonth=lnMonth-1 DO CASE CASE MONTH(ldBirthDay)=1 lnDay=y-p+l CASE MONTH(ldBirthDay)=2 IF MOD(YEAR(ldBirthDay),4)=0 then lnDay=f+1-p+l ELSE lnDay=f-p+l ENDIf CASE MONTH(ldBirthDay)=3 lnDay=m-p+l CASE MONTH(ldBirthDay)=4 lnDay=a-p+l CASE MONTH(ldBirthDay)=5 lnDay=_m-p+l CASE MONTH(ldBirthDay)=6 lnDay=i-p+l CASE MONTH(ldBirthDay)=7 lnDay=_i-p+l CASE MONTH(ldBirthDay)=8 lnDay=_a-p+l CASE MONTH(ldBirthDay)=9 lnDay=s-p+l CASE MONTH(ldBirthDay)=10 lnDay=o-p+l CASE MONTH(ldBirthDay)=11 lnDay=n-p+l CASE MONTH(ldBirthDay)=12 lnDay=d-p+l ENDCASE endif ? lnYears," лет",lnMonth," месяцев",lnDay," дней" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 15:12 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Ну вот непруха. Не хотел человек проверок. А ему навязывают и навязывают. Непорядок, однако :) :) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 15:16 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
homikНу вот непруха. Не хотел человек проверок. А ему навязывают и навязывают. Непорядок, однако :) :) :) да нет я не то чтобы не хотел проверок, я не хотел их думать и писать, думал может у кого похожее есть- посмотреть чтобы не заморачиваться но все равно пришлось самому всем спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 15:28 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
ой строчку одну пропустил!!!!! ldBirthDay = {^2008-11-23} lnYears=YEAR(DATE())-year(ldBirthDay) lnMonth=MONTH(DATE())-MONTH(ldBirthDay) IF lnMonth<0 THEN lnMonth=lnMonth+12 lnYears=lnYears-1 ENDIF y=31 f=28 m=31 a=30 _m=31 i=30 _i=31 _a=31 s=30 o=31 n=30 d=31 p=DAY(ldBirthDay) l=DAY(DATE()) m1=l-p IF m1>=0 then lnDay=m1 ENDIF IF m1<0 then lnMonth=lnMonth-1 DO CASE CASE MONTH(ldBirthDay)=1 lnDay=y-p+l CASE MONTH(ldBirthDay)=2 IF MOD(YEAR(ldBirthDay),4)=0 then lnDay=f+1-p+l ELSE lnDay=f-p+l ENDIf CASE MONTH(ldBirthDay)=3 lnDay=m-p+l CASE MONTH(ldBirthDay)=4 lnDay=a-p+l CASE MONTH(ldBirthDay)=5 lnDay=_m-p+l CASE MONTH(ldBirthDay)=6 lnDay=i-p+l CASE MONTH(ldBirthDay)=7 lnDay=_i-p+l CASE MONTH(ldBirthDay)=8 lnDay=_a-p+l CASE MONTH(ldBirthDay)=9 lnDay=s-p+l CASE MONTH(ldBirthDay)=10 lnDay=o-p+l CASE MONTH(ldBirthDay)=11 lnDay=n-p+l CASE MONTH(ldBirthDay)=12 lnDay=d-p+l ENDCASE endif ? lnYears," лет",lnMonth," месяцев",lnDay," дней" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 15:33 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Replace Year With Max(Year(Date()) - Year(Nvl(Birthday,{})) - IIF(Month(Nvl(Birthday,{}))*100+Day(Nvl(Birthday,{})) > Month(Date())*100+Day(Date()),1,0),0) For !Empty(Nvl(Birthday,{})) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 16:08 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
George1974Replace Year With Max(Year(Date()) - Year(Nvl(Birthday,{})) - IIF(Month(Nvl(Birthday,{}))*100+Day(Nvl(Birthday,{})) > Month(Date())*100+Day(Date()),1,0),0) For !Empty(Nvl(Birthday,{})) и что это значит, что то я не как не пойму!!!!!!! что то она не работает!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2009, 16:43 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
FUNCTION Year_month LPARAMETER tdDate_inp, tdDate_out LOCAL lcReturn, ldSs, ldDate_flow, lnYear, lnMonth, lcYear, lcMonth lcReturn = '' IF tdDate_inp != CTOD("00.00.0000") AND tdDate_out != CTOD("00.00.0000") ldSs = tdDate_inp ldDate_flow = ldSs lnYear = 0 ldSs = GOMONTH(ldSs,12) DO WHILE( ldSs <= tdDate_out ) ldDate_flow = ldSs ldSs = GOMONTH(ldSs,12) lnYear = lnYear + 1 ENDDO IF lnYear = 0 OR ldSs > tdDate_out ldSs = ldDate_flow lnMonth = 0 DO WHILE( ldSs <= tdDate_out ) ldDate_flow = ldSs ldSs = GOMONTH(ldSs,1) lnMonth = lnMonth + 1 ENDDO ENDIF lnMonth = lnMonth - 1 IF lnYear != 0 IF lnYear >= 10 lcReturn = STR(lnYear,3) ELSE lcReturn = STRTRAN(STR(lnYear,3),'0',' ') ENDIF DO CASE CASE SUBSTR(STR(lnYear,3),2,1) = '1' OR SUBSTR(STR(lnYear,3),3,1) = '0' lcYear = ' лет ' CASE SUBSTR(STR(lnYear,3),3,1) = '1' lcYear = ' год ' CASE SUBSTR(STR(lnYear,3),3,1) = '0' OR ; SUBSTR(STR(lnYear,3),3,1) = '5' OR ; SUBSTR(STR(lnYear,3),3,1) = '6' OR ; SUBSTR(STR(lnYear,3),3,1) = '7' OR ; SUBSTR(STR(lnYear,3),3,1) = '8' OR ; SUBSTR(STR(lnYear,3),3,1) = '9' lcYear = ' лет ' CASE SUBSTR(STR(lnYear,3),3,1) = '2' OR ; SUBSTR(STR(lnYear,3),3,1) = '3' OR ; SUBSTR(STR(lnYear,3),3,1) = '4' lcYear = ' года ' ENDCASE lcReturn = lcReturn + lcYear ENDIF IF lnMonth != 0 IF lnMonth >= 10 lcReturn = lcReturn + STR(lnMonth,2) ELSE lcReturn = lcReturn + STRTRAN(STR(lnMonth,2),'0',' ') ENDIF DO CASE CASE SUBSTR(STR(lnMonth,2),2,1) = '1' lcMonth = ' месяц' CASE SUBSTR(STR(lnMonth,2),2,1) = '0' OR ; SUBSTR(STR(lnMonth,2),2,1) = '5' OR ; SUBSTR(STR(lnMonth,2),2,1) = '6' OR ; SUBSTR(STR(lnMonth,2),2,1) = '7' OR ; SUBSTR(STR(lnMonth,2),2,1) = '8' OR ; SUBSTR(STR(lnMonth,2),2,1) = '9' lcMonth = ' месяцев' CASE SUBSTR(STR(lnMonth,2),2,1) = '2' OR ; SUBSTR(STR(lnMonth,2),2,1) = '3' OR ; SUBSTR(STR(lnMonth,2),2,1) = '4' lcMonth = ' месяца' ENDCASE lcReturn = lcReturn + lcMonth ENDIF ENDIF IF lnYear = 0 AND lnMonth = 0 lcReturn = '( Возраст: меньше месяца )' ELSE lcReturn = '( Возраст: ' + lcReturn + ' )' ENDIF RETURN lcReturn ENDFUNC **************************************** ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2009, 06:11 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Евгений1111George1974Replace Year With Max(Year(Date()) - Year(Nvl(Birthday,{})) - IIF(Month(Nvl(Birthday,{}))*100+Day(Nvl(Birthday,{})) > Month(Date())*100+Day(Date()),1,0),0) For !Empty(Nvl(Birthday,{})) и что это значит, что то я не как не пойму!!!!!!! что то она не работает!!!!! Данный код заполнял в таблице поле Year - количество полных лет (т.к. возраст все таки считают в целых годах а не в годах, месяцах, днях, часах, минутах и секундах) в зависимости от даты рождения - Birthday Попробуй так: Birthday = {^1974-01-30} If !Empty(Nvl(Birthday,{})) Year = Max(Year(Date()) - Year(Nvl(Birthday,{})) - IIF(Month(Nvl(Birthday,{}))*100+Day(Nvl(Birthday,{})) > Month(Date())*100+Day(Date()),1,0),0) EndIf ?Year ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2009, 12:10 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Вот мой вариант :-) Код: plaintext 1.
Код: 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. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2009, 15:52 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
я когда-то написал и всегда использовал такую функцию 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2009, 11:30 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Евгений1111, смотрю ваш код для определения возраста по даже рождения, как я понял возраст вычисляется от системной даты, а как сделать так чтобы вместо системной даты можно было использовать дату из таблицы и результат определять просто как целое число, а не как в вашем коде ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 10:30 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991 как сделать так чтобы вместо системной даты можно было использовать дату из таблицы замени date() на свою переменную или поле с нужной датой. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 10:37 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991Евгений1111, смотрю ваш код для определения возраста по даже рождения, как я понял возраст вычисляется от системной даты, а как сделать так чтобы вместо системной даты можно было использовать дату из таблицы и результат определять просто как целое число, а не как в вашем коде "а как сделать так чтобы вместо системной даты можно было использовать дату из таблицы" Неужели тут может быть несколько вариантов? "результат определять просто как целое число, а не как в вашем коде" Из командного окна попробуй посмотреть на результат и вопрос отпадет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 10:38 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Dima T, заменил он пишет невозможно найти такой объект. lnYears=YEAR(pacient.dr)-year(ldBirthDay) lnMonth=MONTH(pacient.dr)-MONTH(ldBirthDay) вот так пишу показывает -40 лет. у меня есть таблица пациентов там у них дата рождения поле dr. Есть другая таблица где есть поле dat.obsl дата обследования. и вот мне нужно найти сколько лет было пациентам на момент обследования ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 10:46 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
чтобы просто как целое число выводил оказалось ерунда ))) в конец кода не посмотрел, а там готовый ответ. А как сделать чтобы для пациентов определять возраст на момент даты обследования ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 11:01 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Dima T тебе ж уже ответил ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 11:06 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, Вот смотрите пожалуйста: без всяких дней и месяцев просто возраст определить пишу такой код из выше описанного, убрав все остальное. В поле pacient.dr дата рождения 1975.05.28, дата обследования поле sluch.data_2 равно 2012.09.13. пишу так: Код: sql 1.
вроде результат должен быть 37, а выводится 43. Не понимаю с чем это связано в курсоре pacient много таких пациентов, в курсоре sluch тоже много записей. и когда пишу так чтобы в поел agep курсора pacient вывести возрасты пишет объект pacient Не найден Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 11:31 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
заметил что в курсоре дата идет так 28.05.1975 если в обеих курсорах дата в таком формате тоже мне кажется правильно должен результат выводится, однако не выводит ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 11:46 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991IgorNG, Вот смотрите пожалуйста: без всяких дней и месяцев просто возраст определить пишу такой код из выше описанного, убрав все остальное. В поле pacient.dr дата рождения 1975.05.28, дата обследования поле sluch.data_2 равно 2012.09.13. пишу так: Код: sql 1.
вроде результат должен быть 37, а выводится 43. Не понимаю с чем это связано в курсоре pacient много таких пациентов, в курсоре sluch тоже много записей. и когда пишу так чтобы в поел agep курсора pacient вывести возрасты пишет объект pacient Не найден Код: sql 1. 2.
Из командного окна попробуй так: d1 = {^1975.05.28} d2 = {^2012.09.13} ?YEAR(d2) - YEAR(d1) Ну и нужно проверить количество месяцев, а то будет прибавлять лишний год, если ДР еще не наступил ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 11:52 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, если в таком формате то верно выводит, а в курсоре у меня дата так идет 28.05.1975 можно сделать чтобы дата была в формате 20.05.1975 или как поступить тут: lnYears=YEAR(sluch.date_2)-year(pacient.dr) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 11:57 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Я понял почему 43 выводится и он правильно выводит 43 это оказывается возраст последнего человека она вычисляет. А как для всех пациентов вычислить? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:01 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, SCAN ... ENDSCAN или SELECT, но нужно связать две таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:08 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
lnYears хранит одно число и видимо он в конец его прописывает к последнему человеку. попробовал такой вариант тоже для последнего только вычисляет: Код: sql 1.
Можно сделать чтобы вычислял возраст для первого например и сразу записывал в поле pacient.agep? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:11 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Спасибо Scan помогло вроде. Сейчас проверю правильно ли обновил записи в курсоре для уверенности ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:14 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991lnYears хранит одно число и видимо он в конец его прописывает к последнему человеку. попробовал такой вариант тоже для последнего только вычисляет: Код: sql 1.
Можно сделать чтобы вычислял возраст для первого например и сразу записывал в поле pacient.agep? Чем связаны таблицы usl и pacient ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:14 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, можно связать по полям npolis и spolis, я проверил пару записей вроде правильно возраст определил для пациентов. Вы думаете логически неправильно вычисляет возраст? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:35 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
вот код который вычисляет возраст для всех пациентов: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:36 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Не думаю. Во-первых зачем LOOP Во вторых SCAN...ENDSCAN работает по одной выбранной таблице. Поэтому, данные из второй таблицы (pacient) будут браться из одной и той же записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:43 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, Loop чтобы передать управление обратно Scan. Ну не знаю вроде как правильно вычисляет. Если есть более правильный вариант напиши. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:48 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991вот код который вычисляет возраст для всех пациентов: Код: sql 1. 2. 3. 4.
Не может этот код правильно вычислять возраст ВСЕХ пациентов, поскольку SCAN делаешь по таблице pacient и при этом из таблицы USL берешь ОДНО И ТО ЖЕ ЗНАЧЕНИЕ. Если только таблицы у тебя не связаны SET RELATION ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 12:54 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Код: xml 1.
не пробовал? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 13:01 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
P-232 Код: xml 1.
не пробовал? Судя по всему - нет. Там букв много :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 13:06 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
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 для возраста. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 13:21 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
проверяю два условия, а потом тормозит мозг (( Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 13:26 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
вот такой код набросал.. я не до конца понял задачу поэтому как мне кажется этот код должен работать правильно, но он не выводит ничего. хотя все условия учел Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 14:19 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991вот такой код набросал.. я не до конца понял задачу поэтому как мне кажется этот код должен работать правильно, но он не выводит ничего. хотя все условия учел Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Раз набросал такой код, то наверное, знаешь, что и куда этот код должен выводить? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 14:30 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, код должен выводить те случаи в которых код МКБ не соответствует возрасту пациента. но что-то ничего не выводит ни окно msgbox ни данные селекта ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 14:33 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991вот такой код набросал.. я не до конца понял задачу поэтому как мне кажется этот код должен работать правильно, но он не выводит ничего. хотя все условия учел Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Ну предположи, что 1-е условие соблюдается, а 2-е - нет. Куда попадешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 14:36 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, хм.. этот момент я упустил. я не уверен что логика моего кода правильная. не совсем понял как проверить соответствие ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 14:40 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
все равно не выводит IF hediag.compr='>=' if pacient.agep>=hediag.age IF sluch.ds0=hediag.code AND sluch.ds1=hediag.code AND sluch.ds2=hediag.code SELECT * FROM sluch ELSE MESSAGEBOX("12312") ENDIF ELSE messagebox("11111") ENDIF ENDIF ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 14:43 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Ye/ может так тебе понятней станет почему ничего не выводит. Скорее всего select пустой WAIT "hediag.compr = " + hediag.compr WINDOW WAIT "pacient.agep = " + STR(pacient.agep) WINDOW WAIT "hediag.age = " + STR(hediag.age) WINDOW WAIT "hediag.code = " + hediag.code WINDOW WAIT "sluch.ds0 = " + sluch.ds0 WINDOW WAIT "sluch.ds1 = " + sluch.ds1 WINDOW WAIT "sluch.ds2 = " + sluch.ds1 WINDOW IF hediag.compr='>=' IF pacient.agep >= hediag.age IF sluch.ds0 = hediag.code AND sluch.ds1 = hediag.code AND sluch.ds2 = hediag.code SELECT * FROM sluch INTO CURSOR MyCursor SELECT MyCursor BROWSE ELSE MESSAGEBOX("12312") ENDIF ELSE messagebox("11111") ENDIF ENDIF[/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 15:04 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, сейчас пытаюсь разобраться. А вообще мой код правильно будет проверять соответствие кода МКБ т.е полей ds0,ds1,ds2 возрасту пациента? так как показано в таблице hediag? я выше описывал пример соответствия в hediag ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 15:09 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
еще одно уточнение в sluch поля Ds0,ds1,ds2 имеют формат Z00.0 а в таблице Hediag поле code имеет формат Z000 без точки. надо еще и это учитывать в моем коде не учитывается т.к. не знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 15:13 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Потому что описываешь мутно: "поле age в hediag содержат такие значения 14 может 19 и т.д. а поле compr такие ">=", "<", ">". " Понятней нужно делать, потому что у тебя это перед глазами, а здесь ничего не видно. Если у тебя таблица, то и надо приводить таблицу, а не абстрактное перечисление. age______headiag 14_______????? 19_______????? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 15:15 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, вот таблица и поля курсора пациент и sluch: create cursor pacient ( ; id_paс I, ; vpolis I, ; spolis C(3), ; npolis C(16), ; smo C(5), ; smo_ogrn C(13), ; smo_ok C(5), ; smo_nam C(20), ; novor I, ; inogor C(6), ; fam C(30), ; im C(30), ; ot C(30), ; w I, ; dr t, ; fam_p C(30), ; im_p C(30), ; ot_p C(30), ; w_p I, ; dr_p t, ; mr C(10), ; doctype I, ; docser C(3), ; docnum I, ; snils I, ; okatog I, ; okatop I, ; comentz C(10), ; agep I, ; adres C(18)) CREATE CURSOR sluch ( ; id C(12), ; idcase I, ; mcod C(6), ; glpu C(6), ; spolis C(3), ; npolis C(16), ; novor I, ; usl_ok I, ; vidpom I, ; npr_mo I, ; order I, ; t_order I, ; podr C(6), ; profil I, ; det I, ; nhistory I, ; date_1 t, ; date_2 t, ; ds0 C(6), ; ds1 C(6), ; ds2 C(6), ; code_mes1 I, ; code_mes2 I, ; rslt I, ; ishod I, ; prvs I, ; iddokt I, ; os_sluch I, ; idsp I, ; ed_col I, ; tarif I, ; sumv I, ; oplata I, ; sump I, ; refreason I, ; sank_mek I, ; sank_mee I, ; sank_ekmp I, ; comentz C(10), ; inogor C(6), ; pr_nov I) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 15:23 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, я привел одну строку из hediag чтобы было нагляднее как представлено соответствие кода МКБ возрасту ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 15:25 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
с точкой в hediag.code проблем то не возникнет я думаю можно данные вывести в курсор и в курсоре заменить Z000 на Z00.0 при помощи STUFF(). .а вот логику не до конца понял я. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2012, 16:12 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Чтобы проверить в таблице hediag первую в первой записи поле age сделал 1, а поле compr=">=" и пишу следующий код: Тут выбираю в курсор все записи из hediag и поле code из формата Z000 делаю таким Z00.0 Код: sql 1. 2. 3. 4. 5. 6.
а тут проверяю, если поле compr=">=" если поле pacient.age>=curs1.age то идет проверка кода МКБ они равны в hediag и в курсоре sluch, но результат в курсор cr не выводится и brow не выводит ничего на экран. может в коде у меня логика неправильная? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 08:23 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
насколько я понимаю логика проверки соответствия кода МКБ возрасту должна быть такой: нужно проверить равно ли поле hediag.compr например ">=", далее больше ли или равно поле pacient.agep полю hediag.age. Если больше или равно нужно проверить равен ли код МКБ из sluch коду МКБ из hediag.code и если они равны то получается код МКБ из случая соответствует возрасту этого пациента. но что-то программно не получается сделать или не до конца понял логику я ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 08:29 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Люди, у меня такой даже не работает. Почему? Не понятно. в первой записи поле pacient.agep=37 , а поле curs1.age=1, также первая запись поле curs1.compr=">=". Ведь должен по логике выводиться messagebox? что за непонятки? Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 10:50 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
if curs1.age=1 messagebox("111") endif не работает.. у меня свет вырубился недавно и немного глючить стал fox может быть из-за этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 11:06 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991не работаетТекст ошибки где? курсор curs1 вообще существует или как? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 11:40 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, существует конечно.. текст ошибки нету.. логику задачи до конца понять не могу и возможно я что-то не так пишу в условиях. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 11:45 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991текст ошибки нетуЗначит, curs1.age<>1. Всё логично Ещё раз можете описать, как связаны таблицы "пациент" и "случай"? Связь "хедиага" с ними вроде бы ясна... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 11:52 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, pacient и sluch можно связать по полям npolis и spolis. Если нужно могу привести все поля из курсорв ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 12:04 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, поле age Не пустое, а просто он видимо проверяет весь курсор и на последней записи останавливается. а там age равно 18, но все равно по логике должен был вроде выдать результат. Просто я не понял до конца логику видать.. третий день вожусь(( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 12:21 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, переходим в выделенную тему, так, думаю, лучше будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2012, 12:36 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Включи эту UDF в SELECT: UDF определения полных лет Код: plsql 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. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 11:23 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, Сейчас попробую разобраться в вашем коде. Но у меня возник вопрос. Написал такой же код для проверки соответствия кода МКБ для случая возрасту пациента вот код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В таблице Hediag специально изменил возраст которому соответствует этот код на 45 лет, у пациента возраст определяется 43 года. Если я правильно понимаю работу этого кода то происходит выборка только тех случаев (случаи она должна выводить) для которых код МКБ соответствует возрасту. Но т.к. я в hediag сделал возраст для кода Z000 45 а у пациента с таким кодом возраст 43. то не должен был этот случай выводиться, но он выводится. Почему так? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 12:12 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Для случая тоже самое кстати. А мне нужно чтобы выводились только те случаи или услуги в которых код МКБ соответствует возрасту. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 12:30 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
для услуг точнее то же самое ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 12:31 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
вот тут он же как я понимаю вычисляет поле compr равно ли ">=" если да то получается он возраст тоже пациента увеличивает? так что ли? Код: sql 1.
так же не должно быть ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 12:48 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Если можно помогите проверить соответствие кода МКБ таким образом,а то что-то он все коды МКБ выводит: Сначала проверять эти условия, а потом уже вычислять возраст пациентов и проверять соответствие кода МКБ, я тут набросал код но он не выводит ничего Код: sql 1. 2. 3. 4. 5.
вот мой код для того случая когда поле compr >= Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 13:23 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, UDF включаешь в .prg-файл, который подключаешь командой SET PROCEDURE. а в селекте просто вызов: Full_years(<дата_рождения>,<дата_обслед.>). Результат обрабатываешь с помощью IIF() в том же селекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 13:26 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, в селекте во-первых, я не понял как где его писать, а во-вторых, тот код, который мне тут написали кажется выдает все случаи, хотя нужно выводить только те случаи для которых код МКБ соответствует возрасту пациента. я так понимаю icase Вычисляет выражение и выводит результат. так вот если писать Код: sql 1.
он проверит является ли поле compr равным ">=" если равен то pacient.age сделает большим или равным hediag.age. Или он не так делает? но в хелпе читал работа этой функции описана так ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 13:37 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, плохо читал. Селект ничего не делает, он отбирает записи согласно заданным условиям ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 13:54 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
я знаю что он выбирает согласно условию. но в том коде который мне тут написали есть icase(alltrim(hediag.compr)=='>',pacient.agep>hediag.age мне интересно что тут он делает? если поле compr='>' pacient.agep>hediag.age. Вот тут разве он не увеличивает возраст пациента? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 14:00 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
прошу объяснить этот кусок: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 14:03 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, И что ты из этого кода до сих пор не понял? Выбрать записи, где hediag.compr равно '>' и pacient.agep больше hediag.age ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 14:09 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNG, запутался я.. если так делает. то почему выводится тот случай у которого возраст пациента меньше чем возраст в hediag.age. Я в поле hediag.age прописал 45 для кода Z000, в случаях есть такой случай у которого код равен Z000 и возраст пациента 43. В код, который мне тут выложили и этот случай выводит в результатах. для услуг также ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 14:19 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNGВыбрать записи, где hediag.compr равно '>' и pacient.agep больше hediag.ageНет, выберутся все записи. Но там, где pacient.agep больше hediag.age, в последнем поле будет true, а где меньше - false. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 16:48 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991то почему выводится тот случай у которого возраст пациента меньше чем возраст в hediag.ageсм. предыдущий пост. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 16:49 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, А как сделать так чтобы выводились только те записи которые соответствуют возрасту пациента? мне не нужно все выводить.. т.к. эти данные я потом буду выводить в отчет. и нужно вывести только те которые соответствуют возрасту ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 21:05 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991tanglir, А как сделать так чтобы выводились только те записи которые соответствуют возрасту пациента? мне не нужно все выводить.. т.к. эти данные я потом буду выводить в отчет. и нужно вывести только те которые соответствуют возрасту Написать запрос, который использует данный запрос в качестве источника исходных данных. Будет что-то типа: Код: sql 1.
А в Where указать, что надо отбирать только те записи, где CheckMKB.logical = true ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2012, 03:47 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Станислав С...кий, т.е написать такой код? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
и он мне будет выводить только те случаи где код МКБ (поля ds0,ds1,ds2) соответствует возрасту пациента? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2012, 15:52 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, ёшкин кот, ну вникните уже в смысл джойнов, в конце-то концов. Да и к тому же что вообще за запрос у вас получился (даже если закрыть глаза на безумный джойн с хедиагом): Код: sql 1. 2.
Алиас подзапроса - "а", никаких других таблиц/курсоров во внешнем запросе нет. Откуда прикажете фоксу брать поле sluch.ds0? Да и в самом подзапросе нет поля с именем "logical", а вы пытаетесь по нему фильтровать... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2012, 16:22 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, я же с самого начала попросил помочь в запросе, потому что не понял до конца смысл задачи, потом написали тут код с джойнами, но оказалось что он выводит все случаи, но мне нужно чтобы выводились только те для которых код мкб совпадает с возрастом. я бы сам изменил код, но не понял ваш код с джойнами, logical и checkmkb. поэтому прошу подсказать как сделать так чтобы выводились не все случаи а именно те у которых совпадает ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2012, 09:48 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Да фигнёй вы тут, коллеги, занимаетесь. Если ты прогаммёр, а не тот, кто пишет "я фокс только изучаю", то эту "проблему" немного напрягшись можно решить. Хреново, друзья, что башкой чё то стали мало работать. А стали просить готовые коды, что есть бездарно и неэстетично. Ну ты посиди час-другой, сам сообразишь, как этот алгоритм оформить. Некрасиво программёру такие вещи назойливо просить. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2012, 16:31 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, это не я предложил брать, а Станиславский, который выше написал как сделать. я лишь написал так как он сказал. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2012, 22:15 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
сейчас фокса нету под рукой. скажите такой код будет работать как мне надо (т.е выдавать только те случаи для которых код мкб совпадает с возрастом пациента. считается что возраст уже определен на момент выполнения этого куска кода) ??? Это только для случая когда поле compr='>' Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2012, 22:24 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991скажите такой код будет работать как мне надонет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 05:22 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, Почему нет? представленный тут код, все услуги или случаи выводит. Мне так не нужно чтобы выводилось. Как переделать мне этот код, чтобы выводить только те услуги, в которых соответствует возрасту код мкб Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
или вот я пишу чертов код, но ничего не делает этот код. Уважаемые программисты, почему ничего не делает мой код? и как переделать его? Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 08:59 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991tanglir, Почему нет? представленный тут код, все услуги или случаи выводит. Мне так не нужно чтобы выводилось. Как переделать мне этот код, чтобы выводить только те услуги, в которых соответствует возрасту код мкб Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Тут написано выбрать все, вот и выбирается все. В поле CheckMKB ты получаешь три значения: .T. - возраст подходит под условие .F. - возраст не подходит под условие .NULL. - неизвестное условие, надо дописать в запрос проверку этого условия Если тебе надо только где возраст подходит под условие, то выбирай только те записи где CheckMKB = .T. Дима1991или вот я пишу чертов код, но ничего не делает этот код. Уважаемые программисты, почему ничего не делает мой код? и как переделать его? Код: sql 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.
Ты сам-то пробовал осмыслить что написал? Ты проверяешь ОДНУ запись, а потом выбираешь ВСЕ или не выбираешь ни одной. IF работает с текущей записью таблицы, а SELECT со всей таблицей. Допиливай первый вариант. Он уже почти рабочий у тебя. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 09:19 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Dima T, Если я правильно вас понял, то получается нужно первый вариант использовать как подзапрос в другом запросе который будет делать выборку по условию where checkmkb=.t. ? и должен быть код типа: select u.ds from (описанный подзапрос) where checkmkb=.t. ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 09:43 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991нужно первый вариант использовать как подзапрос в другом запросе который будет делать выборку по условию where checkmkb=.t. ?Да. Или дописать к исходному запросу это же условие, только в секции having. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:10 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, Так правильно? Только в результате пустая выборка получается Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:16 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Если писать просто запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
то в результате выводятся все случаи услуг и поле chemkb в котором все значения равны .NULL. почему везде null если есть услуги у которых возраст пациента соответствует коду мкб ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:25 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, запрос правильный. Ну а выборка... попробуйте создать таблицы с такими записями, чтобы точно были записи в результате, и выполните запрос на них. Если не получится - эти тестовые таблицы выложите тут. ЗЫ. а может, splolis/npolis - не числа, а строки? тогда оберните их в аллтрим и сравнивайте с помощью "==". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:25 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991то в результате выводятся все случаи услуг и поле chemkb в котором все значения равны .NULL.Значит, что-то с джойном таблицы "хедиаг". Давайте сюда таблицу хедиаг и по паре строк из таблиц "пациент", "услуга" (тех, в которых точно должно быть соответствие). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:27 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, spolis и npolis это строки. А на счет hediag в таблице в некоторых случаях поле compr пустое. Может поэтому? таблице hediag нельзя ничего менять. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 11:18 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
что-то у меня фокспро глючит не смог удалить ненужные записи из hediag поэтому дам ссылку чтобы скачать архив. Там Hediag,pacient и usl таблицы Ссылка ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 11:32 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
А нельзя ли сделать так? Проверить поля hediag.age и hediag.compr. Далее случай 1, если поле compr=">" и возраст пациента больше чем hediag.age, то проверить соответствует ли код МКБ этому возрасту, если да то занести эту услугу в курсор, если нет перейти ко второму случаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 15:48 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
gomo(д_рожд, 12*кол_во_лет) < дата_границы или *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FUNCTION возраст *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS _дат1, _дат2 if _дат2<_дат1 RETURN 'Не верно заданы даты! (Дата рождения должна быть меньше даты определения возраста)' endif _gg =YEAR(_дат2) - YEAR(_дат1) _mm =MONTH(_дат2)- MONTH(_дат1) _dd =DAY(_дат2) - DAY(_дат1) IF _dd<0 _mm=_mm-1 ENDIF IF _mm<0 _gg=_gg-1 _mm=12+_mm ENDIF _xxx=IIF(INLIST(VAL(RIGHT(STR(_gg,2),1)),1,2,3,4),"г.","л.") _gg=IIF(_gg=0,"",STR(_gg,2)+_xxx) _mm=IIF(_mm=0,"",STR(_mm,2)+"мес.") _возраст=_gg+' '+_mm ***---------------------------------------------------------------------- IF (ALLT(_возраст)="1мес.".AND._dd<0).OR.EMPTY(_возраст) _кол_дней=ALLT(STR(_дат2-_дат1)) _назв_д="" DO CASE CASE _кол_дней="11".OR._кол_дней="12".OR._кол_дней="13".OR._кол_дней="14" _назв_д="дней" CASE SUBSTR(_кол_дней,LEN(_кол_дней))="1" _назв_д="день" CASE SUBSTR(_кол_дней,LEN(_кол_дней))="2" _назв_д="дня" CASE SUBSTR(_кол_дней,LEN(_кол_дней))="3" _назв_д="дня" CASE SUBSTR(_кол_дней,LEN(_кол_дней))="4" _назв_д="дня" OTHERWISE _назв_д="дней" ENDCASE _возраст=_кол_дней+_назв_д ENDIF RETURN _возраст ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 21:09 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Выяснилось, что код не совсем правильно проводит выборку. Я оставил в таблице hediag 5-6 записей и в полях compr указал все возможные условия (>,<,>=,<=). Указал возрасты в поле age. Код такой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Когда запускаю программу и нажимаю кнопку для выполнения выборки в результате выводятся все значения а в поле checkmkb везде стоит F. Далее у меня стоит еще одна кнопка, которая отображает услуги, пациентов, и случаи, когда ее нажимаю отображает все и если потом нажать ту же кнопку которая выполняет вышеуказанный код, то в поле Checkmkb уже везде T. Помогите разобраться в чем причина? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 08:26 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Т.е. код не выводит правильно. В hediag есть код МКБ который соответствует пациенту возраст, которого <=1 года, а в таблице пациент у пациента с таким кодом возраст больше чем 1 год. Следовательно в этом поле должен был checkmkb иметь значение F, но он выдает то T то F ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 08:43 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Проверьте у себя пожалуйста.. Вы говорите код почти готовый, но вот так по разному выводит. Выкладываю весь проект и файлы. (Файлы скинуть в корень диска C) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 08:55 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991Проверьте у себя пожалуйста..Проверил. Вот здесь 13409609 вы писалиДима1991дополнил код tanglir условиями которые вообще могут быть в hegiag.compr получилось так: - так вот, получилось совсем не то, что было изначально. Вот здесь 13424847 уже я сам сказал tanglirДима1991, запрос правильный., но ошибся - запрос всё-таки неправильный, просто я тогда не заметил этот косяк (в глаза он не бросается). Разберитесь с алиасами, и всё станет нормально. Хинт - смотрите мой запрос в той теме, ищите отличия от своего в селект-части. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 10:26 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, В какой теме искать ваш код? можно ссылку? А то столько кодов тут, не разберешь какой из них подходящий. И еще вопрос. Ваш код на который вы указываете правильный или косяк есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 10:31 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
вот ваш код в другой теме: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
вот код, который я изменил под свой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Но по-прежнему во всех полях выдает F. Вы можете у себя проверить и выложить рабочий код? Уже сколько неделя прошла а я с места не сдвинулся ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 10:45 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991Но по-прежнему во всех полях выдает F.А у меня - нет (см. рисунок) Так что теперь смотрите у себя, я в запросе тоже ничего больше не менял. Ну, кроме путей к файлам, ибо у вас с путями швах. И отдельное вам огромное спасибо за кривой рид эвентс - пропишите уже clear events хоть в unload формы, что ли... Дима1991Ваш код на который вы указываете правильный или косяк есть?Правильный. Дима1991Уже сколько неделя прошла а я с места не сдвинулсяИ кто в этом виноват? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 11:20 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, а выложите этот проект пожалуйста, а то что-то непонятно. Вроде один и тот же код, только пути разные ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 11:28 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Говорю же - менял только запрос, вот он Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
, остальное всё то же самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 11:39 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, у меня фокспро глючит кажется жестко.. я ваш код вставил он даже указанные поля не выводит в результат.. Заново создам проект и посмотрю сейчас ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 11:50 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Да уж когда вывожу одно поле из ds.usl то везде выдает F , а когда ваш код вписал нормально выдает. Да и фокс глючит пришлось заново проект создавать а иначе не выдавал. Теперь если я захожу оставить только те услуги для которых код МКБ не соответствует возрасту пациента я могу написать Код: sql 1.
или Код: sql 1.
и будет выводить только те которые соответствуют или не соответствуют да? checkmkb если False значит не соответствует. так ведь? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:17 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Обнаружил ошибку. Вот в таблице hediag код E343 соответствует пациентам у которых возраст < или = 1. У пациента с услугой у которого код Е343 возраст 6 и 15 лет. А в результате выдается эти услуги как те у которых код мкб не соответствует возрасту. А тут в чем загвоздка? дополнил код tanlir'a прописав после всего Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:23 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991фокс глючит пришлось заново проект создаватьЭто ваш код в каком-то месте глючит. Дима1991так ведь?да. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:24 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Ой )) или это я запутался)) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:27 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991Обнаружил ошибку.Хватит уже, а? авторв таблице hediag код E343 соответствует пациентам у которых возраст < или = 1Это верно. авторУ пациента с услугой у которого код Е343 возраст 6 и 15 летНу пусть будет такой пациент. авторА в результате выдается эти услуги как те у которых код мкб не соответствует возрастуИ? если услуга соответствует возрасту менее одного года , то, ясен хрен, для человека с возрастом более одного года она будет признанна неподходящей... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:27 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, Нет вроде ваш код правильный.. У пациента возраст 6 и 15 лет, а код Е343 может услуга с кодом Е343 может быть только у тех пациентов возраст которых <=1 тогда он выводит эти услуги как те у которых код МКБ не соответствует возрасту. Правильно же вроде.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:29 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991Обнаружил ошибку. Вот в таблице hediag код E343 соответствует пациентам у которых возраст < или = 1. У пациента с услугой у которого код Е343 возраст 6 и 15 лет. А в результате выдается эти услуги как те у которых код мкб не соответствует возрасту. А тут в чем загвоздка? дополнил код tanlir'a прописав после всего Код: sql 1.
А что, разве соответствует? Heading <= 1 У пациента 6 и 15 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:30 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, Извиняюсь, сразу не подумал просто. Вам спасибо большое. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:30 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Можно еще один вопрос. Теперь тоже самое пытаюсь сделать для случаев. есть курсор sluch но вместо поля ds в нем три поля ds0,ds1,ds2. Это тоже коды МКБ, которые хранятся в hediag. Этот же код, переделал под случаи, но он вместо полей ds0,ds1,ds2 использует как мне кажется тоже самое поле usl.ds. и в результате получается тот же результат что и для услуг. Хотя код МКБ тут уже другой Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 14:32 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Нет все работает. такого кода просто не было в hedag. Получилось. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 14:37 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, в функциях не разбираюсь я в фокспро вообще.. Ваш код который вычисляет дату, можно сделать так чтобы при выполнении программы она вычисляла возрасты и записывала результат в поле pacient.agep ? Код: sql 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. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 08:17 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991Jonny540, в функциях не разбираюсь я в фокспро вообще.. Ваш код который вычисляет дату, можно сделать так чтобы при выполнении программы она вычисляла возрасты и записывала результат в поле pacient.agep ?Можно. Одно небольшое исправление: не ">=",а ">" Код: sql 1.
Использовать готовую функцию, надеюсь, сможешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 09:01 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, в том то и дело что я не умею пользоваться функциями в фокспро, всю жизнь на делфи работал.. недавно только начал с фокспро. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 09:02 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, 13413986 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 09:05 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, там написано что в селекте надо писать, а потом через iif(). а в курсор нельзя вывести возрасты, а в селекте потом просто с полем из курсора работать? хотел бы так если можно: ВАШ_КОД ****** ***** в pacient.agep занести вычисленные возрасты ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 09:09 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Откуда брать исх. данные? Некогда весь топик перечитывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 09:22 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, возраст должен вычисляться на момент обследования. в курсоре pacient.dr это дата рождения этого пациента, а в услугах поле usl.data_1 это дата обследования. и надо вычислять возраст исходя из ээтого ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 09:53 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Как связаны pacient и usl, формат полей? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 11:09 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, они связаны полями spolis и npolis формат строковый (С) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 11:12 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Что-то типа этого: Код: sql 1. 2. 3. 4.
Это навскидку, возможно, есть ошибки, проверь. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 11:58 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, Проверил.. оказывается не data_1 а data_in ,но это неважно исправил это и мне выдает ошибку что data_in не найден, а в Курсоре usl есть такое поле Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 12:05 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Что значит Full_eyars does not exist ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 12:12 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Full_eyars.prg does not exist точнее ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 12:12 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Ой ой ой создал файл Full_years.prg и туда вписал функцию определения возраста.. в результирующем курсоре поле agep везде -1 получилось и причем возрастов гораздо много там чем пациентов (количество записей) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 12:17 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991причем возрастов гораздо много там чем пациентов (количество записей)потому что кол-во записей там не равно кол-ву пациентов, оно равно кол-ву записей об услугах, оказанных пациентам (зачем там джойн, по-вашему?). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 12:23 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, а почему везде -1 выдает? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 12:48 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, См. код: Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 12:59 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, у меня в курсорах в таком виде дата 28.05.1975 12:00:00 AM тогда как сделать чтобы при заполнении курсора был формат даты? У меня тип стоит dr T ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 13:04 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
и еще такой вопрос, вы выводите вычисленные возрасты в курсор ааа, а можно вывести в тот же курсор pacient в поле agep? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 13:08 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991тогда как сделать чтобы при заполнении курсора был формат датыcast(поле as date) Дима1991можно вывести в тот же курсор pacient в поле agep?читать про update ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 13:25 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, У меня создается курсор create cursor pacient ( ; **** **** dr T; *** ) вместо dr T так что ли писать cast(поле as date) ?? я имел ввиду можно ли сделать при создании тип поля таким какой нужен бл* вычисления ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 13:42 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, D, бл* ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 13:49 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, о вот сейчас получилось, в курсор ааа выводит возрасты точно такие же как и у меня были, но мне сказали что в моем случае будет плюс минус 1 год. Ваш код все таки и дни и месяца считает и правильнее сформирован. Теперь мне бы хотелось в pacient.agep занести эти возрасты только что-то не получается. Посмотрите мой код, я из usl добавил некоторые поля тоже Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 14:08 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991 Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 14:21 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, он все равно в первой записи делает 37 т.е. возраст первый возраст в курсоре ааа, а потом везде нули.. и в вашем случае и в моем случае так ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 14:32 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Блин, опять я на те же грабли... 12676279 Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 16:46 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Jonny540, мда уж, а я вначале писал scan и go top не написал. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 16:50 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Можно 1 вопрос по поводу выборки... Я делаю сначала выборку из услуг в один курсор uslugi, затем выборку из случаев во второй курсор sluchai и потом из этих курсоров только нужные поля вывожу в третий курсор otch. А там у меня по два раза повторяются записи т.к. они содержались в первом и во втором курсоре. Можно ли сделать так чтобы в результирующем курсоре OTCH не повторялись записи. DISTINCT не помогает Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:26 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991чтобы в результирующем курсоре OTCH не повторялись записи. DISTINCT не помогаетЕсли дистинкт не помогает, значит, какие-то поля в этих "одинаковых" записях всё-таки не совпадают. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:32 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991 Код: sql 1.
ОМФГ это же у вас полный декарт срочно читать про селект до посинения! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:33 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, поля полностью идентичны ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:35 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
что значит декарт? Я такой сленг не понимаю )) скажите пожалуйста по русски ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:36 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, полное декартово произведение таблиц uslugi и sluchai за разъяснениями - на куры реляционной алгебры :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:41 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, аа.. понял, а как тогда записать чтобы выборка происходила без повторяющихся записей ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:43 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, я предполагаю, что вам нужен был union all. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:44 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Или даже просто union. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:44 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
что-то не получается: смотрите Код: sql 1. 2. 3. 4. 5.
пишет Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 13:58 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991что-то не получается: смотрите Код: sql 1. 2. 3. 4. 5.
пишет Код: sql 1.
А токи с запятой кто будет ставить? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 18:03 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
IgorNGА токи с запятой кто будет ставить?да и скобки тут не нужны... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 19:36 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, две недели уже топик пишешь, бросай ты эту херь, не твое это, нафиг тебе эта казуистика непонятная? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 20:09 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
точки с запятыми я ставлю и так. а вот попробовал без скобок другая ошибка появилась Код: sql 1.
на счет того что не мое.. я только учить начал его.. в университете поверхностно прошли, сейчас заново изучаю ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 21:42 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991другая ошибка появилась http://translate.google.com/#en/ru/SELECTs%20are%20not%20UNION%20compatible.%20Number%20of%20fields%20do%20not%20match. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 05:02 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
tanglir, я знаю что поля не совпадают у таблиц, поэтому спросил вначале есть ли какой-нибудь способ не выводить повторяющиеся записи? юнион тоже не помогает судя по всему ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 06:37 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Нужно связать два курсора. Либо через inner join select ... from uslugi inner join sluchai on uslugi.<field1> = sluchai.<field2> and uslugi.<field2>=sluchai.<fieldN> where..., либо, по старинке: select ... from uslugi,sluchai where uslugi.<field1> = sluchai.<field2> and uslugi.<field2>=sluchai.<fieldN> and... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 08:20 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991 я только учить начал его.. в университете поверхностно прошли, сейчас заново изучаю Совет простой. Возьми книжку по SQL. Можно Грубера "Понимание SQL" и читай до просветления. Ибо Фокс 9.0 поддерживает почти все "примочки" стандарта SQL-92. Когда разберешься со стандартом - только тогда лезь в Фокс!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 08:32 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991на счет того что не мое.. я только учить начал его.. в университете поверхностно прошли, сейчас заново изучаю Без обид. Пишу как думаю. У тебя реально знаний чуть больше нуля. Совсем чуть-чуть больше. Тебе сначала надо подучится, а потом уже за самостоятельную работу браться. Прочитай книжку какую-нибудь, повыполняй примеры оттуда, разберись как они работают. Почитай свои топики: "Я так написал, не работает" - "Исправь тут" - "Исправил, не помогло" - "Поставь точку с запятой" ... реально работа под диктовку. Обычно с таким отправляют на форум "работа", чтоб заплатил денег - получил результат. Тут не курсы для начинающих. Никто тут лекции не читает, подразумевается что человек имеет базовые знания и не может решить конкретную задачу. Таким просто подсказывают направление в котором искать решение - а дальше сам. Так что сначала тебе надо подучится. Судя по твоей настырности - упорства тебе не занимать :) Если есть возможность - может где какие курсы читают в институтах, туда попробуй сунуться. Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 08:54 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Dima T, я знаю что совсем немного знаю. Я вот устроился на работу, когда пришел мне сказали будешь заниматься изучением программного комплекса по медицине типа покупаем новую систему.. Но пока что ничего не купили и мне дают такие задания. Не думал что буду так долго работать с фокспро тут на работе, поэтому пока не купят программу приходится писать на фокс. А на счет SQL в университете на 3-4 курсе мы прошли полностью, но когда не практикуешься забываешь понемногу. Сейчас постепенно восстанавливаю забытое. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 09:44 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Дима1991, Создай свой топик. Зачем в чужой-то все постить? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 11:35 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
А я возраст определяю красиво - вот так! FUNCTION vozrast(sd,nk) && sd - Дата рождения, nk - сегодня или произвольная дата но больше sd LOCAL s_year s_year=YEAR(nk)-YEAR(sd) s_year=IIF(GOMONTH(sd,s_year*12)>nk,s_year-1,s_year) RETURN IIF(s_year<0,0,s_year) Дарю! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2013, 01:14 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
На досуге протестила на скорость определение возраста на 30000 базе. 1.Вариант работал - 1.546 сек. x=SECONDS() SCAN n=0 dr=Drod DO WHILE dr<=DATE() dr=GOMONTH(dr,12) n=n+1 ENDDO n=n-1 && Возраст ENDSCAN messageb(seco()-x) 2.Вариант работал - 0.360 x=SECONDS() SCAN n=0 dr=drod DO WHILE dr<=DATE() dr=GOMONTH(dr,120) n=n+10 ENDDO DO WHILE dr>DATE() dr=GOMONTH(dr,-12) n=n-1 ENDDO n && Возраст ENDSCAN MESSAGEB(SECONDS()-x) 3.Вариант - 0.071 сек . x=SECONDS() td=DATE() SCAN dr=Drod n=YEAR(td)-YEAR(dr) n=IIF(GOMONTH(dr,n*12)>td,n-1,n) n=IIF(n<0,0,n) && Возраст ENDSCAN MESSAGEBOX(SECONDS()-x) и это ещё не предел? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2013, 23:55 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Людмila , то. что скорости так изменяются - ничего удивительного. Вы же заменяте вложенный цикл на вычисление разности А как вам это Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
а также Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 01:21 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
AndreTM Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 01:29 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Децл выкраивает DTOS(dExpression) вместо - DTOС(dExpression,1) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 02:32 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
4.Вариант от AndreTM - 0.055 сек.! (с DTOS()) Извините! сегодня перекомпилирую все проги. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 19:15 |
|
Определение возраста
|
|||
---|---|---|---|
#18+
Извините!!! Уважаемая Людмила, просмотрите пожалуйста Ваш запрос "КА и индексация" и если можно ответьте. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 10:44 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1583157]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
158ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 254ms |
0 / 0 |