zMypropertyGetSwizzled(%this) public {
If $zobjval(,/*i% Myproperty */163,0,3,163)="" Quit ""
Set oref=##class( OtherClass ).%Open($select($zobjval(,/*i%Myproperty*/163,0,3,163)="":"",1:$listbuild($zobjval(,/*i% Myproperty */163,0,3,163)_""))) If oref="" Quit ""
Set modstate=$zobjval(,0) Set $zobjval(,/*r%Myproperty*/164,0,3,164)=oref Set $zobjval(,0)=$e(modstate,1,$l(modstate)\2)_$e($zobjval(,0),$l(modstate)\2+1,*)
Quit oref }

class myClass extends (%persisten)

{

Property Someproperty As %String;

...

Property Myproperty1 As   OtherClass1;

Property Myproperty2 As  OtherClass2;

... some more other property total 215 properties in this class

}

class OtherClass1 extends (%persisten)

{

Property OtherClass1Property As %String;

}

ClassMethod myfuct( id) As %String

{

set ref=##class(myClass).%OpenId(id)

set str="my return: "_ref.Myproperty1.OtherClass1Property

quit str

}

Above is a  similar situation and codes. When myfuct is called, sometimes it throws a  <INVALID OREF> zMypropertyGetSwizzled+3^myClass.2

myClass is  a very busy table.

Thanks. I will try that next Week.

Our client's admin removed the sql access of the web users. And web users need to get to an excel report generated by the sql statement. Now I have to write a function that create the file and put it onto the system, so the web user can still get it via email. But I need to use the same order of columns as in the query itself.