martedì 13 novembre 2012

Ciclo sui record di un datasource

Molto spesso è utile dover elaborare dei record selezionati  in un form dall'utente, filtrati secondo filtri custum. Ovviamente tale informazione è contenuta nel datasource del fom. Ecco un esempio di codice che cicla i record del listino prezzi selezionati dall'utente ed aggiorna il campo FomDate con la data odierna:

 public void setToDate()  
 {  
   PriceDiscTable   PriceDiscTableOrig;  
   Common       common;  
   ;  
   ttsBegin;  
   for(common = PriceDiscTableDS.getFirst(true)?PriceDiscTableDS.getFirst(true):PriceDiscTableDS.cursor();common; common = PriceDiscTableDS.getNext())  
   {  
     PriceDiscTableOrig = PriceDiscTable::findRecId(common.RecId, true);  
     PriceDiscTableOrig.ToDate = today() ;  
     PriceDiscTableOrig.update();  
   }  
   ttsCommit;  
 }  


Importante la chiamata al metodo find per ottenere il buffer, altrimenti continueremmo a lavorare a livello di datasource perdendo le modifiche. Quando la procedura termina si deve chiamare il refresh del datasource per vedere le modifiche.

Nessun commento:

Posta un commento