Newsgroup: it.comp.appl.access
Titolo: Aggiornamento record

Ho creato database per tutti i pc  e stampanti della mia azienda,
inserendo  tutte le caratteristiche come:
operatore. tipo  pc, processore pc ,ram pc,stampante ecc.
Con una maschera vado ad aggiornare e ad inserire dati (per es. nuovi pc).
La maschera comprende anche una casella combinata, (collegata ad una tabella
dove ci sono tutti i nome dei personal computers ) dove vado ad selezionare
per es.un modello di personal computer diverso.
Quello che volevo chiedervi, con gentilezza,  è questo:
E' possibile che quando vado ad inserire un nuovo modello di pc anche gli
altri campi ,come processore, ram ecc., vengono aggiornati automaticamente
secondo le caratteristiche del personal computer?
Grazie
Ciao

Si, si può. Dovresti però usare una chiave primaria nella tabella dei
personal computer (un contatore può andar bene, se non ne hai già una) e
memorizzarla nell'altra tabella (quella con i nomi degli operatori) al posto
del tipo PC.
Così sull'evento AfterUpdate della casella 'tipo PC' puoi scrivere alcune
righe di codice che compilino i campi processore, RAM, ecc...
per esempio:
Private Sub tipoPC_AfterUpdate()
    Me.processore=DLookup("processore", tblPC, "CodPC=" & Me.tipoPC)
    Me.RAM=DLookup("RAM", tblPC, "CodPC=" & Me.tipoPC)
End Sub
dove:
tblPC è il nome della tabella che contiene i dati dei PC
'processore' è il nome del campo che contiene il dato sul processore
'RAM' è il nome del campo che contiene il dato sulla RAM
Per i dettagli sulla funzione DLookup vedi la guida in linea.
Se i campi da aggiornare sono parecchi sarebbe meglio aprire un recordset
che restituisca la riga della tabella PC corrispondente al tipoPC
selezionato, e poi assegnare i valori alle varie caselle, invece di
richiamare troppe volte la DLookup.

 ha scritto nel messaggio
news:RCz%4.139279$VM3.9...@news.infostrada.it...


 wrote in message
8hlriq$ev2$1...@news.flashnet.it...

Prova a dare come origine record della casella combinata, da cui selezioni
il computer, non solo il modello Pc ma anche tutti gli altri dati della
tabella.
Quando selezioni dalla casella combinata il PC voluto, nelle colonne
seguenti della casella combinata hai a disposizione tutti gli altri dettagli
(ram ecc.).
Potrai fare riferimento a loro con Me.NomeCasellaCombinata.Column(n) dove n
è il numero della colonna a cui vuoi riferirti (La numerazione delle colonne
parte da 0).
Quindi per settare ad esempio il campo della memoria potrai usare:
Me.Ram = Me.NomeCasellaCombinata.Column(1).
Ciao nino.


Innanzi tutto le soluzioni che ti hanno dato Sirio e Nino sono più che
valide, ma mi sembra che sei in difficoltà ad attuarle; fra l'altro, come ti
è
stato detto, nell'architettura del DB c'è una ridondanza di dati (i campi
"process" e " ram" li hai in ambedue le tabelle). Comunque cerchiamo una
soluzione che sia più vicina possibile alla tua impostazione.
Comunque è necessario fissare la struttura delle due tabelle rispettando
almeno due necessità imprescindibili: il fatto che va localizzata per ognuna
delle due tabelle una chiave primaria (che contraddistinguerà in maniera
univoca le righe di ogni tabella) e determinare un campo in base al quale
mettere in relazione le due tabelle e che pertanto deve essere contenuto in
ambedue le tabelle.
Cominciamo con la tabella ModelloPC. Nel modo in cui l'hai descritta, come
ti ha fatto notare Sirio, manca di una chiave primaria: dichiara la tabella
come te la
ha proposta Sirio, ovvero:
Nome Campo            Tipo Dati
IDModPC                   Contatore
Modello_pc                Testo
Process_pc               Testo
Ram_pc                     Testo
Prima di registrare la struttura di questa tabella dichiarati il controllo
CodPC come chiave primaria.
Anche la tabella Censimento, così come l'hai descritta non ha una chiave
primaria e pertanto dichiaratela così:
Nome Campo            Tipo Dati
IDpc                            Contatore
Operatore                   Testo
IDModPC                    Numerico
Process                      Testo
Ram                            Testo
Cap_disco                 Testo
SistOper                     Testo
MatrPC                       Testo
GarPC                        Data       (immagino che ci vuoi memorizzare la
data di scadenza della garanzia)
Prima di chiudere la struttura di questa tabella dichiarati il controllo
IDpc come chiave primaria, e devi anche dichiararti IDModPC come casella
combinata. Per fare questo clicca con il mouse nella colonna Tipo Dati di
questo controllo (dove hai scritto "Numerico"), ti si apre un menu  a
tendina dal quale seleziona "Autocomposizione Ricerca.."; nella finestra che
ti compare seleziona il bottone "Tabella o Query" e premi il pulsante
Avanti; nella seconda schermata seleziona dalla lista la tabella "ModelloPC"
e premi il pulsante Avanti; nella terza schermata premi il tasto ">>" per
spostare tutti i campi dalla lista "Campi disponibili:" alla lista "Campi
selezionati:" e premi il pulsante Avanti; nella quarta schermata premi il
pulsante Avanti; nella quinta schermata premi il pulsante Fine. Così
facendo, oltre a dichiararti IDModPC come casella combinata, hai messo in
relazionela le due tabelle tramite questo controllo, che come vedi è
contenuto in ambedue.
Ora riempi la Tabella ModelloPC con i dati che gli competono.
Dichiarati (magari con l'autocomposizione) una maschera (MASCHERA1) che
abbia come "Origine record" la tabella Censimento. Apri MASCHERA1 in
modalità Struttura, evidenzia la casella combinata IDModPC e a fronte della
proprietà Evento "Dopo aggiornamento" di questo controllo genera il seguente
codice VBA:
Private Sub IDModPC_AfterUpdate()
Me![Process] = Me![IDModPC].Column(2)
Me![Ram] = Me![IDModPC].Column(3)
End Sub
Il gioco è fatto: apri MASCHERA1, prova ad inserire i dati, dovrebbe
succedere quello che volevi.
Almeno spero :-))))
Ciao Roberto

 ha scritto nel messaggio
news:q0e05.152502$VM3.1...@news.infostrada.it...
