Different results depending on how properties are read in expressions

Last update: 4 August 2017

Different results depending on how properties are read in expressions

When properties of objects are read in Fabasoft expressions and then used as in-parameters for methods different results can appear depending on the way the properties are read.

  • Option 1: Reading the property via
    %3Cobject%20allow%3D%22autoplay%22%3E.%3A%20The%20attribute%20definition%20of%20the%20target%20attribute%20is%20regarded%3C%2Fobject%3E
    This embed will serve content from youtube.com. You find further information concerning the treatment of user data in the Privacy Policy of YouTube.
  • Option 2: Reading the property via
    %3Cobject%20allow%3D%22autoplay%22%3E.GetAttributeValue%28%2C%20%29%3A%20Due%20to%20technical%20reasons%20the%20attribute%20definition%20cannot%20be%20regarded%3C%2Fobject%3E
    This embed will serve content from youtube.com. You find further information concerning the treatment of user data in the Privacy Policy of YouTube.

This behavior has practical consequences especially when DATETIME-properties are read as the attribute definition defines whether date and time are stored in local time or UTC.

Example: COO.10.7715.3.7602.TESTSWC@10.7715:testdate was set to 31.12.2008 in GUI.

Reading the property via option 1 and formatting via COOSYSTEM@1.1:Format(...) :

coort.Trace(COOSYSTEM@1.1:Format(COO.10.7715.3.7602.TESTSWC@10.7715:testdate, "yymmdd")[4]);

returns 090101

Reading the property via option 2 and formatting:

coort.Trace(COOSYSTEM@1.1:Format(COO.10.7715.3.7602.GetAttributeValue(cootx, "TESTSWC@10.7715:testdate",0), "yymmdd")[4]);

returns 081231.

The technical background is that the Fabasoft kernel is not able to determine the underlying attribute definition (including the property “Disable Conversion”) and therefore treats the DATETIME value like any value returned from an external ActiveX call.

Conclusio: Reading properties in expressions should be done via option 1 (

%3Cobject%20allow%3D%22autoplay%22%3E.%29%20whenever%20possible.%20If%20it%20is%20by%20any%20reason%20absolutely%20necessary%20to%20use%20option%202%20an%20explicit%20typecast%20to%20the%20desired%20attribute%20definition%20has%20to%20be%20used.%20For%20the%20example%20listed%20above%20this%20would%20look%20like%20the%20following%3A%3C%2Fobject%3E
This embed will serve content from youtube.com. You find further information concerning the treatment of user data in the Privacy Policy of YouTube.
coort.Trace(COOSYSTEM@1.1:Format(TESTSWC@10.7715:testdate(COO.10.7715.3.7602.GetAttributeValue(cootx, "TESTSWC@10.7715:testdate",0)), "yymmdd")[4]);