elimina record multipli

Utilizzo dei portali in un database FileMaker

Moderatore: Moderatori

Rispondi
fmstb
Messaggi: 395
Iscritto il: sabato 24 maggio 2008, 2:00
Versione FileMaker: 16
Sistema operativo: Windows 10

elimina record multipli

Messaggio da fmstb » giovedì 18 aprile 2019, 14:01

su un portale ho messo in ogni riga criteri di cancellazione dei record della tabella DATI. Il portale è correlato con dati tramite questa relazione:
DATI:fk_remove X REMOVE::pk_remove
nel portale DATI vedo tutti i record di REMOVE

la tabella dati viene svuotata molto spesso, mentre i record del portale si aggiornano o crescono di numero. Più o meno mi serve come elaboratore di testi per eliminare sempre le stesse voci ripetute.

In ogni riga del portale ho messo un pulsante che si occupa di cancellare i record in DATI con i requisiti che imposto tramite campi che assegnano dei valori a variabili di ricerca.

Per non dover premere un pulsante per ogni riga ho fatto uno script che dovrebbe eseguire gli script per ogni riga del portale (ma non lo fa).

Sono certo che ci sono molti modi per fare questo, ma desidero risolvere comunque lo specifico problema e vorrei sapere dove sbaglio.
Il portale non è l'unico sulla tabella DATI quindi nello script devo dirgli di andare all'oggetto "REMOVE" - il nome del portale.

Consenti interruzione [Attivata]
Vai all’oggetto [nome oggetto: “remove”]
Vai alla riga del portale [seleziona: Attivata; primo]
Loop
Esegui script [specificata da elenco: “remove”; Parametro: ]
Vai alla riga del portale [selezione: attivata; Successivo; Esci dopo l’ultimo: attivata]
End loop


Che cosa sbaglio? Il pulsante sul portale funziona, lo script non fa fare nulla e finisce in un loop infinito – per questa ragione ho lasciato la possibilità di interromperlo.

fmstb
Messaggi: 395
Iscritto il: sabato 24 maggio 2008, 2:00
Versione FileMaker: 16
Sistema operativo: Windows 10

riformulo meglio

Messaggio da fmstb » martedì 23 aprile 2019, 8:51

Provo a riformulare la domanda in modo più semplice.
Ho un pulsante su ogni riga di portale. Il pulsante aziona uno script.
Quale è il modo corretto di fare uno script che attivi il pulsante per tutte le righe del portale e quindi per tutti i record presenti?
Lasciamo perdere l'azione e tutto il resto... solo vorrei vedere se sbaglio qualcosa alla radice. Se mi fate un esempio vi sarei grato.

io ho fatto un loop sulle righe di portale come ho descritto. Ho provato altri approcci, ma qualcosa mi sfugge perché mentre le righe funzionano correttamente, uno script che le attivi una alla volta invece non va.

Apotropaico
Messaggi: 3
Iscritto il: lunedì 4 gennaio 2016, 18:08
Versione FileMaker: 16 e 17
Sistema operativo: Windows 10 e Mac OSX 10.13

Re: elimina record multipli

Messaggio da Apotropaico » venerdì 10 maggio 2019, 13:44

Probabilmente il tuo script "remove" al termine delle sue operazioni esce dal portale, per cui il loop vorrebbe andare alla riga successiva, ma non essendo selezionato il portale, non ha alcuna riga a cui andare, andando in loop perché va sempre avanti a cercarne una (o qualcosa del genere). Prova a modificare lo script cosi:
- Come seconda riga crea una variabile $quanti valorizzata con Conteggio (REMOVE::pk_remove) in modo che ti conta il numero di record del portale
- Crea una variabile contatore $i che parta da 1 come terza riga
- Elimina Vai alla riga del portale [seleziona: Attivata; primo]
- dopo il "Loop" inserisci Vai alla riga del portale [seleziona: Attivata; per calcolo] usando $i come calcolo
- tra "Esegui script" e "Vai alla riga del portale" duplica "Vai all'oggetto"
- Togli Vai alla riga del portale [selezione: attivata; Successivo; Esci dopo l’ultimo: attivata]
- Metti "Imposta variabile" e imposti $i pari a $i+1
- Metti "Exit Loop If $i>$quanti"

Così dovrebbe funzionare.

Facci sapere

Rispondi