Relazioni e prenotazioni doppie in un residence

  • Guru Corner
  • Relazioni e prenotazioni doppie in un residence

Relazioni e prenotazioni doppie in un residence

0
0

Traendo spunto da una discussione comparsa su questo forum, ho pensato di
usare tre auto relazioni per verificare se nella tabella delle prenotazioni
di un residence ve ne siano alcune che si sovrappongono.

Ecco lo schema.

La Tabella “Prenotazioni” è così composta:

n. 4 campi che individuano la prenotazione:

DataArrivo (data), DataPartenza (data),
idAppartamento (testo ), iDPrenotazione (testo univoco)

n. 4 campi calcolati (usati nelle auto relazioni)

dArrivo=DataArrivo; dPartenza=DataPartenza; iD=iDPrenotazione; nApp=idAppartamento

n. 4 campi calcolati per il conteggio dei record trovati dalle 3 relazioni

conteggioR1=Conteggio(R1::nFile)
conteggioR2=Conteggio(R2::nFile)
conteggioR3=Conteggio(R3::nFile)
conteggioR=conteggioR1+conteggioR2+conteggioR3

Le 3 autorelazioni sono le seguenti:
R1
dA > dArrivo
dA < dPartenza
nApp = idAppartamento
iD idPrenotazione

R2
dP > dArrivo
dP <= dPartenza
nApp = idAppartamento
iD idPrenotazione

R3
da <= dArrivo
dP <= dPartenza
nApp = idAppartamento
iD idPrenotazione

———————————————————————

Avevo dei forti sull’uso dei campi calcolati che entrano a far parte delle
relazioni ma il metodo sembra funzionare correttamente.
Però c’è una anomalia.

Per verificare a vista la presenza di una sovrapposizione ho messo in un formato
della tabella “Prenotazioni” 3 portali, uno per ogni relazione.

Quando in un portale compare almeno un record, ovvero quando
una delle 3 relazioni trova almeno una corrispondenza, vi è una sovrapposizione
di prenotazioni.

Ho anche usato un campo con una formattazione condizionale calcolata come segue:

se Prenotazioni::conteggioR>0 (allora scrivi in rosso su fondo bianco)

Sia i portali che la formattazione condizionale funzionano come mi aspetto.

Ciò che non sembrano funzionare sono i campi calcolati:
conteggioR1
conteggioR2
conteggioR3
conteggioR4
conteggioR

Mentre in presenza di una sovrapposizione i portali riportano i record che si
sovrappongono (a quello corrente) i campi appena indicati, che dovrebbero
contare questi record, restano vuoti.
Anche la formattazione condizionata, che valuta questi campi
che appaiono vuoti, funziona correttamente.
Da una parte FileMaker mi mostra dei campi che sembrano vuoti, e che non
dovrebbero esserlo, e dall’altra li calcola non come sembrano ma come
dovrebbero essere.

Le damande che mi pongo sono queste:
Anche se il tutto sembra funzionare correttamente,
è lecito l’uso che ho fatto dei campi calcolati nelle relazioni?
Se non è lecito, in quale altro modo si potrebbe fare?
E’ possibile che il comportamento anomalo dei campi “conteggio” sia dovuto
al cattivo uso delle relazioni?
Grazie.

Segnalato come spam
Pubblicata da (Domande: 6, Risposte: 8)
Domanda inviata 14 Giugno 2015 17:26
38 vis.
0
Domanda privata

Mi rendo conto di alcune imprecisioni dovute ad alcuni refusi nella schematizzazione del mio programma.
Posso allegare un file compresso con l’archivio di FM?

Segnalata come spam
Pubblicata da (Domande: 6, Risposte: 8)
Risposta inviata 15 Giugno 2015 17:40
0
Domanda privata

ma cosa devono conteggiare, i campi in questione? cioè, nFile che campo è?

.g.

Segnalata come spam
Pubblicata da (Domande: 0, Risposte: 1544)
Risposta inviata 15 Giugno 2015 13:47
0
Domanda privata

Ciao Giulio,

hai ragione, i campi calcolati non servono, non so per quale ragione me li sono portati appresso, adesso li ho eliminati.

Per ciò che riguarda le relazioni, quelle che ho inserito sono sufficienti, la quarta del tuo elenco è infatti compresa nella prima e altre non ce ne sono.

Dopo le modifiche FM continua a comportarsi come prima, trova le sovrapposizioni ma i campi conteggio restano vuoti.

 

Segnalata come spam
Pubblicata da (Domande: 6, Risposte: 8)
Risposta inviata 14 Giugno 2015 21:46
0
Domanda privata

Buongiorno, Salvatore.

Inizio con il dire che se i campi calcolati sono IDENTICI a quelli in cui inserisci non ha senso usarli :)
come seconda cosa, mi sembra che ti manchi qualcosa; a te serve identificare:

– le prenotazioni il cui inizio è fra la data di inizio e la data di fine
– le prenotazioni la cui fine è fra la data di inizio e la data di fine
– le prenotazioni il cui inizio è prima della data di inizio e la cui fine è dopo la data di fine
– le prenotazioni il cui inizio è dopo la data di inizio e la cui fine è prima della data di fine.

minimo minimo ti manca una relazione :D
inoltre io non andrei di autorelazione, ma magari utilizzerei una tabella con campi globali per l’inserimento messa in relazione con le tabella prenotazioni.
Puoi tranquillamente utilizzare un campo calcolato in una relazione, a patto che sia indicizzato/indicizzabile.

a presto.

.g.

Segnalata come spam
Pubblicata da (Domande: 0, Risposte: 1544)
Risposta inviata 14 Giugno 2015 18:56