Newsgroup: it.comp.www.asp
Titolo: Inserimento in database con contatore

Inserisco in un database i dati di un preventivo. Il databse in access
contiene il campo idpreventivo di tipo contatore.
Dopo che inserisco il preventivo nel database come faccio a comunicare al
cliente il numero del suo preventivo?????
Grazie a tutti.
Ciao.
Alex MagBug

Inserisci e fai un select top 1 contatore order by contatore desc
se sql server meglio con begin trans....commit trans; sempre per sql server
esiste anche un select @@identity as 'identity' che ti restituisce l'ultimo
identity inserito.

cliente il numero del suo preventivo?????
se il contatore e' quello di default, cioe' di tipo incrementale
(cioe' 1, 2, 3..., perche' il contatore di access puo' anche essere
settato come casuale) devi prendere il valore piu' alto del contatore
stesso dopo l'inserimento.  puoi fare cio' con una query sql,
settandoci un recordset: 
dim NumeroPreventivo
dim ssql
dim rstPrev
ssql = "SELECT Max NomeCampoContatore FROM tabella"
set rst = cn.execute(ssql)
NumeroPreventivo = rst(0)
response.write "Egregio cliente, il suo preventivo e' il numero " &
NumeroPreventivo
quella di ottenere il valore piu' alto di un campo di una tabella e'
un'azione che capita di fare spesso, e come sai, l'ambiente di
sviluppo di access dispone, allo scopo, delle cosiddette funzioni di
aggregazione, le varie DMax, DMin, DLookup, DCount (che comunque non
esistono in vb e vbscript).
queste funzioni non sono il massimo della velocita' ed efficienza in
termini di esecuzione in access, ed infatti i programmatori esperti le
usano poco, pero' bisogna dire che sono molto comode e velocizzano la
scrittura del codice.
io me le sono riscritte in vbscript, le incollo qui sotto.
parto dal presupposto che ci sia una connessione di nome cn dichiarata
come visibile in tutto lo script (ma non sara' difficile adattarle ad
altre situazioni).
per comodita' mi sono fatto un file include contenente queste ed altre
routine di uso frequente che includo in ogni script che faccio (se
servono,ovviamente).
<%
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
	set rst = nothing
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
	set rst = nothing
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
	set rst = nothing
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
	set rst = nothing
end function
%>
<%
function DSum(NomeCampo, NomeTabella, ParteWhere)
	dim ssql
	dim rst
	ssql = "SELECT Sum(" & NomeCampo & ") FROM " & NomeTabella
	if ParteWhere <> "" then
		ssql = ssql & " WHERE " & ParteWhere
	end if
	set rst=cn.execute(ssql)
	DSum = rst(0)
	rst.close
	set rst = nothing
end function
%>