lunedì 1 ottobre 2012

While select Vs Query run

In questo breve post vedremo come simulare il comportamento di un query run tramite costrutto while select. Supponiamo di avere il seguente scenario:
Abbiamo una dialog che seleziona un filtro (per esempio CustTable.CustAccount). Ci viene chiesto di modificarne il comportamento come segue:

  • Se viene specificato un valore filtra per quel valore
  • Se NON viene specificato nessun valore prendi tutti i CustAccount

Una richiesta del genere ci costringerebbe a modificare il fremowork della query introducendo il pulsante "seleziona" come da standard AX. Per fortuna, in questo particolare caso, possiamo aggirare il problema modificando leggermente la while select come segue:

 while select CustTable  
   where (CustTable.AccountNum == custAccount || ! custAccount)  
 {  
    //...  
 }   

Dove custAccount è il valore del campo letto dalla dialog. Con questo piccolo trucchetto la nostra while select ciclerà tutti i record di custTable se nessun account cliente viene specificato!