Eliminazione record in uso in altre tabelle

FileMaker è un database relazionale. Vediamo come...

Moderatore: Moderatori

Rispondi
stefanohpe
Messaggi: 13
Iscritto il: venerdì 3 aprile 2020, 14:30
Versione FileMaker: 17
Sistema operativo: catilina

Eliminazione record in uso in altre tabelle

Messaggio da stefanohpe » venerdì 3 aprile 2020, 14:37

Buon pomeriggio a tutti, sono al mio primo forum question e spero di riuscire a trovare una solzuione.

ho due tabelle, legate tra di loro con una relazione. se dovessi cancellare un record dal tabella A che però ha delle istante nella tabella B, c'è una funzione di filemaker che mi impedisce o mi avvisa che quel record è in uso in un'altra tabella?

grazie mille per l'aiuto.

stefano

Avatar utente
fabio.beri
Messaggi: 1958
Iscritto il: sabato 4 ottobre 2014, 16:24
Versione FileMaker: 2023
Sistema operativo: Win/Mac

Re: Eliminazione record in uso in altre tabelle

Messaggio da fabio.beri » venerdì 3 aprile 2020, 14:50

Buon pomeriggio. In uso, significa usato da un altro utente, quindi la cancellazione dalla tabella A viene impossibilitata e comunicata da FileMaker se uno dei records in B viene bloccato da un utente.

Tutto questo se nella relazione tra i due, è stato impostato il flag "elimina records correlati se viene eliminato il record master..." o frase similare, perché adesso non mi ritrovo la frase esatta davanti a me.
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19

Omnia Studio

-----------------------------------------
http://tinyurl.com/omniagest2024

stefanohpe
Messaggi: 13
Iscritto il: venerdì 3 aprile 2020, 14:30
Versione FileMaker: 17
Sistema operativo: catilina

Re: Eliminazione record in uso in altre tabelle

Messaggio da stefanohpe » venerdì 3 aprile 2020, 18:12

Grazie per la risposta, per in. uso intendo questo a titolo di esempio:

tabella A: Nome Squadra di basket
Tabella B: Giocatori squadra di basket

le due tabelle sono in relazione mediante un campo ID_Squadra

se cancello un giocatore dalla tabella B, nessun problema

se però cancello una squadra dalla ta bella A e nella tabella B ci sono gocatori di quella squadra, il programma mi avvisa? mi dice che è impossibile cancellare la squadra per che ci sono record correlati? oppure la cancella e la tabella B rimane con campi senza corrispondenza nella tabella A?

grazie mille

meccanico91
Messaggi: 104
Iscritto il: venerdì 13 novembre 2009, 13:13
Versione FileMaker: FM 14Ad
Sistema operativo: OS X

Re: Eliminazione record in uso in altre tabelle

Messaggio da meccanico91 » venerdì 3 aprile 2020, 21:20

oppure la cancella e la tabella B rimane con campi senza corrispondenza nella tabella A?
E già, accade proprio così...
Per ovviare a questo, la soluzione più semplice è applicare al pulsante, che elimina la tua "tabella A: Nome Squadra di basket", l'istruzione script: Vai al record correlato. Quindi, se trova il record correlato gli dici che non puoi eliminare la tabella A ;)

Ciao

stefanohpe
Messaggi: 13
Iscritto il: venerdì 3 aprile 2020, 14:30
Versione FileMaker: 17
Sistema operativo: catilina

Re: Eliminazione record in uso in altre tabelle

Messaggio da stefanohpe » sabato 4 aprile 2020, 0:08

sei stato preziosissimo :-)

ho creato il pulsante, ho detto vai a record correlati e mi apre un altra finestra con quei record... come devo scrivere però lo script, che mi hai suggerito?

certo che se mi aiutassi a scriverlo...sarebbe il top :roll: :D

meccanico91
Messaggi: 104
Iscritto il: venerdì 13 novembre 2009, 13:13
Versione FileMaker: FM 14Ad
Sistema operativo: OS X

Re: Eliminazione record in uso in altre tabelle

Messaggio da meccanico91 » sabato 4 aprile 2020, 9:07

Nota che al punto 1 Mostra record usando il formato: lascia pure il formato corrente perché non è necessario l'aperture di nuove finestre. ;)

Ciao
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

stefanohpe
Messaggi: 13
Iscritto il: venerdì 3 aprile 2020, 14:30
Versione FileMaker: 17
Sistema operativo: catilina

Re: Eliminazione record in uso in altre tabelle

Messaggio da stefanohpe » lunedì 6 aprile 2020, 8:57

Grazie mille, ho provato, ma sicuramente sbaglio in qualche passaggio o forse sbaglio proprio nella struttura del programma.
Ti spiego meglio con un esempio concreto:

Ho due tabelle, Alunni e Presenze, in relazione con una chiava primaria, dove nella tabella presenze, riporto l'ID dell'allievo e la data.
Relazione.png
Ho un formato Alunni, dove vedo, inserisco, modifico e cancello gli alunni
Alunni.png
Ho una tabella Presenze dove inserisco le presenze degli allievi.


Il mio problema è, con un pulsante, cancellare gli allievi dalla tabella Allievi ma verificando prima che questi non risultino nella tabella presenze.
al pulsante che vedi nella tabella allievi, ho associato lo script che tu mi hai suggerito, ma non funziona.
Se infatti inserisco nello script all'istruzione "Da Tablla", specifico "Alunni", lo script funziona ma la condizione sarà sempre vera perche cerca l'allievo nella tabella allievi e non nella tabella presenze
Se invece inserisco nello script all'istruzione "Da Tablla", specifico "Presenze", lo script non funziona e mi appare il seguente messaggio.
errore.png
con il classico Visual Studio, avrei utilizzato una semplice istruzione SQL "Select * from Presenze where Alunni.chiaveprimaria = Presenze.Allievo_id", se trovava risultati, allora non cancella vo.

qui dove sto sbagliando?

scusami veramente per ldomande che ti sembreranno sciocche, ma passare da un sistema ad un altro...non è facile.

Grazie mille
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

meccanico91
Messaggi: 104
Iscritto il: venerdì 13 novembre 2009, 13:13
Versione FileMaker: FM 14Ad
Sistema operativo: OS X

Re: Eliminazione record in uso in altre tabelle

Messaggio da meccanico91 » lunedì 6 aprile 2020, 11:30

E' sbagliata la Relazione tra Alunni e Presenze. E' fondamentale questo primo passaggio perché ti permette di collegare le tabelle che hai costruito e quelle che costruirai in seguito, di creare Resoconti di aggregare i dati nei Portali...
Mandami un messaggio in privato, se vuoi, e sopratutto non ti sconfortare ;)

Ciao

Rispondi