cAFVBI02 ; Input van een koppelbestand;cAFVBI01 ; ; INPUTK(Q,INPUT,GRID,REFKL,B1,B2,PAR,PARAM,FWHERE,DATEFM,QTD) ; Input koppelbestand ; Input: zie INPUTN^cAFVBI01 ; ; Belangrijkste parameters: ; ========================= ; REFKL: Referentie-klasse zoeksleutel ; PAR: Parameters gescheiden door "~" ; 1. indien 1 en een ID doorgekregen : toch met volledig SQL naar buiten ; 2. indien 1 : er wordt met zowel operationele als buitengebruik rekeningen gehouden ; 3. Output= GridId van mtemp99 met correcte UI1's ; 4. Input = GridId van mtemp99 met verschillende inputwaardes ; 5. Gekoppelde bestanden: gescheiden door # ; 1. Via gekoppelde zoeksleutel x (1 of 2) (default = 1) ; 2. Vaste waarde andere zoeksleutel dan in 2 ; 3. Skip check op gekoppeld bestand (opgeroepen vanuit INPUTK) ; ; Output: zie INPUTN^cAFVBI01 N R,i,KL,RES,DEL,GRIDID,VZS,FZS,PROP,EXFW,FWH,COL S $ZT="TRAP^cAN000" ; ; Controle parameters INPUTK1 F i="Q","INPUT","GRID","REFKL","B1","B2","PAR","PARAM","FWHERE","DATEFM","QTD" S @i=$G(@i) S R=0 I '$L(INPUT)!'$L(REFKL) G INPUTKZ ; ; Mogelijke ID's bepalen aan de hand van de input INPUTK3 S DEL="~" X "S KL=##class("_REFKL_").%New()" S KL.Q=$G(Q),KL.QU=$G(QU),KL.QT=$G(QT) S RES=KL.Input(Q,INPUT,"","","",DEL_DEL_1_DEL_1,"",QTD) D KL.%Close() S KL="" S GRIDID=$P(RES,D,2),BIND=$P(RES,D,3) ; ; Check gevonden ID's INPUTK5 I '$L(GRIDID) S R="0" G INPUTKZ I '$D(^mtemp99(GRIDID)) S R="0" G INPUTKZ ; ; Met gevonden ID's hoofdklasse doorzoeken INPUTK6 S VZS=$P($P(PAR,DEL,5),"#") S:'$L(VZS) VZS=1 ; VZS = Via zoeksleutel S FZS=$P($P(PAR,DEL,5),"#",2) I $L($G(FZS)) G INPUTK65 ; FZS = Fixed zoeksleutel S R=..Input(Q,$S(VZS=2:"+",1:"")_GRIDID,GRID,"",PARAM,DEL_DEL_DEL_DEL_1_DEL_"##1",FWHERE,QTD) G INPUTK7 ; ; Vaste zoeksleutel (één deel van het gekoppelde bestand is vast) INPUTK65 S PROP=$P(..BIndexToProperty($S(VZS=2:B2,1:B1)),D,2) S EXFW="(T1."_PROP_" IN (SELECT TEMP.TempId FROM Tech.Temp WHERE GRIDID='"_GRIDID_"'))" S FWH=$S($L($P(FWHERE,D)):$P(FWHERE,D)_" AND "_EXFW,1:EXFW) S R=..Input(Q,$S(VZS=2:"",1:"+")_FZS,GRID,"",PARAM,DEL_DEL_DEL_DEL_DEL_VZS_"#"_FZS_"#1",FWH,QTD) I +R=1 S $P(R,D,3)=$$REPL^cAFA10($P(R,D,3),FWH,FWHERE) ; ; Tijdelijke tabel opkuisen INPUTK7 K ^mtemp99(GRIDID) ; ; Kolom opzoeken in grid INPUTK8 I +R'=2 G INPUTKZ S $P(R,D,2)=$S($E(INPUT)="+":$E(INPUT,2,$L(INPUT)),1:INPUT) S COL=$P(..BIndexToProperty($S(VZS=2:B2,1:B1)),D,2),COL=COL_"->"_$$ZKSL(REFKL,,QTD,BIND) S $P(R,D,3)=$$GRIDKOL^cAFVBI01(GRID,COL) I '$L($P(R,D,3)) S R=0 ; INPUTKZ Q R ; ; ******************************************************************************* ; H U L P - F U N C T I E S ; ******************************************************************************* ; KOPPEL(KLASSE,ZSPROP,ZS,QTD) ; Is klasse een koppelbestand? ; Input: KLASSE: Naam van de klasse ; ; << Optioneel >> ; ZSPROP: Property zoeksleutel ; Indien niet doorgegeven wordt deze zelf bepaald ; ZS: Zoeksleutel 1 of 2 ; QTD: Taal gebruiker ; Enkel van toepassing indien zoeksleutel niet is doorgegeven ; ; Output: R ; 0: Geen koppelbestand ; 1: Koppelbestand ; N (Q,KLASSE,ZSPROP,ZS,QT,QTD) S $ZT="TRAP^cAN000" ; KOPPEL1 S R=0 I $P($G(KLASSE),".")'="Prog" G KOPPELZ I $L($G(ZSPROP)) G KOPPEL9 ; ; Zoeksleutel-property bepalen KOPPEL2 S D="\" D QTD^cAFVBI01 S ZSPROP=$$ZKSL(KLASSE,$G(ZS,1),QTD) I '$L(ZSPROP) G KOPPELZ ; ; Property-type bepalen van zoeksleutel-property KOPPEL9 S FieldRef=##CLASS(%Dictionary.PropertyDefinition).%OpenId(KLASSE_"||"_ZSPROP,0) I '$L(FieldRef) G KOPPELZ S REFKL=FieldRef.Type D FieldRef.%Close() S FieldRef="" S R=($P(REFKL,".")="Prog") I R S R=R_"\"_REFKL ; KOPPELZ Q R ; ZKSL(KL,TYPE,QTD,ZK) ; Zoeksleutel-property van de doorgegeven klasse ; Input: KL: Klassenaam ; TYPE: 1 = Zoeksleutel 1 ; 2 = Zoeksleutel 2 ; QTD: Taal gebruiker ; ZK: ; B-index zoeksleutel ; ; Output: Property van de gevraagde zoeksleutel N i,K1,DMS,UQC,USC,B1,B2,SK,DMS S $ZT="TRAP^cAN000" ; ; Zoeksleutel doorgegeven? I $L($G(ZK)) G ZKSL4 I '$L($G(TYPE)) S TYPE=1 ; ; Zoeksleutel uit klasse ZKSL1 S (ZK,DMS)="" S K1=##class(%Dictionary.ClassDefinition).%OpenId(KL) I '$L(K1) G ZKSLZ F i=1:1:(K1.Parameters.Count()) D Q:($L(ZK)&$L(DMS)) . I K1.Parameters.GetAt(i).Name=("dmBISearchKey"_TYPE) S ZK=K1.Parameters.GetAt(i).Default . I K1.Parameters.GetAt(i).Name=("dmDMS") S DMS=K1.Parameters.GetAt(i).Default D K1.%Close() S K1="" D SEARCHK^cAFVBI01(.SK,ZK,,$G(QTD,QT)) S ZK=SK(1) ; ; Zoeksleutel uit ^DMC ZKSL2 G:$L(ZK) ZKSL4 I '$L(DMS) G ZKSLZ D DMS^cAN000("UQC","USC",DMS,1) I '$L(UQC)!'$L(USC) G ZKSLZ I '$D(^DMC(UQC,USC)) G ZKSLZ F i=1,2 I '$L($G(@("B"_i))) S @("B"_i)=$G(^DMC(UQC,USC,"EXTERN","INPUT","BIN",i)) D SEARCHK^cAFVBI01(.SK,B1,B2,$G(QTD,QT)) S ZK=SK(TYPE) I '$L(ZK) G ZKSLZ ; ; Property bepalen aan de hand van B-index ZKSL4 X "S K1=##class("_KL_").%New()" S ZK=$P(K1.BIndexToProperty(ZK),D,2) D K1.%Close() S K1="" ; ZKSLZ Q ZK ; FWH(KL,ZS,INP) ; Fixed where-statement voor de selectiegrid (vaste zoeksleutel) ; Input: KL: Klassenaam ; ZS: Zoeksleutel (1 of 2) ; INP: Waarde zoeksleutel ; ; Output: Fixed where-statement op zoeksleutel N FWH,BIND S $ZT="^dmERROR" ; FWH1 I '$L($G(INP)) S FWH="" G FWHZ S BIND=$$ZKSL($G(KL),$G(ZS)) I '$L(BIND) S FWH="" G FWHZ S FWH="%ALPHAUP(T1."_BIND_")=%ALPHAUP('"_INP_"')" ; FWHZ Q FWH ; ; TIME(R) ; Performantie-test van de KOPPEL-functie ; Input: R: Aantal x functie uit te voeren? ; Default = 10 N i,T1,T2 S $ZT="TRAP^cAN000" ; ; Controle parameters TIME1 I '$L($G(R)) S R=10 ; ; KOPPEL-functie x-aantal keer uitvoeren TIME2 S T1=$P($ZTIMESTAMP,",",2) ; Start F i=0:1:R D KOPPEL($S(i#2:"Prog.Prod.PrLe",1:"Prog.Kla.Kl")) S T2=$P($ZTIMESTAMP,",",2) ; Stop ; ; Output TIME3 W !,i,"x: ",T2-T1 ; TIMEZ Q ; ; ZZ ; 29.08.07 - 10 u 22 * V8.09