03-02-2020, 07:46 AM
Try: at first get rows, then for each row gets columns.
int w=win("Siemens Healthineers" "*.Window.*")
Acc a.Find(w "TABLE" "timelineGrid" "class=*.Window.*[]wfName=timelineGrid" 0x1005)
ARRAY(Acc) rows cols
a.GetChildObjects(rows 0) ;;get rows (level 0)
DateTime CurrentExamDate DateTimeDifference SearchExamDate
str CurrentExamType
out
str strStatus
str strMainStudy strAccession
int row col
for row 0 rows.len ;;for each row
,rows[row].GetChildObjects(cols 0)
,Acc& r=cols[2]
,str name
,name=r.Name
,str value=r.Value
,CurrentExamType=value
,CurrentExamType.left(CurrentExamType, 10)
,out F"{name} {value}"
,
,&r=cols[3]
,name=r.Name
,value=r.Value
,CurrentExamDate.FromStr(value)
,out F"{name} {value}"
,
,&r=cols[4]
,name=r.Name
,value=r.Value
,strStatus=value
,out F"{name} {value}"
,;
,;
,&r=cols[9]
,name=r.Name
,value=r.Value
,strMainStudy=value
,out F"{name} {value}"
,
,if strMainStudy="True"
,,out F"{CurrentExamType} {CurrentExamDate.ToStr}"
,,break
,,
,&r=cols[10]
,name=r.Name
,value=r.Value
,strAccession=value
,out F"{name} {value}"
,
,
str SearchExamType
;
;;;RUN THE LOOP A SECOND TIME FOR ALL STUDIES BUT THE CURRENT ONE
for row 0 rows.len ;;for each row
,rows[row].GetChildObjects(cols 0)
,&r=cols[2]
,name=r.Name
,value=r.Value
,SearchExamType=value
,SearchExamType.left(SearchExamType, 10)
,out F"{name} {value}"
,
,&r=cols[3]
,name=r.Name
,value=r.Value
,SearchExamDate.FromStr(value)
,out F"{name} {value}"
,
,&r=cols[4]
,name=r.Name
,value=r.Value
,strStatus=value
,out F"{name} {value}"
,;
,;
,&r=cols[9]
,name=r.Name
,value=r.Value
,strMainStudy=value
,out F"{name} {value}"
,
,if strMainStudy="True"
,,continue
,,
,&r=cols[10]
,name=r.Name
,value=r.Value
,strAccession=value
,out F"{name} {value}"