Newsgroup: it.comp.appl.access
Titolo: Duplicare in un altro campo un valore (da ricercare) e impostare ChildLink con questo valore

I miei oggetti sono sempre esaustivi :-)
Allora, cerco di spiegarmi meglio:
Ho una maschera nella quale inserisco gli Albi Italiani (parliamo di
fumetti).
Successivamente, tramite pulsante di comando visualizzo la maschera Albi
Originali contenuti negli Albi Italiani.
A sua volta la maschera Albi Originali ha una sottomaschera incorporata con
i dati identici (titolo della cover, prezzo, formato, ecc.).
Il problema (se così si può chiamare) mi deriva dal fatto che, a volte,
alcune storie Originali sono "spezzettate" su più Albi Italiani.
Invece di riscrivere i dati (con i comprensibili/inevitabili/stancanti
errori ai quali vado incontro) volevo fare in modo da cercare, se il campo
Parte della maschera Albi Originali era diverso da 1 (il default - vale per:
tutto l'Albo Originale è contenuto nell'Albo Italiano) proprio l'Albo
Originale con campo Parte 1.
Successivamente copiare in un campo dedicato l'ID di questo record
"filtrato", riposizionarmi sull'Albo Originale con campo Parte <> 1 e
modificare la Sottomaschera incorporata (che contiene i dati identici) con
il valore del ChildLink relativo a questo campo dedicato.
Naturalmente ho provato a spiegare quello che vorrei fare (se ne avessi le
conoscenze), purtroppo, per mia ignoranza, quando creo un bookmark per
spostarmi sul record con Parte = 1 per acquisire questo valore e rispostarmi
sul precedente record (con un'altro bookmark) mi parte un ciclo dal quale
non esco (e mi pianta anche Access).
Ho cercato sul Sito qualche dritta, ma non ne ho trovate (forse perchè devo
ancora leggere circa 1600 mail di archivio on-line?).
Qualsiasi consiglio sarà ben accetto (naturalmente se riesco a risolvere il
problema, grazie alle vostre dritte, vi invito tutti dal "Tamarro" -elegante
ristorante delle mie parti, che pensavate?-)
Saluti
(¯`·.¸SpiderMax¸.·´¯)

 
ciao spidermax
Giuro! Sto facendo una fatica immonda per cercare di capire.
Posso darti un consiglio?
Te lo do.
Quando esponi un problema cerca di non mischiare la parte descrittiva
del
problema con notazioni tecniche specifiche e' abbastanza fuorviante.
Quando c'e' un problema di questo tipo, in questo il Borrelli ha
ragione,
prendi carta e penna disegnati le tabelle con le relazioni e prova
la navigazione sulla carta, si scoprono strane cose
Io nel tuo problema vedo diverse entita'
1) L'albo con i suoi attributi
2) La storia con i suoi attributi
3) La puntata della storia con i suoi attributi
4) Le case editrici
5) L'anagrafe degli autori (scrittori e disegnatori)
6) Le eventuali edizioni
7) I raccordo fra la puntata originale e quella italiana
   (questo potrebbe coincidere con 3)
Mi, anzi ci, dici che tabelle hai? (ed i relativi attributi).
ciao Ragnetto 
--
a.cara 
Togli qualcosa dall'email

 ciao Ragnetto
Grazie della risposta Alessandro, e scusa se sono così impacciato, ma
dimentico che gli altri (che mi possono aiutare) non conoscono
l'architettura del mio DB.
Vado allora a cercare di spiegarmi meglio.
TABAlbiItaliani: IDAI (Contatore), Testata (Testo), Anno (Numerico) ecc.
ecc.
TABAlbiOriginali: CollegamentoAlbiItaliani (numerico ed in relazione
uno-a-molti con l'IDAI della TABAlbiItaliani), IDAO (Contatore), Testata
(Testo), Anno (Numerico), N° (Numerico), Parte (Numerico), Ripetizione
(Testo), ecc. ecc.
 TABContenuti: CollegamentoAlbiOriginaliContenuti (numerico ed in relazione
uno-a-uno con l'IDAO della TABAlbiOriginali), IDCont (Contatore) ecc. ecc.
TABCopertinaOriginale: CollegamentoAlbiOriginaliCopertine (numerico ed in
relazione uno-a-uno con l'IDAO della TABAlbiOriginali), IDCop (Contatore)
ecc. ecc.
(Naturalmente i nomi dei campi sono "leggermente" diversi, ma mi auguro
rendano l'idea)
Vorrei fare in modo da modificare l'origine dati delle tabelle TABContenuti
e TABCopertinaOriginale in funzione del campo Parte della TABAlbiOriginali
(modificando ChildLink delle tabelle TABContenuti e TABCopertineOriginali?).
Per esempio: se il campo Parte della TABAlbiOriginali è uguale ad 1 i campi
CollegamentoAlbiOriginaliContenuti e CollegamentoAlbiOriginaliCopertine
delle due tabelle dovrebbero essere uguali al campo
CollegamentoAlbiItaliani.
Ma se è diverso da 1 i campi CollegamentoAlbiOriginaliContenuti e
CollegamentoAlbiOriginaliCopertine dovrebbero "puntare" al record della
TABAlbiOriginali in cui il campo Parte è uguale ad 1.
Se siete arrivati sin quì, grazie della pazienza, e spero di essere stato
più chiaro (o meno oscuro?).


 ecc. ecc.
Secondo me dovresti rivedere la struttura del db.
Albi Italiani ----->> Contenuti <<--------Albi
originali------->copertina
Albi Italiani: idit + attributi
Albi Originali: idor + attributi
Contenuti id(chiave)  idit + idor + attributi
Copertina: idor
Fra gli albi originali e quelli italiani, anche se generalmente 
il rapporto e 1:1 (sarebbe meglio dire n:n),di fatto, da quello
che mi dici, il rapporto e' m:n. In tale situazione la tabella
"Contenuti" ti fa da tabella di relazione. 
Normalmente le tabelle di relazione sono del tipo "tuttachiave"
con chiave derivante dalle chiavi delle tabelle legate, nel 
tuo caso la situazione e' diversa, accontentiamoci.
Cmq ti sconsiglio "vivamente" di relazionare direttamente
gli Albi it con gli  Albi or
Ti avevo consigliato di navigare sulla carta: Vediamo che succede
Riporto la tabella contenuti con una serie di valori (cito solo
gli id)
Contenuti 
---------
id - idit+idor       Nota 
---------------------------------------------------
1  -   1+1           "Regular"
2  -   null+1        La storia e' sull'albo originale 1
                     e non appare su albo italiano
3  -   1+null        Inverso del precedente (non
                     so se puo' accadere, nella vita
                     e in informatica tutto e' possibile)
4  -   1+5           La storia su IT 1 era su OR 5 
----------------------------------------------------
Da questo, come vedi, non riesci a controllare lo
"spezzatino" della storia. Potresti tentare di farlo
attraverso quella che tu chiami parte, pero' sei 
costretto a ripetere gli altri attributi. Per
Ovviare a cio' io consiglierei di eliminare da "Contenuti"
tutti i riferimenti agli albi ed attivare la vera
e propria tabella di Relazione Fatta esclusivamente da:
Id Rel
Id Contenuto  ----> punta a Contenuti
Parte    
Id it   ---> punta a Albi Italiani
Id or   ---> punta a Albi Originali
La chiave e' idrel
con questa tabella aggiuntiva non ripeti i dati
anagrafici della "storia" ed ottieni le cose dette
prima + lo "spezzatino" ed anche lo "spezzatino
inverso". Con questa struttura riesci a gestire
anche le riedizioni cioe':
Relazione
---------
idrel - idcont+parte- idit+idor       Nota 
-------------------------------------------------------------
1  -       1+0         1+1        "regular"
2  -       1+0         27+1       la stessa storia del precedente
                                  e' sull'albo it 27 
3  -       2+1         5+2       La storia e' a puntate
 
4  -       2+2         6+2       
5  -       2+0         28+2      La storia che era apparsa
                                 a puntate su IT 5-6 ha avuto
                                 una riedizione intera su IT 28
---------------------------------------------------------------
Temo che con la tua struttura non ne esci.
(*) Su parte al posto dello 0 sarebbe preferibile "null"


 ha scritto nel messaggio
news:3E4D48F3...@blunet.it...

Grazie ancora Alessandro, se non altro per il tempo che stai spendendo a
leggere i miei "deliri".
Devo cercare di "interpretare" al meglio i tuoi consigli (forse è la
punizione per essere stato troppo oscuro anche questa volta?)
Comunque, così ad occhio, ti faccio un'esempio:
ho l'albo Italiano Pippo (Roberto docet)
questo Albo contiene al suo interno due albi originali (colleziono materiale
Marvel che con i nomi dell'esempio non c'entra una fava) Minnie e Paperino e
la prima parte dell'albo Gastone
L'albo Minnie contiene al suo interno due storie: Tip e Tap *
Ho l'albo Italiano Topolino
quest'altro albo contiene la seconda parte dell'albo originale Gastone e
l'albo originale Eta Beta.
Non posso inserire da nessuna parte le storie Minnie, Paperino e Gastone1^
se non ho precedentemente inserito Pippo (e lo stesso vale per Gastone2^ ed
Eta Beta, che non posso inserire se non ho l'Albo che le contiene, cioè
Topolino) e tutto ciò per mie esigenze (tramite query, poi trovo per
esclusione l'inedito in Italia)
Naturalmente i dati degli Albi Italiani saranno unici (un'albo = un record).
Sono alcune parti degli Albi Originali che possono ripetersi (vedi le storie
spezzettate su più albi Italiani -escludendo le ristampe, per ora-) e che ho
inserito nella sottomaschera Contenuti (Prezzo, Data, Pagine totali, Formato
ecc.) e in quella CopertinaAO (Immagine Cop, Immagine Quarta di Cop,
Disegnatore, ecc.).
Volevo modificare l'origine di queste sottomaschere (campi Master e campi
Secondari) in base a delle condizioni della maschera Albi Originali (il
campo Parte oppure il campo 1^ Edizione) per evitare duplicazioni (nel caso
dell'esempio: nell'albo Italiano Topolino, dopo aver inserito i dati
"variabili" per Gastone2^ la sottomaschera Contenuti della storia Gastone2^
non esisterà, e mi verrà visualizzato il record Gastone1^ preso dall'albo
Italiano Pippo).
* Per Tip e Tap li inserisco nella maschera collegata che richiamo
(Contenuti degli Albi Originali) tramite pulsante di comando e che contiene
gli artisti, oltre che i titoli (Italiano ed Originale) delle storie ecc.
"Potrebbe" darsi tu abbia ragione (e mi è capitato spessissimo di aver torto
o di chiedere assurdità) nel consigliarmi di modificare la struttura del DB
nella maniera che mi consigli.
Studio meglio le tue dritte e ti faccio sapere.
Saluti.
Uno  (¯`·.¸SpiderMax¸.·´¯) lobotomizzato
PS: la struttura è in continuo "adattamento" per risolvere problemi ai quali
non pensavo in fase di "progettazione" (vi prego, passatemela senza
sghignazzare eccessivamente) e TUTTI i consigli per renderla più
"performante" sono ben accetti (anche se poi non dovessi seguirli).

 Studio meglio le tue dritte e ti faccio sapere.
Bravo
Spider. NON DEVI MAI PIEGARE IL DB ALL'APPLICAZIONE!
Se il db funziona funziona anche l'applicazione.
L'applicazione e' un sottoprodotto ininfluente e non necessario
E' evidente che deve esserci una gerarchia 
1) Albi (it e or) e Contenuti (quelle che io chiamo storie) 
   sono equipollenti (non sono relazionati fra loro)
2) Relazioni dipende da tutti e tre i precedenti


Ho postato un messaggio con il titolo 'Struttura db albi originali e
tradotti', forse puo' interessare...
ciao 
Vorce