Newsgroup: it.comp.appl.access
Titolo: problema con il comando dlookup

salve a tutti.
sono un utente di autodidatta di access ed uso la versione access 97: sto
elaborando un programma che partendo da un listino prezzi inserito in una
tabella sia in grado di elaborare un preventivo. alcune voci  devono essere
prelevate dal listino altra devono essere aggiunte a mano: ho creato una
maschera ed una sottomaschera per intestazione e corpo del preventivo; sono
in grado di visualizzare gli articoli per descrizione nella casella
combinata insieme al prezzo ma mi servirebbe che il prezzo venisse inserito
automaticamente.  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
--------
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


[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

 ha scritto nel messaggio
news:TA91c.6337$36.1...@news4.tin.it...

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
---------------------------------------------

 wrote in message
8_d1c.6505$36.2...@news4.tin.it...


 wrote in message
0pn1c.48477$FJ6.1...@twister1.libero.it...


 ha scritto nel messaggio
news:ptO2c.12434$z23.5...@news3.tin.it...
[CUT]
Quando rispondi scrivi DOPO e non prima del testo dei messaggi precedenti.


 wrote in message
%EY2c.58121$FJ6.2...@twister1.libero.it...

ok grazie ho risolto il problema
alcune relazioni erano da perfezionare (grazie a Francesco per i consigli)
il comando Dlookup mi serviva
per aggiornare la tabella preventivi ed avere memoria dei vecchi preventivi
(dopo una macro lancia una query
di aggiornamento che mi flagga il campo "stampato"). Fatto questo il campo
era di tipo testo quindi la mia
stringafiltro non funzionava (grazie Robertodacasa). Per ora credo di poter
andare avanti da solo. Se ho bisogno
posso disturbare ancora?
ancora grazie
dino

 dino
