Newsgroup: it.comp.appl.access
Titolo: è un problema di relazioni?

Non riesco a venire a capo di questo problema. Ho un db con tre tabelle:
prezzi, ordini e dettagli ordini.
Nella tabella "prezzi" ho tre campi: ID cliente, misura, prezzo.
Apro una parentesi: il db tratta un prodotto unico ma di diverse misure, e
che il prezzo di ciascuna misura può variare a seconda dell'ID cliente.
Nella tabella "ordini" ho tre campi: ID cliente, ID ordine, data fornitura.
Ho bisogno di fare un'altra tabella "dettagli ordini", con i seguenti campi:
ID ordine, quantità, misura (combo box), prezzo. In quest'ultimo campo
vorrei che, non appena inserisco un valore nella misura, mi restituisca
automaticamente il prezzo relativo al cliente che ha fatto l'ordine. E'
possibile? Spero di essere stato chiaro e scusate se mi sono un pò
dilungato. Ciao.

 ha scritto nel messaggio
news:9ockh2$jv5$1...@serv1.iunet.it...

Ma vuoi lavorare direttamente aprendo la tabella oppure su una maschera che
ha come origine record la tabella  "dettaglio ordini"?
Nel primo caso non credo che esistano soluzioni. Se invece sei nel secondo
caso rifatti vivo.
Quanto alle relazioni tra le tabelle è bene che le espliciti in quanto ti
aiuteranno nello sviluppo del progetto specie per quanto riguarda la
gestione dell'integrità referenziale, ma non sono indispensabili per
risolvere il tuo problema.
Se ti rifai vivo, dicci anche se, per l'introduzione dei dati nelle varie
tabelle, usi la tecnica maschera/sottomaschera.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:Valq7.5706$Lp6.2...@news.infostrada.it...


 per la risposta.
Se la tabella Prezzi ha la seguente struttura:
IDPrezzo        Contatore e chiave primaria
IDCliente        Numerico
Misura            Testo
Prezzo            Numerico
Se la tabella Ordini ha la seguente struttura:
IDOrdine        Contatore (o Numerico) e chiave primaria
IDCliente        Numerico
DataFornitura  Data/ora
Se la tabella DettagliOrdini ha la seguente struttura:
IDDettaglio    Contatore e cchiave primaria
IDOrdine        Numerico
Quantità          Numerico
Misura            Testo
Prezzo            Numerico
Se le tabelle Ordini e DettaglioOrdini sono tra di loro in relazione
uno-a-molti in base ai campi IDOrdine.
Se la maschera principale si chiama Ordini e contiene 3 controlli che hanno
gli stessi nomi dei campi della tabella Ordini cui sono associati.
Se la sottomaschera contiene almeno tre controlli chiamati rispettivamente
Quantità, Misura e Prezzo, gli stessi dei campi della tabella DettagliOrdini
cui sono associati.
Se la casella combinata Misura ha una sola colonna e il suo elenco contiene
dei valori di tipo testo.
A fronte dell'evento "Dopo aggiornamento" della casella combinata Misura
contenuta nella sottomaschera genera il seguente codice VBA:
Private Sub Misura_AfterUpdate()
Me!Prezzo = DLookup("Prezzo", "Prezzi", _
"IDCliente=" & Forms!Ordini!IDCliente & _
" And Misura =" & Chr$(34) & Me!Misura _
& Chr$(34))
End Sub


 ha scritto nel messaggio
news:KUtq7.10608$Lp6.3...@news.infostrada.it...


 grazie ancora.
[CUT]
Visto che sei nuovo del NG, impara anche un'altra regola, che non è di
Access ma di questo NG: quando rispondi ad un messaggio, inserisci la tua
risposta dopo e non prima del testo quotato, ovvero relativo ai messaggi
precedenti.
Un'altra precisazione: il fatto che il campo IDCliente sia Numerico i Testo
dipende dal suo Tipo dati e non da una sua proprietà.
Comunque, per risolvere questa variante al tuo problema, prova a modificare
il codice VBA, che ti ho postato precedentemente, con:
Private Sub Misura_AfterUpdate()
Me!Prezzo = DLookup("Prezzo", "Prezzi", _
"IDCliente=" & Chr$(34) & _
Forms!Ordini!IDCliente & Chr$(34) & _
