Newsgroup: it.comp.appl.access
Titolo: Capire meglio DLookup

Sto leggendo l'help di Dlookup, e mi sono imbattuto in questo:
[...]
Si supponga di eseguire la funzione DLookup su una tabella Impiegati per
trovare il cognome di un impiegato in base al numero ID impiegato. I
criteri contenuti nell'esempio riportato di seguito vengono determinati
dal valore corrente del controllo ID impiegato nella maschera Ordini e
l'espressione che fa riferimento al controllo viene determinata ogni volta
che viene richiamata la funzione in modo che se il controllo viene
modificato, l'argomento criteri riflette tale modifica.
=DLookup("[LastName]", "Employees", "[EmployeeID] = " _
    & Forms!Orders!EmployeeID)
 
Se il valore corrente del campo EmployeeID è 7, l'argomento criteri
passato alla funzione DLookup è il seguente:
"[EmployeeID] = 7"
[...]
cioè io posso mettere nella casella di testo che fa riferimento a
EmployeeID un numero - 1,2,3....56 - e DLookup mi restituisce il cognome
cui appartiene quell'ID?
Se è così, allora con DLookup è possibile, diciamo, sincronizzare diverse
maschere in modo che se in una digito un criterio nell'altra mi appaiono i
risultati di tale criterio.
Mi viene in mente 
ad.es
. che in una maschera io posso digitare un nome ed
un cognome e su INVIO o DOPPIO_CLICK in un altra maschera far comparire
tutti i dati che li riguardano (classico esempio Customer--->Books Orders).
Giusto?
Scusate la domanda banale :)
Buona giornata!
-- 
Insostenibile è il peso della conoscenza, se questa toglie poesia all'
Essere Umano.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio news:d71kb7$oal$1...@news.newsland.it...

E' possibile ma ti rallenta di parecchio la form...
Ciao.
-- 
Sergio MAZZA 

 Ciao.
Quindi in genere quando è utile utilizzare la funzione DLookup?
Perchè dall'help in linea non è che mi torni molto chiaro.
Grazie :)


 Perchè dall'help in linea non è che mi torni molto chiaro.
Io uso dlookup per estrarre i valori di campi da una tabella utilizzando dei
parametri where.
Che so...
Dim Numero as Integer
Numero = dlookup("NomeCampo","MyTable","[IDUtente] = " &
me.IDUtenteSpecificato)
Ciao

 Buona giornata!
Direi che hai usato l'esempio sbagliato per ottenere una
cosa utile....!
Le considerazioni sono molte sulle funzioni di aggregazione
sui domini, la prima è quella fatta da Sergio.
E' estremamente più performante usare un Recordset tramite
predicato SQL per recuperare il dato che usare un DlookUp.
Per fare invece quanto hai chiesto esistono 2 modi decisamente migliori:
1)L'uso di una Query parametrica con criterio che punta alla
  Maschera in corrispondenza del Campo: Forms!Orders!EmployeeID
  a quel punto su evento After Update della TextBox si esegue
  il Requery della Form esterna.
  (questo è il metodo più utile)
2)Proprietà Filter di Maschera da modificare su After_Update sempre
  della TextBox:
  Forms!NomeForm.FileterOn=False
  Forms!NomeForm.Fileter="[EmployeeID] = " & Forms!Orders!EmployeeID
  Forms!NomeForm.FileterOn=True
 
@Alex
-- 


 Grazie :)
Se vuoi approfondire l'argomento guarda su
www.accessgroup.it
 sezione "Traduzione" del Building
Cap. 3 - paragrafo: Popolare i controlli in una maschera
--
rgrds
SC
-- 


 -- 
In genere quando hai una casella di testo dove inserisci un codice e vuoi far vedere in un'altra casella la descrizione di quel 
codice:
es.
=nz(dLookup("descrizione";"tabArticoli";"codice=" & me!codice);0)
Tenendo sempre in considerazione che ci sono altri modi per ottenere lo stesso risultato; dipende da cosa devi fare, dalla 
complessità della form e se lavori in rete o no...
Ciao.
-- 
Sergio MAZZA 

 cui appartiene quell'ID?
Giulio, fondamentalmente la Dlookup e' una select. Potresti 
tranquillamente farti una funzione pubblica che fa la stessa cosa
i.e. (ci sarebbe da dire alcune cose sul DAO/ADO ma tralascio)
Public myFunDlookup(attrib as string, tabel as string, cond as string)
Dim ssql as string
ssql = "select " & attrib &  " from " & tabel & " where " & cond
myFunDlookup = qui metti il riferimento alla esecuzione
End function
--
detto questo immaginati come e dove puoi usarla
ahh... bada che questa funzione, una volta competata, funzionerebbe a 
tutti gli effetti
--
a.cara

 tutti gli effetti
Ciao, non è che potresti fornirmi un esempio completo con il classico
database Clienti - Ordini? Ne ho giusto uno per le prove tecniche :)
Grazie infinite!!!!!


 =myFunDlookup("attrib","tabella","cond")
Ciao, scusa ma sono veramente impelagato con gli help oggi.
Ti ringrazio tanto per l'esempio sei stato molto gentile.
L'uso di DLookup cosě come di una funzione custom analoga fa precipitare
le prestazioni per il fatto che opera una query continua?
Ma penso sia inevitabile nel caso di valori restituiti in base a criteri
specificati da un utente.
Ora mi rileggo anche le altre risposte per capire meglio ma se hai tempo
ti chiederei un'altra gentilezza: puoi farmi un esempio che usi la
funMyDLoolup (o DLookup) in luogo di un'altra soluzione che, invece,
sarebbe preferibile?
Grazie mille ancora!!!!
-- 
Insostenibile č il peso della conoscenza, se questa toglie poesia all'


 specificati da un utente.
mi sembra che qualcosa al riguardo gia' te la abbia suggerita A. Baraldi
Generalmente e' meglio fare una query che ritorna piu' record e poi fare
una ricerca/filtro su quella piuttosto che fare n Query.
La dimostrazione? ancora sto bestemmiando poiche' un certo soggetto
facendo n query faceva avere ad un applicativo tempi di risposta biblici
(2/3 min) ora dopo il restyling passati a 3/4 sec. (sqlserver+xml in 
intranet)
Nel caso di DlookUp , credo, poi magari se si sveglia don carlo
(o chi per lui) potrebbe illuminarci meglio(osram da 10000 watt),
eseguita spesso sullo stesso attributo (ovviamente con condizione di 
where) , mettere un bell'indice su quell'attributo sarebbe cosa sana e 
giusta. St'ultima cosa ne vale la pena se la tabella comincia a essere 
sostanziosa poiche' per tabelle piccole, se access (jet) e' furbo, e 
credo che lo sia, si sbatte tutto in memoria e dell'indice non, come
direbbero i toscani, gl'importa na sega.
cmq se ti fai una ricerchetta sul NG per l'argomento Dlookup trovi una
vagonata di 3D simili a questo
--
a.cara