Newsgroup: it.comp.appl.access
Titolo: Selezione da Combo e popolamento sottomaschera

Premetto che sono un novellino nell'utilizzo delle 
form di Access (lavoro in ambiente Oracle e in 
quel caso avrei già risolto...).
Ho una struttura del tipo:
Tabella Storia
        Id_storia
        Titolo
Tabella Personaggio
        Id_personaggio
        Nome
        Cognome
Tabella Storia_Personaggi
        Id_Storia
        Id_Personaggio
con una maschera per l'inserimento della Storia e 
una sottomaschera per la gestione dei personaggi 
presenti nella storia.
Un personaggio può comparire in più storie.
Se inserisco i dati nella sottomoschera nessun 
problema: vorrei però che il campo Cognome fosse 
una Combo dalla quale effettuare una ricerca
in modo da non inserire due volte la stessa 
anagrafica personaggio. Vorrei che la ricerca non 
aprisse nuove maschere.
In sostanza apro la Combo, seleziono il record che 
mi interessa, popolo la sottomaschera e salvo un 
record solo in tabella Storia_Personaggi.
Il mio problema finora è proprio questo: come 
faccio a specificare che in questo caso va salvato 
solo il record nella tabella di associazione?
Grazie.
Ciao.
Forfello

 ha scritto nel messaggio
news:43b51bb0$1...@x-privat.org...

Ciao Forfello,
io la vedo così:
hai una maschera principale la cui origine record è la tabella Storie.
Nella maschera principale c'è una sottomaschera collegata sul campo
ID_Storia che come origine record ha la tabella Storia_Personaggi
La sottomaschera sarà una maschera continua in cui si potrà selezionare vari
personaggi.
Il campo ID_personaggio della sottomaschera sarà definito come Casella
Combinata e avrà come origine dati una query del tipo Select ID_Personaggio,
Cognome & " " & nome as Persona  from Personaggio ORDER By Cognome
Se definisci nella tabella Storia_Personaggi un campo chiave dato dai 2
campi Id_Storia Id_personaggio, eviterai di inserire duplicati.
Ciao
-- 
Cinzia
---------------------------------------
|  
http://www.riolab.org
  |
---------------------------------------

 -- 
In effetti è così.
La tabella Storia_Personaggi ha quella chiave: il 
problema è evitare che venga di nuovo
salvato il record in Personaggi.
Faccio un esempio: Storia ID_Storia=1 Titolo 
='XXXX'
Associo il personaggio Topolino con ID_Personaggio 
= 1.
In Storia_Personaggi trovo ora un record con 
chiave (ID_storia, Id_Personaggio) = (1,1).
Inserisco una nuova storia con ID_storia = 2 
Titolo= 'YYYY'.
Voglio associare lo stesso personaggio, quindi 
vorrei avere in Storia_Personaggi un record
con chiave (2,1), mentre in Personaggi non deve 
avvenire nessun inserimento.
Il problema è che mi compare un messaggio di 
errore che evidenzia la chiave doppia, dovuta al
tentato inserimento del record in Personaggi con 
la stessa chiave.
Come si può evitare? Si può fare in modo che la 
maschera sia in modalità "query"?
Grazie.
Ciao.
Forfello 


Ciao Forfello,
non mi è molto chiaro come procedi.
se la sottomaschera è collegata alla tabella StoriaPersonaggi gli
inserimenti avvengono solo in questa tabella e non nella tabella Personaggi.
In questo modo tu potresti inserire solo personaggi che sono già presenti
nella tabella Personaggi, oppure potresti gestirti l'evento Not in List
della Combo dei personaggi per effettuare l'inserimento di personaggi non
ancora presenti.



Questa potrebbe essere una soluzione.
Tieni presente che avevo fatto una sottomaschera 
che comprendeva entrambe le tabelle (Personaggi e 
StoriaPersonaggi).
Dovrei sdoppiarle avendo una struttira del tipo:
Maschera principale : Tabella Storie
Sottomaschera 1 : Tabella StoriaPersonaggi
Sottomaschera 2 : Tabella Personaggi --> Questa 
dovrebbe essere solo in interrogazione (è 
possibile? Come?) e nel caso in cui
 
              non ci sia il personaggio aprire una 
finestra per l'inserimento.
Volevo fare qualcosa di più compatto (usando gli 
strumenti di sviluppo Oracle ci sarei riuscito 
senza problemi, ma non mi va di
usarli per qualcosa di così piccolo),  ma mi posso 
accontentare.
Grazie.
Ciao. 


Per come la vedo io la 2 sottomaschera non è necessaria:
In intestazione Maschera della maschera principale metterei una combo con le
storie che fa da ricerca  sulla maschera Storie.
La sottomaschera che come origine dati avrà StoriaPersonaggi  conterrà una
combo con l'elenco dei personaggi
Per inserire nuovi personaggi dovrai gestire l'evento not in List della
combo e aprire una maschera Personaggi che aggiunga il personaggio mancante
nella tabella personaggi.
Se invece la modalità di ricerca e inserimento è centrata sui personaggi
invece che sulle storie, la struttura diventerebbe
Maschera Principale origine dati Personaggi con Combo box Elenco Personaggi
in intestazione per la ricerca del personaggio,
Sottomaschera Continua per l'inserimento delle storie (origine dati
StoriaPersonaggi) contenente comboBox con Elenco delle storie e sempre
gestendo l'evento not in List maschera per inserimento di una nuova storia.
Ciao
