Newsgroup: it.comp.appl.access
Titolo: [REPOST] - Associare caselle controllo a record

Dunque, provo a ripostare il quesito in maniera più comprensibile (ora
sono in ufficio, ho tempo :D).
Dunque, ecco la struttura del database:
frmAggiungiUtente (origine dati: tblUtenti)
|
| contiene
|
|---->Caselle di controllo (origine dati: tblMotivi)
(per caselle di controllo io intendo le checkbox che puoi anche
selezionarle tutte al contrario dei pulsanti opzione)
Devo per forza usare caselle di controllo per esplicita richiesta dei
miei utenti ed anche per coerenza nel layout della maschera.
Cmq data la struttura di cui sopra che succede:
succede che viene apera appunto frmAggiungiUtente e l'utente inizia ad
aggiungere i dati anagrafici della nuova persona da inserire nel
database. Qeusti dati vengono inseriti in controlli ovviamente
associati a tblUtenti percui tutto fila liscio: i dati vengono inseriti
automaticamente ed io infatti non gli faccio neanche confermare
l'inserimento; al limite lo eliminano subito dopo.
Poi però in frmAggiungiUtente giungono alla selezione dei motivi per i
quali la persona si è rivolta allo sportello. Questi motivi sono
appunto delle etichette associate a delle caselle di controllo. Queste
caselle di controllo hanno come origine record i campi della tabella
tblMotivi, ovviamente NON associata a frmAggiungiUtente.
La tblMotivi è così strutturata (per ora):
idMotivo
Motivo
ma a quanto pare devo cambiarla in:
idMotivo - chiave primaria, contatore
idUtente - chiave esterna, numerico
Motivo
e qui casca l'asino.
Il campo Motivo di che tipo deve essere? E, appunto, come lo associo
alle caselle di controllo. La logica mi fa pensare che io non debba
inserire un campo Motivo ma più campi, ognuno per una casella di
controllo, in modo che la tabella diventi:
idSerieMotivi - contatore, chiave primaria
idUtente - numerico - chiave esterna
Motivo1 - SI/NO formato VERO/FALSO
Motivo2 - SI/NO formato VERO/FALSO
...
Motivo7 - SI/NO formato VERO/FALSO
e selezionare i sette campi come origine dati delle sette caselle di
controllo.
Poi....poi ecco posso usare la query suggerita da Ale...e collegare
quindi l'utente corrente con la giusta 'serie' di opzioni in modo che
risulti che:
1. per l'utente PIPPO siano selezionati i motivi 1 - 3 - 4
2. per l'utente PLUTO siano selezionati i motivi 2 - 3 - 5 - 6
e così via...
Quindi, è qeusto il mio piccolo bel problema.
Spero di essere stato chiaro :D. Se cosi non è stato, chiedo venia ma
sono quasi 3 gg che nn dormo.
Buona giornata e buon lavoro :)

 Buona giornata e buon lavoro :)
dim cTB as Access.ToggleButton
L'istruzione seguente non posso usarla perchč ci sono altri controlli
interruttore sulla maschera che non hanno a che fare con quei sette.
For each cTB in Me.Controls
If ctl.Value=True then
Questa istruzione dice di aggiungere alla tabella tblMotivoContatto dei
record dove:
nel campo Campo_ID_UTENTE ci va Me.ID_UTENTE
nel campo Motivo ci va ctl.Name
la parola chiave VALUES specifica quali valori inserire, e ha per
argomento Me.ID_UTENTE e 
ctl.name
CurrentDb.Execute "INSERT INTO tblMotivoContatto " & _
"(Campo_ID_UTENTE,Motivo) " &
"VALUES (" & Me.ID_UTENTE & ",'" &
ctl.Name & "');"
End if
Next
Ho interpretato correttamente? Allora, data la tabella tblMotivoContatto
cosě strutturata:
idMotivo - contatore, chiave primaria
idUtente - numerico, chiave esterna
Motivo - testo
la stringa di cui sopra diventa:
CurrentDb.Execute "INSERT INTO tblMotivoContatto " & _ "(idUtente, Motivo)
" & "VALUES (" & Me.idUtente & ",'" & ctl.Name & "');"
a patto che:
gli interruttori abbiano lo stesso nome del motivo visualizzato
e che Me.idUtente faccia riferimento al campo idUtente della tabella
tblUtenti associata a frmAggiungiUtente.
Ho interpretato correttamente?
Grazie.
-- 
Non avere mai pura dei momenti bui perchč, facci caso, anche le stelle
hanno bisogno della notte per brillare.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 sono in ufficio, ho tempo :D).
troppo facile la battuta su quanto lavorate...

-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa1 - I° Conferenza Italiana per Sviluppatori Access Arezzo 4+5
Giugno 2005 Sono aperte le iscrizioni  Info:  
www.donkarl.com/it

 La tblMotivi è così strutturata (per ora):
Allora non credo tu debba confondere i motivi per le due tabelle.
Tu sovrapponi il concetto della tabella che ti elenca i motivi e quella di
raccolta dei motivi.
la cosa può essere gestita in diversi modi.
nella tabella degli uetnti prevedi tanti campi quanti sono i possibili
motivi intercetti il click sul non controllo che vuoi
e ci ficchi nel campo motivo correlato il valore che vuoi.
if me.CheckSonoDisperato = - 1 then me.motivoSonodisperato = "Juventino":
else me.motivoSonoDiperato = "Forza NApoli" : end if
etc..
In realtà questo sarebbe pane per WithEvents, ma abbiamo sottoscritto il
patto di non divulgazione... scherzo ovviamente.
Oppure puoi crearti una tabella a parte Motiviscelti
idMotivo
Rif_Id che lega alla tabella principale
motivo
e su click aggiungi un record aprendo il recordset
Come vuoi fare?


 Grazie.
Scusa la freddezza Giulio, ma personalmente sei partito
con il piede sbagliato, ora non sò se puoi tornare indietro
ma credo sia OBBLIGATORIO.
Impara a strutturare un DB, poi il codice ti accorgi che
è spesso superfluo....!
Saluti
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ciao Ale, grazie per la risposta.
Non ti preoccupare per la freddezza, la sincerità è sempre la strada
giusta :)
La normalizzazione mi è chiara, credimi. Il mio problema è che non ho
avuto e non ho il tempo per stare fermo a studiare: queste persone
vogliono il database subito e io - che ho ripreso Access da poco dopo
cinque anni - sono a farlo da solo...è questo il problema.
Cmq tornando a noi: penso che a questo punto, per dargli una cosa
usabile da *subito* io seguirò il suggerimento di MA e creerò dei
campi SI/NO all'interno di tblUtenti e associerò questi campi agli
interruttori. Molto rozza come cosa, ma tanto a loro non frega nulla di
come io abbia implementato la cosa, basta che funzioni. Nel frattempo,
adesso si, avrò modo di capire qual è la strada giusta.
Per quanto riguarda le relazioni tra le tabelle: perchè deve venir
fuori una relazione Molti-a-molti con in mezzo una tabella di
collegamento? Io ho messo in relazione tblUtenti e tblMotivoContatto
tramite idUtente ed è venuta fuori, appunto, una relazione Uno-a-molti
con l'integrità referenziale. Non va bene?
Concludo: chiedo scusa, penso di dare l'impressione di uno cui non
frega imparare e fare bene le cose. Non è così. Sto in una situazione
DISPERATA, ho saputo Sabato che comunque andranno le cose Io e tutti
gli altri esterni saremo fatti fuori dall'Ente alla fine di Giugno,
quando ci scadrà il contratto. Con questo database posso solo sperare
di durare anche a Luglio, ma sarebbe manna dal cielo. Verranno fatti
fuori anche sei dipendenti. Questo database, oltre forse a darmi un
mese lavorativo in più, lo potrò usare come Demo da presentare alle
aziende quando presenterò richiesta di assunzione. Perchè, ora che ci
penso, devo muovermi fin da ora a trovarmi un nuovo posto di lavoro.
Perciò non guardatemi male, vi prego, quando faccio così ma è la
situazione che sto passando a spingermi a comportarmi in questo modo.
Grazie!!

MA, non ho capito la seconda parte:
come struttureresti tu la tabella tblMotivoContatto? E RIF_Id sarebbe
il controllo Id nascosto presente nella form frmSchedaPrimoContatto e
che ha come origine idUtente della tabella tblUtenti?


Prova a mandarlo che ci do un'occhiata da vicino e posso eguirti meglio


 Grazie :)
il mio indirizzo è in chiaro




 il mio indirizzo è in chiaro
cmq
master   at massimiliano amendola  . it


Ciao MA, ti ho inviato il database.
A presto.