PDA

Visualizza versione completa : [ACCESS] Aggiornamento automatico di un campo


RunDLL
13-03-2007, 15.12.47
Ciao a tutti e grazie per leggere la mia richiesta: vorrei in un db di Access che scrivendo un qualche cosa su di un campo automaticamente mi comparisse qualcos'altro in un secondo campo ad esso associato. Faccio un esempio banale per fare più chiarezza: mettiamo che io crei una tabella chiamata "Nome" e ci metta un unico campo sempre chiamato "Nome", poi faccio una seconda tabella chiamata "Cognome" e ci metto un unico campo chiamato "Cognome".
Adesso io farei una query che riunisca i due campi delle due tabelle.
Poi farei una maschera associata alla query con due caselle di testo, una per campo, che quando apra questa maschera prima di tutto siano bianche e non con i record già inseriti e che, ammettendo che nella tabella "Nome" nel campo "Nome" ci sia Mario e nella tabella "Cognome" nel campo "Cognome" ci sia Rossi, io scrivendo nella casella di testo associata al campo "Nome" ci scriva Mario automaticamente nella casella associata al campo "Cognome" compaia "Rossi". Come potrei realizzare tutto ciò? Grazie de un saluto.

miciomao
14-03-2007, 09.25.47
cut;
Come potrei realizzare tutto ciò? Grazie de un saluto.

Solo Allah può in questo caso !!! :)

1) non puoi creare 2 tabelle dove inserire nomi e cognomi separatamente, quale sarebbe il criterio di unione ? a meno che non crei nelle due tabelle un id univoco per record che abbia delle relazioni (ma sarebbe da pazzi una storia simile)

2) se hai 2 cristiani che si chiamano Mario che cognome deve associare la funzione ?

dammi retta crea una tabella con 3 campi

id
nome
cognome

poi ti spiego come fare

RunDLL
14-03-2007, 10.00.22
Ciao e grazie per la risposta. Adesso io ho fatto un esempio terra terra per rendere l'idea ma non disdegno di creare un campo in ogni tabella, che ne so chiamiamolo "ID" che renda univoco il record, certo come dici se ci sono più Mario che ne sa quale di questi dovrà dare il cognome?
Allora prendiamo in esame la tua proposta, un'unica tabella, però anche quà se ho più di un Mario come fa a sapere quale voglio dei tanti di preciso? Gentilmente indicami la tua idea e come realizzarla. Grazie ed un saluto.

miciomao
14-03-2007, 11.05.55
che access usi ?

ac97? ac2000? ac2003? ac2007?

Losko
14-03-2007, 12.13.34
Lafunzione che vorresti creare tu andrebbe bene,ad esempio, per le provincie con le relative sigle. Inserisci la provincia ed in un altro campo ti da automaticamente la sigla o viceversa. Dovresti creare una relazione e rendere unici i record con un ID.

miciomao
14-03-2007, 12.41.12
Ti allego l'esempio in formato Acc97 (potrai convertirlo in ogni caso)
Ho chiamato in ausilio la funzione Dlookup con cui è possibile ottenere il valore di un determinato campo da un set di record specificato anche se esso si trova in una tabella diversa ed estratto tramite un criterio. (Una stringa opzionale utilizzata per limitare l'intervallo di dati sui cui viene eseguita la funzione DLookup, in questo caso WHERE l'id è uguale a se stesso)

RunDLL
14-03-2007, 14.09.19
Perfetto utilizzo Access97, anche se poi dovrò rifarlo sul 2000, adesso provo e poi vi faccio sapee, grazie comunque a tutti e due per le risposte. Ciao.

RunDLL
14-03-2007, 14.25.30
Ho guardato il tuo file Miciomiao ed andrebbe bene impostato così, l'unica cosa è che non ho capito bene come è strutturato per poi applicarlo alla mia situazione, sicuramente il problema sta che non conosco Access in maniera così approfondita, mica ti dispiacerebbe darmi delle indicazioni un po' più dettagliate, se puoi. Grazie comunque. Ciao

miciomao
14-03-2007, 14.54.48
1) Comincia dalla casella combinata,
entra in struttura e analizzane le sue propietà
cerca di capire come viene alimentata e quale dato restituisce.
Noterai inoltre che nell'evento "Su modifica" la maschera viene rinfrescata per ottenere i dati esatti.

2) Sempre in stuttura della maschera analizza in seguito le due funzioni Dlookup inserite nelle Caselle di testo Nome e Cognome


Se qualcosa non ti è chiara chiedi pure :)

RunDLL
15-03-2007, 22.19.28
Ho analizzato il db da te gentilmente creato e mi sono anche sforzato di capire ma purtroppo devo tornare a disturbarti per capire alcune cose:

1) la tabella "Alimentata" a che serve?

2) è poissibile commentare questa funzione: =(DLookUp("[Nome]";"Nomi";"[id]=" & "[ide]"))

3) in particolare "ide" da dove salta fuori che non è ne il nome di una tabella ne di un campo?

Grazie mille davvero!

RunDLL
15-03-2007, 22.21.33
Ok, ho appena scoperto che "ide" è il nome della casella combinata, ma gli altri due punti mi sono ancora oscuri.

miciomao
19-03-2007, 12.16.33
Ho analizzato il db da te gentilmente creato e mi sono anche sforzato di capire ma purtroppo devo tornare a disturbarti per capire alcune cose:

1) la tabella "Alimentata" a che serve?

La tabella Alimentata salva i dati che inserisci dalla maschera, ripeto non conosco la funzione del db che intendi creare ma sicuramente dovrai salvare da qualche parte i dati, anche perchè se non li salvi alla riapertura della maschera avrai i campi vuoti di nuovo

2) è possibile commentare questa funzione: =(DLookUp("[Nome]";"Nomi";"[id]=" & "[ide]"))

Dunque questa formula dice pressappoco così: Vorrei che mi restituissi il valore esatto (Nome) nella tabella Nomi che equivale all'id scritto nel campo ide della maschera.


3) in particolare "ide" da dove salta fuori che non è ne il nome di una tabella ne di un campo?
Grazie mille davvero!
Questa l'hai risolta :)

RunDLL
19-03-2007, 12.58.06
Grazie ;) Penso di aver capito più o meno, spero che se avrò qualche dubbio non ti dispiace se torno a disturbarti. Ciao

miciomao
19-03-2007, 13.01.08
;)