Newsgroup: it.comp.appl.access
Titolo: spuntare le presenze / assenze relazione molti-a-molti?

Salve a tutti.
In access97 ho la necessità di spuntare le presenze/assenze di un elenco
fisso di nominativi che partecipano a diverse riunioni.
Credevo fosse una cosa semplice, invece mi sono piantato....
Ho una tabella [nomi]:
ID_nome
cognome
nome
...
Ho una tabella [riunioni]
ID_riunione
data
luogo
....
Ho poi pensato di creare una tab. intermedia [presenze]:
id_nome
id_riunione
presente (si/no)
Vorrei creare una maschera con una casella a discesa che mi permetta la
scelta della riunione e che abbia l'elenco dei nomi con accanto il check
presente si/no.
Per prima cosa: è impostato bene il db?
Poi: mi date una mano per la creazione della maschera?
Grazie a tutti.
Giancarlo

 
Secondo me il db è impostato bene.
Per la maschera (la procedura più semplice)
è creare una maschera master con origine dati la tabella riunioni. 
inserisci poi con l'auto composizione la casella combinata con l'elenco 
dlle riunioni.
crei una sottomaschera con rigine la tua tabella intermedia.
colleghi la sottomaschera alla master attraverso l'id della riunione e 
il gioco è fatto.
ciao
Nick

 Nick
Ciao.
Giancarlo.

Giancarlo ha detto: in data 04/05/2005 9.05:

Ti basta sosttuire la casella di testo id_nome con una casella combinata 
associata alla tabella nomi, così avrai al posto dell'id il nome della 
persona (se non l'hai mai fatto usa l'autocomposizione e ricordati alla 
fine di associare la tabella l''id della tabella).
stesso procedimento per id_riunione(che puoi anche eliminare dopo aver 
verificato che funziona).
Ciao
Nick
ps metti la sottomaschera in modalità "maschere continue"

Giancarlo ha scritto:




Ciao Giancarlo
La struttura mi sembra OK, quindi crei una Maschera Singola con origine
dati la tabella [Riunioni] od una Query basata sulla stessa ed una
maschera tabulare con origine dati la tabella [Presenze] che trascinerai
come Sottomaschera nella form principale.
Nella scheda Dati delle proprietà della sottomaschera scegli
[id_riunione]per campo master e per campo figlio.
Utilizzando la casella degli strumenti crei una casella combinata nella
sottomaschera con Origine controllo [ID_Nome] ed origine riga una query
avente come origine dati la tabella nomi contenente tutti i campi e con
l'ordinamento che preferisci.
Sia nel caso che tu utilizzi o no l'autocomposizione ricorda che è il
primo campo ad essere visualizzato nella casella combinata a meno che non
imposti la sua lunghezza a zero.
Se utilizzi una query per la Casella combinata puoi creare in questa un
campo formula:
Anagrafica:[Nome] & " " & [Cognome] da utilizzare per la visualizzazione
nella Ccb.
Prova e se ci sono problemi riposta
Ciao
Prometeo  
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Prometeo
Ciao.
Giancarlo

 Giancarlo
Ciao Giancarlo
Innanzitutto anche se non lo citi penso che tu abbia creato per la tabella
Presenze un campo ID_Presenze definito comee chiave primaria.
Cosa significa [non vedo la check], se il campo è si/no, in automatico
nella maschera il campo sarà una casella di controllo, se non accade
selezioni dalla casella degli strumenti una Casella di controllo, la
trascini nella sottomaschera e gli dai come origine dati il campo
[Presente]
(Assegna valore predefinito =0).
Assegna 0 come valore predefinito al campo Link_Riunione della tabella
presenze
Per inserire automaticamente l'elenco per ogni riunione in modo semplice,
puoi creare 2 query di comando (Prima come query di selezione e una volta
verificato il funzionamento dal menu Query le modifichi,la prima in query
di Accodamento e la seconda in query di Aggiornamento). 
1 - [Q_Crea_Nuovo_Elenco] - è basata sulla tabella Nomi ed accoda il campo
ID_Nome al campo Link_Nome
    della tabella Presenze
2 - [Q_Assegna_elenco_alla_Riunione] - Aggiorna il campo Link_Riunione
della tabella Presenze al valore del controllo associato al campo
ID_Riunione nella Maschera Riunioni , solo per i records aventi valore 0
nel campo Link_Riunione (I nuovi records).
 Nella riga aggiorna a scriverai:[Forms]![M_Riunioni]![ID_Riunione]
 Nella riga criteri scriverai:   0
Crei un pulsante in piè di pagina della maschera M_Riunioni e lo chiami
Nuova_Pagina con il seguente codice
Private Sub Nuova_Pagina_Click()
On Error GoTo Err_Nuova_Pagina_Click
    DoCmd.SetWarnings False 'Disattiva gli avvisi query di comando
    Dim stDocName As String
    stDocName = "Q_Crea_Nuovo_Elenco"
    DoCmd.OpenQuery stDocName, acNormal, acEdit 'Apre la query di
creazione elenco nuova pagina del registro
 
   Dim stDocName1 As String
    stDocName1 = "Q_Assegna_elenco_alla_Riunione"
    DoCmd.OpenQuery stDocName1, acNormal, acEdit 'Apre la query che  
assegna  alla riunione corrente l'elenco nuova pagina del registro
 
DoCmd.SetWarnings True 'Riattiva gli avvisi query di comando
    Me.Refresh 'Vedi immediatamente i nuovi records
Exit_Nuova_Pagina_Click:
    Exit Sub
Err_Nuova_Pagina_Click:
    MsgBox Err.Description
    Resume Exit_Nuova_Pagina_Click
End Sub
Non dimenticare di creare le corrette relazioni tra le tabelle, cioè tra
ID_Riunione della tabella riunioni e Link_Riunione
della tabella presenze - Tra ID_Nome della tabella Nomi e Link_Nome della
tabella Presenze con integrità referenziale.
Allego un'immagine delle griglie query, anche se forse non è buona
abitudine e voglio formulare un post per saperne di più a proposito. 
Ciao e buon lavoro
Prometeo 
Guarda l'immagine cliccando 
http://attach.mynl.it/img?id=MTY5NA
