powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / проверить соответствие кода
25 сообщений из 55, страница 2 из 3
проверить соответствие кода
    #38021582
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ ж не просто так alltrim() у себя добавилМда, аллтрим я и впрямь упустил.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select p.что_нибудь,u.что_нибудь
 ,cast(icase(alltrim(h.compr)=='>',p.agep>h.age
   ,alltrim(h.compr)=='<=',p.agep<=h.age
   ,.null.
  ) as logical
 ) as CheckMKB
from pacient p 
join usl u on p.spolis=u.spolis and p.npolis=u.npolis
left join hediag h on chrtran(alltrim(u.ds),'.','')==alltrim(h.code)

Для случаев почти то же самое, но для начала нужно хотя бы с услугами разобраться.
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021585
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКстати откуда у тебя hediag взялся?Он его ещё в той теме выкладывал :)
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021595
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, Я опишу весь код где создаются курсоры и вычисляется возраст. Поля не все описываю только нужные. И еще мне тут на форуме помогли вывести данные из xml В курсор поэтому там доя пациентов, случаев и услуг по два курсора но все рабочее. А по поводу hediag такое дело в hediag поле код МКБ хранится в виде Z000 а в полученных курсорах в виде Z00.0 поэтому из hediag в curs1 вывел данные сделав значения в поле code такими Z00.0. Если так делать необязательно можно вместо curs1 сразу hediag использовать.

USE "C:\hediag.dbf" // тут путь так указал чтобы не возиться..а так пути у меня в таблице хранятся отдельно

USE IN SELECT('qweasd')
USE IN SELECT('pacient')
USE IN SELECT('usl1')
USE IN SELECT('usl')
USE IN SELECT('sluch1')
USE IN SELECT('sluch')

loXML = Createobject("msxml2.DomDocument.3.0")
loXML.Async=.F.
loXML.Load("D:\2.XML")
loXML1 = Createobject("msxml2.DomDocument.3.0")
loXML1.Async=.F.
loXML1.Load("D:\2.XML")
loXML2 = Createobject("msxml2.DomDocument.3.0")
loXML2.Async=.F.
loXML2.Load("D:\2.XML")

create cursor pacient ( ;
spolis C(3), ;
npolis C(16), ;
dr t)

create cursor qweasd ( ;
spolis C(3), ;
npolis C(16), ;
dr t)

create cursor usl1 ( ;
spolis C(3), ;
npolis C(16), ;
date_in t, ;
ds C(6))

create cursor usl ( ;
spolis C(3), ;
npolis C(16), ;
date_in t, ;
ds C(6))

CREATE CURSOR sluch ( ;
spolis C(3), ;
npolis C(16), ;
ds0 C(6), ;
ds1 C(6), ;
ds2 C(6))

CREATE CURSOR sluch1 ( ;
spolis C(3), ;
npolis C(16), ;
ds0 C(6), ;
ds1 C(6), ;
ds2 C(6))

loXMLNodes=loXML.getElementsByTagName("zap")
loNodes = loXMLNodes.nextNode
For i1=1 To loXMLNodes.Length
loXMLNodes2=loNodes.getElementsByTagName("pacient")
For i2=1 To loXMLNodes2.Length
m.xmldata='<?xml version = "1.0" encoding="Windows-1251" standalone="yes"?><vfpdata>';
+loXMLNodes2.Item(i2-1).xml;
+'</vfpdata>'
Xmltocursor(m.xmldata,'qweasd',8192)
Insert Into pacient SELECT * FROM qweasd
ZAP IN qweasd
loNodes2 = loXMLNodes2.nextNode
Endf
loNodes = loXMLNodes.nextNode
Endf
Release loXML

loXMLNodes=loXML1.getElementsByTagName("zap/sluch")
loNodes = loXMLNodes.nextNode
For i1=1 To loXMLNodes.Length
loXMLNodes2=loNodes.getElementsByTagName("usl")
For i2=1 To loXMLNodes2.Length
m.xmldata='<?xml version = "1.0" encoding="Windows-1251" standalone="yes"?><vfpdata>';
+loXMLNodes2.Item(i2-1).xml;
+'</vfpdata>'
Xmltocursor(m.xmldata,'usl1',8192)
Insert Into usl SELECT * FROM usl1
ZAP IN usl1
loNodes2 = loXMLNodes2.nextNode
Endf
loNodes = loXMLNodes.nextNode
Endf
Release loXML1

loXMLNodes=loXML2.getElementsByTagName("zap")
loNodes = loXMLNodes.nextNode
For i1=1 To loXMLNodes.Length
loXMLNodes2=loNodes.getElementsByTagName("sluch")
For i2=1 To loXMLNodes2.Length
m.xmldata='<?xml version = "1.0" encoding="Windows-1251" standalone="yes"?><vfpdata>';
+loXMLNodes2.Item(i2-1).xml;
+'</vfpdata>'
Xmltocursor(m.xmldata,'sluch1',8192)
Insert Into sluch SELECT * FROM sluch1
ZAP IN sluch1
loNodes2 = loXMLNodes2.nextNode
Endf
loNodes = loXMLNodes.nextNode
Endf
Release loXML2

SELECT pacient
SCAN
REPLACE pacient.agep WITH year(usl.date_in)-year(pacient.dr)
LOOP
ENDSCAN
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021602
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, я думал ты для случаев делаешь поэтому не понял откуда usl.. и вместо "u.что-то" надо поля из курсора usl брать значит
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021630
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991Если так делать необязательноНеобязательно, я не зря chrtran в своём примере использовал.
Дима1991и вместо "u.что-то" надо поля из курсора usl брать значитНу да.

Кстати, возраст определяется с "обалденной" точностью - плюс-минус год. Вас это не смущает?
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021631
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991Если так делать необязательноНеобязательно, я не зря chrtran в своём примере использовал.
Дима1991и вместо "u.что-то" надо поля из курсора usl брать значитНу да.

Кстати, возраст определяется с "обалденной" точностью - плюс-минус год. Вас это не смущает?
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021636
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, смущает, но это потом разберу.. главное с кодом МКБ разобраться.
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021638
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirDima TКстати откуда у тебя hediag взялся?Он его ещё в той теме выкладывал :)
ух ты, да тут целый сериал

Тогда подскажите где 2.XML искать.
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021642
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
написал так выдается ошибка: command is missing required clause

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select pacient.fam,usl.ds
 ,cast(icase(alltrim(hediag.compr)=='>',pacient.agep>hediag.age
   ,alltrim(hediag.compr)=='<=',pacient.agep<=hediag.age
   ,.null.
  ) as logical
 ) as CheckMKB
from pacient p 
join usl u on p.spolis=u.spolis and p.npolis=u.npolis
left join hediag h on chrtran(alltrim(u.ds),'.','')==alltrim(h.code)
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021647
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991написал так выдается ошибка: command is missing required clause

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select pacient.fam,usl.ds
 ,cast(icase(alltrim(hediag.compr)=='>',pacient.agep>hediag.age
   ,alltrim(hediag.compr)=='<=',pacient.agep<=hediag.age
   ,.null.
  ) as logical
 ) as CheckMKB
from pacient p 
join usl u on p.spolis=u.spolis and p.npolis=u.npolis
left join hediag h on chrtran(alltrim(u.ds),'.','')==alltrim(h.code)


не cast а case
там опечатка
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021659
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДима1991написал так выдается ошибка: command is missing required clause

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select pacient.fam,usl.ds;
 ,cast(icase(alltrim(hediag.compr)=='>',pacient.agep>hediag.age;
   ,alltrim(hediag.compr)=='<=',pacient.agep<=hediag.age;
   ,.null.;
  ) as logical;
 ) as CheckMKB;
from pacient p ;
join usl u on p.spolis=u.spolis and p.npolis=u.npolis;
left join hediag h on chrtran(alltrim(u.ds),'.','')==alltrim(h.code)


не cast а case
там опечатка
Не туда посмотрел, все правильно с cast
точек с зяпятой не хватает
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021660
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, все равно ошибка осталась я делал так
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021683
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я написал такие поля и вы дал такой результат( на скриншоте): теперь хотел бы разобрать что именно она тут выдала, а то я ваш код вставил надо же еще и понять как работает

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select [color=red]pacient.agep[/color],[color=red]usl.ds[/color];
 ,cast(icase(alltrim(hediag.compr)=='>',pacient.agep>hediag.age;
   ,alltrim(hediag.compr)=='<=',pacient.agep<=hediag.age;
   ,.null.;
  ) as logical;
 ) as CheckMKB;
from pacient p ;
join usl u on p.spolis=u.spolis and p.npolis=u.npolis;
left join hediag h on chrtran(alltrim(u.ds),'.','')==alltrim(h.code)
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021725
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ваш код проверяет соответствие кода МКБ возрасту пациента для услуг? и как я понимаю этот код связан с тем кодом, который выше описал DimaT? т.е. в CheckMKB.prg есть шаблон по которому проверяет а тут уже с реальными данными. Но мне интересно делает ли она то что мне нужно и как делает.. в хелпе Не Нашел функций case, icase
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021768
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991Ваш код проверяет соответствие кода МКБ возрасту пациента для услуг? и как я понимаю этот код связан с тем кодом, который выше описал DimaT? т.е. в CheckMKB.prg есть шаблон по которому проверяет а тут уже с реальными данными. Но мне интересно делает ли она то что мне нужно и как делает.. в хелпе Не Нашел функций case, icase
Я давал только функцию проверки возраста, а не полное решение. В примере tanglir`а тоже самое внутри icase(), т.е. скомбинировать можно так:
Код: sql
1.
2.
3.
4.
5.
6.
select pacient.agep,usl.ds;
 ,cast(CheckMKB(pacient.agep, hediag.compr, hediag.age) as logical;
 ) as CheckMKB;
from pacient p ;
join usl u on p.spolis=u.spolis and p.npolis=u.npolis;
left join hediag h on chrtran(alltrim(u.ds),'.','')==alltrim(h.code)



этот код равносилен такому:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create cursor result (agep I, compr C(3), age I, CheckMKB L)
sele pacient 
scan
   sele usl
   scan for pacient.spolis=usl.spolis and pacient.npolis=usl.npolis
       sele hediag
       llInsert = .F.
       scan for chrtran(alltrim(usl.ds),'.','')==alltrim(hediag.code)
            insert into result values (pacient.agep, hediag.compr, hediag.age, CheckMKB(pacient.agep, hediag.compr, hediag.age))
            llInsert = .T.
       endscan
       if !llInsert
            insert into result values (pacient.agep, hediag.compr, hediag.age, .NULL.)
       endif
   endscan
endscan
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021782
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tточек с зяпятой не хватает
Дима1991Dima T, все равно ошибка осталасьА у меня работает почему-то...
Дима1991Ваш код проверяет соответствие кода МКБ возрасту пациента для услуг? 13407926
Дима1991в хелпе Не Нашел функций case, icaseВозьмите лупу, ищите внимательней - они там есть.
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021795
Reese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте искать по DO CASE
ICASE - появился в 9-ке
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021800
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, оба ваших кода,которые сейчас описали выдают ошибку field checkMKB does not accept null values . в предыдущем коде три поля таблицу вывели с тремя полями и тоже не понял что именно она вывела. Exp1 возраст наверное хотя я не понял почему везде 0.
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021805
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, у меня тоже заработал проставил точки запятые. можете объяснить ваш код почему она 0 выводит в поле Expr1 и вообще работу вашего кода опишите пожалуйста
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021809
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Reese, у меня 9-я версия стоит
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021814
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запутался я уже в твоих селектах, не с того код написал :(
Код: sql
1.
2.
3.
4.
5.
6.
select pacient.agep,usl.ds;
 ,cast(CheckMKB(pacient.agep, hediag.compr, hediag.age) as logical;
 ) as CheckMKB;
from pacient p ;
join usl u on p.spolis=u.spolis and p.npolis=u.npolis;
left join hediag h on chrtran(alltrim(u.ds),'.','')==alltrim(h.code)


такой код взамен этого селекта
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create cursor result (agep I, ds C(5), CheckMKB L null)
sele pacient 
scan
   sele usl
   scan for pacient.spolis=usl.spolis and pacient.npolis=usl.npolis
       sele hediag
       llInsert = .F.
       scan for chrtran(alltrim(usl.ds),'.','')==alltrim(hediag.code)
            insert into result values (pacient.agep, usl.ds, CheckMKB(pacient.agep, hediag.compr, hediag.age))
            llInsert = .T.
       endscan
       if !llInsert
            insert into result values (pacient.agep, usl.ds, .NULL.)
       endif
   endscan
endscan
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021819
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991выдают ошибку field checkMKB does not accept null values
да, забыл указать что NULL можно. Это так пишется:
Код: sql
1.
create cursor result (agep I, ds C(5), CheckMKB L null)
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021828
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, Вот этот код проверяет соответствие кода МКБ возрасту пациента? у меня в результате выдает "Неизвестное условие" раз 6-7. я сам запутался уже.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create cursor result (agep I, ds C(5), CheckMKB L null)
sele pacient 
scan
   sele usl
   scan for pacient.spolis=usl.spolis and pacient.npolis=usl.npolis
       sele hediag
       llInsert = .F.
       scan for chrtran(alltrim(usl.ds),'.','')==alltrim(hediag.code)
            insert into result values (pacient.agep, usl.ds, CheckMKB(pacient.agep, hediag.compr, hediag.age))
            llInsert = .T.
       endscan
       if !llInsert
            insert into result values (pacient.agep, usl.ds, .NULL.)
       endif
   endscan
endscan
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021860
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991Dima T, Вот этот код проверяет соответствие кода МКБ возрасту пациента? у меня в результате выдает "Неизвестное условие" раз 6-7. я сам запутался уже.

Про МКБ не задумывался. Я смутно понимаю чего ты там вообще делаешь.
Я повторил тебе тоже что делает select, чтоб тебе понятней было. Т.е. то же самое, только по другому, с помощью SCAN ... ENDSCAN. Смотри логику и допиливай под свои нужды.
"Неизвестное условие" выдает функция CheckMKB() это значит что ты туда передал такое условие которое она не знает, т.е. надо там дописать соответствующий CASE для обработки данного условия.
...
Рейтинг: 0 / 0
проверить соответствие кода
    #38021932
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, как я понимаю твой код проверяет только возраст пациента.. но мне нужно код МКБ проверять. я сам не до конца понимаю логику. случай или услуга соответствует пациенту ведь. нужно в общем проверить соответствие кода МКБ если для услуги это поле usl.ds возрасту этого пациента. А в hediag описано какой код МКБ в какому возрасту соответствует
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 2 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / проверить соответствие кода
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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