Newsgroup: it.comp.appl.access
Titolo: [TOSTO] - Creazione runtime tabella personale per ogni utente

Copio e incollo quanto scritto prima su casa:
CREAZIONE RUNTIME CASELLA COMBINATA:
Salve, ieri mi hanno fatto una bella richiesta tosta (per me).
Ho un campo numerico chiamato NumeroIntervento che contiene il numero
di volte che una persona è stata in
contatto con gli utenti del mio database.
Ieri la coordinatrice di questi utenti mi ha chiesto di modificare
questo campo come segue:
il numero dell'intervento deve essere automatico, e deve essere
possibile associare ad ogni intervento una data
ben precisa.
Ad.es.
N.int. -  Data
1         01/01/2005
2         02/02/2005
e così via.
Ho dunque pensato ad una casella combinata che abbia come rowsource una
tabella contenente:
idUtente
NumeroIntervento
DataIntervento
ma non va bene! Perchè mi sono reso conto che ogni utente deve avere
la sua tabella personale!
Infatti l'utente con id = 212 potrà avere la tabella - che chiameremo
tblIntervento - popolata come segue:
N.Int - Data
1       03/05/2005
quello con id = 23, invece, popolata come segue:
N.Int - Data
1       02/01/2005
2       14/04/2005
e così via. Non è possibile quindi usare UNA SOLA tabella, ma devono
essercene UNA PER OGNI UTENTE
presente nel database.
La soluzione è fare in modo che, cliccando su un pulsante, si apra una
mascherina per l'inserimento
della data dell'intervento, e che il numero dell'intervento si
incrementi in automatico; qualcosa del tipo:
<etichetta_caption: Numero intervento> >casella_combinata>
<pulsante_comando>
dove:
1. casella combinata mi fa apparire due colonne, la prima con il numero
dell'intervento, la seconda con la data
2. il pulsante di comando mi apra una mascherina per l'inserimento
della data; una mascherina con i segg.
controlli:
<etichetta_caption: Numero intervento><casella_testo>
<etichetta_caption: Data intervento>  <casella_testo>
<etichetta_caption: Aggiungi><pulsante_comando>
Il numero intervento si deve incrementare da solo, mentre la data ce la
deve mettere l'utente.
Alla fine, cliccando sul pulsante di comando della mascherina
<Aggiungi>:
1. se la tabella per quel relativo utente è stata creata, aggiornala
aggiungendo questo record alla fine
2. se la tabella per quel relativo utente NON è stata ancora creata,
creala e popolala con questo primo record.
Non è una cosa facile per me.
Ci sono alcune cose ancora nuove per me:
1. creazione controlli e tabelle a runtime
2. aggiornamento via codice VBA di queste tabelle
e altre cose che ora sinceramente non mi vengono in mente.
Chiedo quindi il vostro prezioso aiuto per riuscire a fare questa
cosa!!!
Vi ringrazio in anticipo sin da ora!!!!!
GRAZIE!!!!!!!!


Cominciano i dolori!
La tabella che hai descritto e' piu' che sufficiente per fare quello che 
ti serve. Pensaci.
--
a.cara

Una tabella UNICA per tutti gli utenti?
E come è possibile?
Forse va bene una tabella del tipo:
idIntervento - contatore, chiave primaria
idUtente - numerico, chiave esterna
NumeroIntervento
DataIntervento?
da mettere in relazione uno - a - molti con la tabella tblUtenti
mediante il campo idUtente?
Aiutami ti prego!!!!!!
Grazie :))


Puo' darsi che non abbia capito ma......
-------------------------------------
idUT     NumInt  Data
1         1       ----
2         1       ----
1         2       ----
3         1       ----
1         3       ----
2         2       -----
1         4       -----
3         2       -----
in questo caso
su idut = 1 hai fatto 4 interventi
           2           2
           3           2
select max(numint) from where idut=x  ti da l'ultimo intervento su 
quell'utente il progressivo di intervento te lo calcoli e
lo scrivi tu.
Lascia da parte sti cavolo di contatori quando non servono.
La chiave e' idUt+numint il dottore non proibisce di mettere
la chiave primaria su piu' colonne.
Se poi hai bisogni di sapere chi ha fatto l'intervento metti un
altro attributo idoperatore che punta ad una tabella operatori
la chiave rimane sempre la stessa
--
a.cara

> DataIntervento?
p.s. per quanto mi riguarda manco il numero di
intervento ci metterei. Di fatto e' un calcolato
a meno che tu non faccia piu' di un intervento
sullo stesso utente nella stessa giornata.
Se metti now() (intendo dire data+ora) manco sto problema tieni
--
a.cara

Okkei, vediamo se ho capito:
tblIntervento:
idUtente
NumeroIntervento
DataIntervento
nel campo NumeroIntervento ci metto una
SELECT max(NumeroIntervento) FROM WHERE idUtente = x al valore
predefinito.
Però, come lo prende l'idUtente? E per la data intervento non posso
mettere Now() perchè magari l'utente è stato contattato il 18 Maggio
ma l'inserimento avviene il 23 Giugno.
Grazie :)))

 ma l'inserimento avviene il 23 Giugno.
e dalli. Quello che volevo dirti e' di usare un campo data+ora e non 
solo data
e proprio per il motivo che dici tu, cioe' che la registrazione potresti 
farla a posteriori. Se ti sbagli potresti essere costretto a rinumerare 
tutti gli interventi, per cui, senza il numero intervento e' meglio.
--
a.cara

Ciao Ale, il mio amico di Milano mi ha risolto il problema.
Ho fatto un post apposta!
Grazie di tutto sei stato gentilissimo!!!!!!!!