-cod_art e' la casella combinata che mi permette di visualizzare codice
articolo, descrizione e prezzo;
-[query1] è la query che mi visualizza le colonne codice-descrizione-prezzo
della tabella listino a cui è collegata la cesella combinata cod_art;
-descrizione e prezzo sono i campi che devono essere aggiornati
--------
Private Sub codice_AfterUpdate()
On Error GoTo Err_codice_AfterUpdate
Dim strFiltro As String
' Valuta il filtro prima di passarlo alla funzione DLookup.
strFiltro = "cod_art =" & codice
' Cerca la descrizione del prodotto e lo assegna al controllo
descrizione.
Me!descrizione = DLookup("desc_art_cam_gr", "Query1", strFiltro)
' Cerca il prezzo unitario del prodotto e lo assegna al controllo
PrezzoUnitario.
Me!prezzo = DLookup("Prezzo_prod", "Query1", strFiltro)
Esci_codice_AfterUpdate:
Exit Sub
Err_codice_AfterUpdate:
MsgBox Err.Description
Resume Esci_codice_AfterUpdate
End Sub
--------------
Vi ringrazio in anticipo ed in ogni caso e' stato utile leggere le altre
vostre risposte che mi hanno gia risolto qualche altro piccolo problemuccio.
:-)
--
dino Carrozzo
di...@tiscali.it
ICQ 81037259
Intanto, se hai una casella combinata che ti visualizza già il prezzo
dell'articolo, puoi usarne la proprietà Column() (Vedi help) per farti
restituire il valore contenuto nella colonna desiderata e corrispodente
all'articolo selezionato.
>Con la funzione DLookup sono riuscito ad aggiornare
> automaticamente la casella prezzo ma non mi inserisce il prezzo esatto, me
> ne inserisce uno a caso. Ho quindi un problema nella parte della colonna
> criteri e non riesco a venirne fuori.
> per favore mi aiutate a capire cosa non va nella seguente routine che ho
> copiato da northwind e poi adattato al caso?
>
> -cod_art e' la casella combinata che mi permette di visualizzare codice
> articolo, descrizione e prezzo;
> -[query1] è la query che mi visualizza le colonne
codice-descrizione-prezzo
> della tabella listino a cui è collegata la cesella combinata cod_art;
> -descrizione e prezzo sono i campi che devono essere aggiornati
> --------
[CUT]
> Dim strFiltro As String
strFiltro = "cod_art =" & Me!cod_art 'Se il codice è numerico
strFiltro = "cod_art ='" & Me!cod_art & "'" 'Se il codice è
alfanumerico
>
> ' Cerca la descrizione del prodotto e lo assegna al controllo
> descrizione.
> Me!descrizione = DLookup("desc_art_cam_gr", "Query1", strFiltro)
>
> ' Cerca il prezzo unitario del prodotto e lo assegna al controllo
> PrezzoUnitario.
> Me!prezzo = DLookup("Prezzo_prod", "Query1", strFiltro)
>
[CUT]
E' comunque + pratico e veloce usare la proprietà Column della casella
combinata.
Però...
Credo che stai facendo una cosa inutile e soprattutto dannosa, infatti quasi
sicuramente stai duplicando la descrizione dell'articolo nella tabella corpo
preventivo, senza giustificato motivo. (4 mesi con la condizionale, però
puoi essere affidato ai servizi sociali).
Se non mi stò sbagliando, dovresti strutturare le tue tabelle con uno schema
simile:
Tabella Articoli:
Cod_Art (chiave)
Descrizione
Prezzo
Tabella Clienti:
Cod_Cli
Nominativo
Tabella Preventivi:
Num_Prev (Chiave)
Data
Cod_Cli (in relazione molti a 1 con Cod_Cli tabella Clienti)
Tabella PrevenCorpo
Num_Prev (in relazione molti a 1 con la tabella Preventivi)
Num_Riga (Questo campo insieme al precedente sono la chiave primaria)
Cod_Art (in relazione molti a 1 con Con Cod_Art tabella Articoli)
Quantità
PrezzoPrev (Necessario xchè potrebbe essere diverso da quello in magazzino)
Le relazioni le crei quando sei in visualizzazione degli oggetti "Tabelle",
dal menu strumenti, Relazioni. Devi applicare l'integrità referenziale (vedi
help e storico post del NG).
Poi crei una query con le tabelle Preventivi e Clienti come origine dei dati
per la maschera principale, ed una con le tabelle PrevenCorpo ed articoli
per la sottomaschera.
Nella routine Dopo Aggiornamento della casella combinata in cui scegli
l'articolo, metti il prezzo dell'articolo nel controllo associato al prezzo
nel preventivo.
A questo punto non ti occorrono + nè DlookUp, nè Column, in quanto i campi
descrizione associati al cliente ed all'articolo vengono già
individuati/visualizzati dalle query.
Spero non averti fatto troppa confusione.
Ciao.
--
Francesco G. Rizzoni
Ammesso e non concesso che abbia ben capito il tuo problema, visto che la
sottomaschera penso sia a visualizzazione maschera continia o a
visualizzazione folglio dati, non puoi usare il codice VBA per popolare la
casella di testo del prezzo (tutte le caselle di testo prezzo visualizzate
nella sottomaschera verrebbero aggiornate contemporaneamente e con lo stesso
valore: a mio avviso la stessa cosa dovrebbe accadere anche con la casella
di testo descrizione).
Visto che la casella di testo prezzo è calcolata dovrebbe essere non
associata, quindi nella sua origine controllo prova a scrivere:
= DLookup ("Prezzo_prod"; "Query1"; "cod_art =" & codice)
questo se il campo cod_art è di tipo Numerico, se invece fosse di tipo testo
prova a scrivere:
= DLookup ("Prezzo_prod"; "Query1"; "cod_art ='" & codice & "'")
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------
grazie ancora
dino
Francesco G. Rizzoni <rfrance...@infinito.it> wrote in message
8_d1c.6505$36.2...@news4.tin.it...
Quando rispondi scrivi DOPO e non prima del testo dei messaggi precedenti.
Tu provaci, cosě poi ti risponderai da solo a questa dimanda. ;-)
> ancora grazie
> dino