Newsgroup: it.comp.www.asp
Titolo: salva record + recupero dell'ID

il cod sotto è di una pagina che salva i dati.
da questa pagina dovrei avere un link ad un'altra, alla quale devo passare
il codice ID_Questionario che è un contatore.
ho provato, una volta salvato i dati, a  tornare indietro nel puntatore del
recordset con MovePrevious.
il problema è che con tutti gli altri campi funziona, ma con il contatore
che è quello che mi serve non mi visualizza nulla.
spero voi possiate aiutarmi
grazie
ho provato anche con
  questionari.Requery ma mi da il primo record nella tabella
questionari.AddNew
questionari("Nome") = Nome
questionari("Descrizione") = Descrizione
questionari("ID_Servizio") = ID_Servizio
questionari("ID_Attivita") = ID_Attivita
questionari("ID_Redatore") = ID_Redatore
questionari("DataFineValidita") = DataFineValidita
questionari.Update
'recupero del codice ID_Questionario
questionari.Requery
questionari.MovePrevious
ID_QuestionarioCOD = questionari("ID_Questionario")
questionari.Close
Set questionari = Nothing

 'recupero del codice ID_Questionario
Io lo farei con una query. Se usi AddNew significa che è
l'ultimo record inserito, quindi:
strSQL="SELECT TOP 1 ID_Questionario FROM TuaTabella"
Set TuoRecordset = TuaConn.Execute(strSQL)
ID_QuestionarioCOD = TuoRecordset("ID_Questionario")
Ciao
Nixs

> strSQL="SELECT TOP 1 ID_Questionario FROM TuaTabella"
 order by id_questionario desc (altrimenti ti becca sempre il primo)

  order by id_questionario desc (altrimenti ti becca sempre il primo)
....giusto, piccola (!) svista.
grazie
Nixs

 ha scritto nel messaggio
news:TgPT7.391$s%3.11...@news.edisontel.com...

no no.
Se siete in multiutenza (e un sito web LO E'), tra la insert e la query, un
altro utente potrebbe aver inserito un record successivo e la tua query ti
restituirebbe l'ultimo valore, cioè questo, con casini facilmente
prevedibili.
Non so che db utilizzi.
Ti posso dire che con SQL dalla stored procedure che fa l'inserimento, puoi
farti tornare @@identity che contiene il valore appena inserito (da quella
sessione).
Se hai un db Access, non lo so (forse si lavora di Lock), ma sicuramente Lbo
potrà darti ampie delucidazioni in merito.......
ciao

La mia era una soluzione "di comodo" (nel senso che vale nel 99.99% dei
casi, soprattutto in siti non frequentatissimi)...
Se hai tantissimi accessi e rischi non vale neanche @@identity perché non č
affidabilissimo (hanno aggiunto una nuova variabile in sql2000, ho letto da
qualche parte, che dovrebbe essere piů affidabile)
Io eseguo sempre il tutto in un'unica transazione e non ho mai avuto
problemi, del tipo:
begin trans q; insert into.....;select.....;commit trans q
Con access perň non puoi farci nulla, che io sappia

 wrote in message
news:9vsigo$d1s$1...@fe1.cs.interbusiness.it...


 un select dove c'è quel valore
il problema è che se appena inserito un record fai una query rischi di
non trovarcelo, perchè non ha fatto ancora in tempo a eseguire il
comando insert quando esegue il select.
la soluzione è questa:
<% valoreunivoco = request.servervariables(remote_host) & now() %>
poi eseguo il comando che inserisce i dati nel database, nel campo
chiaveprovvisoria ci metto il valore della variabile valoreunivoco.
dopodichè faccio un ciclo:
<% while trovato <> "si" %>
poi eseguo una query e ad esempio chiamo l'oggetto recordset1
select .... where chiaveprovvisoria = 'valoreunivoco'
in realtà si scrive così:
"select .... where chiaveprovvisoria = '" & valoreunivoco & "'"
<% if (not recordset1.eof) then 
trovato = "si" %>
adesso posso leggere il valore della chiave ID del database e
assegnare quel valore a una variabile. dopodichè faccio
<% 
recordset1.close
wend 
%>
se non faccio recordset1.close quando và a rieseguire il ciclo mi darà
errore.
in poche parole faccio eseguire la query finchè non trova almeno un
valore

 wrote in message
news:LGIT7.16392$OP2.6...@news2.tin.it...


> ID_QuestionarioCOD = questionari("ID_Questionario")
utilizza questa query...
in sql2000 funziona.. non ho provato con access....
se ho capito bene č il tuo č un contatore automatico
SELECT MAX(ID_Questionario) FROM tuatabella
--
Francesco Rotondo
Tel&CO s.r.l. - Via Virgilio, 55
41100 Modena - ITALY
Tel. 
++39 059 847203
Fax. 
++ 39 059 848630
E-mail 
f.ro...@tel-co.it