Newsgroup: it.comp.appl.access
Titolo: Perche' e dove usare dlookup?

Il soggetto vi potra' sembrare strano ma effettivamente non capisco dove
come e quando sia conveniente usare la dlookup (stessa cosa per
dmax,dmin), perche' non ne ho mai sentito la mancanza.
C'e' qualcuno che mi illumina? 
(e non cominciamo con la storia di comprarmi una lampadina?) ;<)))
-- 
Alessandro Cara

dmax,dmin), perche' non ne ho mai sentito la mancanza.
perche' conosci l'sql...
credo sia una convenienza di tipo "logistico".  mettiti nei panni di
un principiante, o di qualcuno che non scrive una applicazione ben
analizzata o strutturata ma deve buttare li' due righe di codice al
volo.  si fa prima a capire come funziona dlookup o dmax che non ad
impararsi come scrivere una query in sql.
comunque, adesso sto scrivendo delle applicazioni asp.  certo le
applicazioni asp non sono applicazioni access, giranop in tutt'altro
ambiente, ma comunque un'idea ce la possiamo fare.
in vbscript, come sai, non ci sono dlookup, dmax, dmin, dcount e
compagnia  e me le sono riscritte (neanche iif e nz e mi sono
riscritto pure quelle).  
perche'?  dlookup per decodificare al volo una descrizione dato un id,
o viceversa.  tu mi dirai, ti fai il select della descrizione e
dell'id e buona notte.
vero, ma considera il caso di un input <select...> html, cioe'
dell'equivalente di una casella combinata in access.  equivalente per
modo di dire, perche' non possiede colonne multiple che magari si
spossono anche stringere a 0 cm e che ti permettono una decodifica
immediata per mezzo di .column().  
ovviamente in una combo o in un <select ...> ci devi mettere una
descrizione parlante, non il numerello di id che all'utente non dice
niente (e che e' meglio non sospetti nemmeno che esista).  pero' nello
script oggetto dell'action della form che contiene il <select...> ti
serve l'id, non la descrizione.  magari potresti scriverti un join, ma
perche' complicarsi la vita?  una bella dlookup, come se fosse una
sottoquery, e passa la paura.
dmax la uso in pratica per generare un id numerico quando aggiungo un
record: id=1+dmax...
potrei settare un recordset sul max(id) della tabella, ma faccio prima
a scrivere una volta per tutte il codice che mi occorre e chiamarlo
dmax...
comunque in access credo servano soprattutto a chi comincia e/o va di
fretta.
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/

 fretta.
questo motivo invece non mi convince! 
Chi comincia rischia di prendere una brutta piega, come con il qbe, che
per me e' ancora un'affare strano, e la fretta certe volte fa fare dei
casini!!!! 
Sei stato molto esauriente. 
-- 
Alessandro Cara

la format
dove opportuno do' per scontato che sia settata una connessione cn a
visibilita' globale.
<%
function DLookUp(NomeCampo, NomeTabella, ParteWhere)
	dim ssql
	dim rst
	ssql = "SELECT " & NomeCampo & " FROM " & NomeTabella
	if ParteWhere <> "" then
		ssql = ssql & " WHERE " & ParteWhere
	end if
	set rst=cn.execute(ssql)
	if rst.bof and rst.eof then
		DLookUp = Null
	else
		DLookUp = rst(0)
	end if
	rst.close
end function
%>
<%
function DCount(NomeCampo, NomeTabella, ParteWhere)
	dim ssql
	dim rst
	ssql = "SELECT Count(" & NomeCampo & ") FROM " & NomeTabella
	if ParteWhere <> "" then
		ssql = ssql & " WHERE " & ParteWhere
	end if
	set rst=cn.execute(ssql)
	DCount = rst(0)
	rst.close
end function
%>
<%
function DMax(NomeCampo, NomeTabella, ParteWhere)
	dim ssql
	dim rst
	ssql = "SELECT Max(" & NomeCampo & ") FROM " & NomeTabella
	if ParteWhere <> "" then
		ssql = ssql & " WHERE " & ParteWhere
	end if
	set rst=cn.execute(ssql)
	DMax = rst(0)
	rst.close
end function
%>
<%
function DMin(NomeCampo, NomeTabella, ParteWhere)
	dim ssql
	dim rst
	ssql = "SELECT Min(" & NomeCampo & ") FROM " & NomeTabella
	if ParteWhere <> "" then
		ssql = ssql & " WHERE " & ParteWhere
	end if
	set rst=cn.execute(ssql)
	DMin = rst(0)
	rst.close
end function
%>
<%
function nz(TestVal, AltVal)
	if isnull(TestVal) then
		nz=AltVal
	else
		nz=TestVal
	end if
end function
%>
<%
function iif(Espressione, Valore1, Valore2)
	if Espressione = True then
		iif = Valore1
	else
		iif = Valore2
	end if
end function
%>
