Rino; filemaker 18 e 19 su Monterey; MBS per email

Rino; filemaker 18 e 19 su Monterey; MBS per email

Categoria:
0
0

Buongiorno
seguendo il corso "Lavorare con JSON in Filemaker" acquistato su Udemy, ho difficoltà a effettuare un array NON partendo da un portale.(il portale -se non erro- contiene max 1000 righe) ma mantengo i dati in una variabile globale.
Ho un campo (che è un record nella vista lista di FM proveniente da una delle tabelle costituenti il file di FM) che contiene (es.) ID_record-mittente-destinatario-..ecc  e quando clicco sul  campo  uno script costruisce una variabile globale (con un ID per ogni selezione (Get ( IDRecord ))
Dovendo in seguito inviare tali dati a email diverse in successione e dovendo anche avere la possibilità di eliminare o aggiungere dati in selezione prima dell'invio, ho pensato di usare JSON per una più rapida e solida organizzazione dei dati.
Al minuto 32:30 della parte 3° del corso la costruzione dell'array deriva da campi in un portale.
Vorrei invece che ad ogni selezione di campo la definizione della relativa variabile fosse un array del JSON ma, a differenza dell'esempio del corso al minuto di cui sopra, NON ho campi ma variabili.
Seguendo il corso ho costruito quanto insegnato ma al momento della validazione di FM della dichiarazione dell'array FM mi restituisce il messaggio di errore che ho allegato insieme alla dichiarazione.
Ho in precedenza inserito sia la variabile JSON = "{}" e ho definito $array= "[]" e dopo ho impostato la variabile $JSON = "JSONSetElement ( $JSON ; ["ID";$$ID;2];["daticond";$$Daticond;1])".
In seguito ho costruito l'array come da allegato.
Non riesco a trovare differenze tra il corso e quello da me impostato se non l'uso di variabili al posto dei campi portale.
E’ possibile avere un aiuto/consiglio per risolvere quanto sopra?
Grazie mille

Allegati:
Segnalato come spam
Pubblicato da (Domande: 5, Risposte: 4)
Domandato il 28 Aprile 2023 11:54
35 visualizzazioni
0
Domanda privata

Buongiorno, Rino.

La struttura che mi descrivi non mi è chiarissima ma provo a reimpostare la questione: ti serve un array all'interno di un JSON vuoto. In realtà non cambierebbe molto anche con JSON pieno, ma per semplicità lo scegliamo vuoto. La prima cosa che ti conviene fare è selezionare una chiave a cui associare l'array come valore (per maggiore semplicità di utilizzo): chiamamola "mail".

Quindi hai due elementi: la chiave e il valore che le vuoi dare. Diciamo per assurdo che sia un solo valore. in questo caso ti basterebbe un calcolo del tipo:

Dichiara(
[J= JSONSetElement ( "" ; ["chiave"; "valore";1]; ["chiave2"; "valore2";1]; ["chiave3"; 3;2]); JSONSetElement ( "" ; "mail" ; J ; 3 )
)

tuttavia, vuoi un array, quindi devi capire quante oggetti hai all'interno della tua chiave. Lo puoi capire con la funzione JSONListKeys(), nell'esempio specifico:

JSONListKeys ( $json ; "mail" )

JSONListKeys ti restituisce una lista con i numeri degli oggetti presenti, partendo da 0.

In questo caso la funzione più diretta potrebbe essere qualcosa del genere:

Dichiara([
J= JSONSetElement ( "" ; ["chiave"; "valore";1]; ["chiave2"; "valore2";1]; ["chiave3"; "valore3";1]);
// l'oggetto che devi aggiungere ogni volta

JJ=$json;
//Il Json su cui stai lavorando, che è anche la variabile che viene popolata da questo calcolo

m_=JSONListKeys ( JJ ; "mail" );
// quanti oggetti contiene la chiave mail nell'oggetto su cui stai lavorando

l_=ricavacomenumero(ValoriaDestra (m_;1))
//L'ultimo numero da M_ utilizzato

i_= if(evuoto(m_); 0; l_+1)
//il valore da utilizzare. se m_ è vuoto significa che non ci sono chiavi, quindi si parte da 0

];

JSONSetElement ( JJ ; "mail["& i_ & "]" ; J ; 3 )

//aggiungi un nuovo valore alla chiave mail, il cui numero è il primo libero

)

Non so se è chiaro, facci sapere!

.g.

 

Segnalata come spam
Pubblicato da (Domande: 0, Risposte: 1488)
Risposto il 28 Aprile 2023 21:37
0
Domanda privata

Buongiorno

grazie per la velocissima risposta...

Provo a seguire la procedura che mi hai indicato e ti comunico il risultato.

Grazie ancora

Rino

 

Segnalata come spam
Pubblicato da (Domande: 5, Risposte: 4)
Risposto il 29 Aprile 2023 13:06