English
Instant Developer Foundation Documentazione
  • Tutorial applicazioni web
  • Scriviamo del codice

Ciclare una collection di documenti

link
<< Video precedente
Apri in una finestra a tutto schermo.
Video successivo >>

Trascrizione

Facciamo il punto della applicazione, o meglio del codice in sospeso:

  • Prezzo.calcolaPrezzo.
  • Appartamenti.ServizioDuplicati.
  • Prenotazione.CalcolaTotaleServizi.

Partiamo dal più semplice: calcolaTotaleServizi.

Esiste una istruzione denominata for each che consente l’iterazione di elementi di tipo Collection o di tipo Recordset: gli oggetti recordset sono un insieme di dati in arrivo dal database che non sono gestiti in modalità documentale.

Siccome nel metodo noi dobbiamo ciclare gli elementi della collection PrenotazioneServizi e fare una sommatoria usiamo l’istruzione for each.

Quando digitiamo l’istruzione compare il blocco relativo ai recordset, noi premiamo subito la barra spaziatrice e troviamo la collection da ciclare.

Ecco allora l’istruzione corretta.

For each PrenotazioneServizi recRiga of PrenotazioneServizi {
totServizi = totServizi + recRiga.Totale
}

Ad ogni iterazione la variabile recRiga rappresenterà l’elemento puntato e ne potremo recuperare i valori delle proprietà: l’iterazione si conclude quando si arriva all’ultimo elemento della collection.

L’istruzione come potete notare è la classica operazione presente anche in altri linguaggi per l’iterazione di liste.

Sistemiamo anche l’altro metodo Appartamenti.ServizioDuplicati: qui dobbiamo ciclare la collection ServiziAppartamenti e trovare se ci sono IdServizi duplicati; ci facciamo aiutare da un altro oggetto precisamente da un oggetto array che in Foundation è denominato IDArray: quindi cicliamo la collection, vediamo se idServizio non è nell’array lo aggiungiamo, se invece è già presente segnaliamo l’errore.

IDArray arElementi = null
arElementi = new()
for each ServiziAppartamenti recRigo {
if (length(recRigo.idServizio) != 0) {
if (arElementi.find (recRigo.idServizio) = -1) {
arElement.addValue(recRigo.idServizio)
Else {
bDuplicati = true
break
}
}
}

Ed in ultimo la funzione calcolaPrezzo() l’algoritmo era un po’ lungo così l ho gia scritto, analizziamolo insieme.

Quando dobbiamo recuperare il prezzo? nella EndTransaction del documento Prenotazione.

Quindi sarà:

event Prezzo.onEndTransaction {
if wasmodified(IdAppartamento or Arrivo or Partenza) {
TotaleSoggiorno = Prezzo.calcolaPrezzo(idAppartamento, Arrivo, Partenza)
loadCollectionFromDb(PrenotazioneServizio)
for each PrenotazioneServizio recRigo
recRigo.recuperaPrezzo()
recRigo.calcolaRigo()
}
calcolaTotale();
}

}

Mandiamo in esecuzione e testiamo l’applicazione.

Ultima modifica: 21/10/2020 / Validità: da 20.5.8000

Ti serve altro aiuto?

Consulta il Forum

Vedi anche

    Scarica il progetto di esempio You Bb Project.zip