In effetti credo che la tua strada sia più o meno quella giusta....
Ma mi sono fermato già al primo ostacolo, l'immissione del dato del box.
Come dicevo il punto di partenza è necessariamente una query della query che mi dice i cani
effettivamente presenti nel canile.
Mi spiego un poco meglio. Allora in un'altra query tengo traccia come colonne a gruppi di
tre (ho previsto massimo 10 casi, 3x10 colonne), delle dichiarazioni del proprietario
riguardo al fatto che il cane è 1)deceduto, affidato, trasferito, etc etc con 2)data e 3)
nuova residenza del cane.
Poi per sapere lo stato attuale del cane unisco tutte le colonne della residenza in una
sola partendo dall'ultima alla prima inserendo una chiocciola per ogni campo. La formula è
questa:
unione: (IIf(IsNull([DATA_DECESSO_CANE]);"";" è deceduto@")) & (IIf(IsNull([10°
_STATUS]);"";[10°_STATUS] & "@")) & (IIf(IsNull([9°_STATUS]);"";[9°_STATUS] & "@"))
&...........fino a ..... & (IIf(IsNull([1°_STATUS]);"";[1°_STATUS] & "@")) & "@"
Alla fine ottengo espressioni tipo questa in una singola cella della colonna [UNIONE]:
S.Mauro Forte, Azienda Deufemia@Matera, Canile Argo, C.da Le Matinelle@Canile di Pisticci, C.da Lavandaio@
Da questa colonna creo una nuova colonna con la residenza presente nell'ultima dichiarazione del proprietario:
LAST: IIf([LAST]="è scomparso" Or [LAST]="è deceduto";"";Left([UNIONE];(InStr(1;[unione];"@")-1)))
in pratica conto quanti caratteri ci sono prima della chiocciola e stacco solo la stringa
corrispondende fatta di quei caratteri a partire da sinistra meno la chiocciola.
Chiaramente se è morto o è scomparso come residenza non ci deve scrivere niente.
E fin qui sembra funzionare bene.
Con la famosa query della query prendo dalla colonna LAST solo l'ID di quelle righe che
hanno Canile di Pisticci, C.da Lavandaio.
Cosi sò SEMPRE l'ID dei cani che effettivamente stanno nel canile e quindi nei box.
la query che chiamo [cani-in-box] ha un aspetto simile
ID-BOX- ...altri campi
23-R12
345-R30
1123-S14
R=rifugio S=Sanitario
L'ID è in relazione con l'ID dell'anagrafe generale (uno a molti)
Il BOX è quello della Tabella principale BOX.
L'intoppo:
Il gestore del canile vuole sapere nel momento in cui sostituisce il numero del box
qual'era il box vecchio.
Con la maschera di immissione dati inserendo l'ID mi appare anche il numero del box che
posso modificare. Tutto ok.
C'è un caso però dove purtroppo questo non va bene.
Esempio:
- il cane 345 è nel canile è sta nel box R30.
- Il proprietario dichiara che è stato affidato quindi avrà una nuova residenza: il cane scompare dalla query [cani in box] MA HA ANCORA NELLA TABELLA PRINCIPALE il numero del BOX R30!
- L'affidatario restituisce il cane al canile
La maschera di immissione box dovrebbe ora avere all'atto dell'immissione
ID:345 BOX:""
invece mi ritrovo
ID:345 box:R30
GRRRRRRRRRRRRRRRRRRRRRRRRRRRRR!!!!