I found this sample code really helpful in connection with a customization,where the customer wanted to alter the 'Go to main table' function.
Respect to original poster (though I can't remember where I found it - but the idea is not mine)
On main datasource:
public void executeQuery()
{
 query                q;
 querybuilddatasource qbds;
 querybuildrange      qbr;
 int                  fldLookupField;
 str                  sLookupValue;
 ;
 if ( element.args().caller() &&
     !element.args().dataset() &&
      element.args().lookupField() &&
      element.args().lookupValue())   //jumpref
 {
     sLookupValue   =element.args().lookupValue();
     fldLookupField =element.args().lookupField();
     q=this.query();
     qbds=q.dataSourceTable(this.table());
     qbr=qbds.addRange(fldLookupField);
     qbr.value(sLookupValue);
     this.query(q);
 }
 super();
}
Tuesday, 17 February 2009
Friday, 13 February 2009
Invoking a method on a field in a form's datasource
I needed to call the modified method on a form's datasource's field to invoke the logic, which updated a couple of fields on the form. I had defaulted a value in the field on the table's initValue()-method but this - of course - means that the modified method is not in play.
Therefore I needed to call the method in code, for which I had two options, either calling the form controls method by setting AutoDeclaration to Yes and then calling modified or calling the datasource table's field's method which I chose.
e.g. ProdTable_ds.object(fieldnum(ProdTable, ItemId)).modified();
but where to place the code? After some time I found out that if I placed it on active() of the datasource the form showed the correct information.
/Happy hacking
Therefore I needed to call the method in code, for which I had two options, either calling the form controls method by setting AutoDeclaration to Yes and then calling modified or calling the datasource table's field's method which I chose.
e.g. ProdTable_ds.object(fieldnum(ProdTable, ItemId)).modified();
but where to place the code? After some time I found out that if I placed it on active() of the datasource the form showed the correct information.
/Happy hacking
Subscribe to:
Comments (Atom)