/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
oprettelse af record + hentning af Id med ~
Fra : Privathospitalet Ham~


Dato : 14-05-04 11:05

Hej alle

Kan man oprette en post (i access) via en ASP-form, og samtidig hente det
automatisk tildelte ID frem.

Jeg har prøvet på forskellig vis, men uden held. Det jeg vil er at når
brugeren har tastet et skema ind i databasen, skal de redirectes til en
side, hvor ID står, som de så kan skrive på ned.

Jeg har prøvet lidt forskelligt, men ikke med held fx.:


Set rs = Conn.Execute (sql)
id = RS("ID")
Conn.Close
response.redirect ("opret.asp?" & ID)


Venligst
Gunnar



 
 
Jens B (14-05-2004)
Kommentar
Fra : Jens B


Dato : 14-05-04 11:27


"Privathospitalet Hamlet" <zsdjkæh@åøæ.dk> skrev i en meddelelse
news:40a499d9$0$214$edfadb0f@dread12.news.tele.dk...
> Hej alle
>
> Kan man oprette en post (i access) via en ASP-form, og samtidig hente det
> automatisk tildelte ID frem.

Jep, du skal gøre noget i denne her stil (kopieret direkte fra en af mine
egne scripts, så tag dig ikke af felternes navne):

strSQL = "Insert into skuespillere(skuespiller) values ('" & skuespiller &
"')"
Conn.Execute(strSQL)
strSQL = "SELECT @@IDENTITY AS nytID FROM skuespillere"
Set tRs = Conn.Execute(strSQL)
skuespiller = tRs("nytID")

Jens



Jens Gyldenkærne Cla~ (14-05-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-05-04 11:37

Jens B skrev:

> strSQL = "Insert into skuespillere(skuespiller) values ('" &
> skuespiller &
> "')"
> Conn.Execute(strSQL)
> strSQL = "SELECT @@IDENTITY AS nytID FROM skuespillere"
> Set tRs = Conn.Execute(strSQL)
> skuespiller = tRs("nytID")

Det vil nok være en ide at bruge application.lock så man ikke
risikerer at to brugere kommer til at køre koden samtidig:


insertSQL = "INSERT into ...."
identSQL = "SELECT @@IDENTITY as nytid..."

Application.Lock
   Conn.execute(insertSQL)
   Set tRS = Conn.execute(identSQL)    
Application.UnLock

skuespiller = tRs("nytID")
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Privathospitalet Ham~ (14-05-2004)
Kommentar
Fra : Privathospitalet Ham~


Dato : 14-05-04 12:09

> Det vil nok være en ide at bruge application.lock så man ikke
> risikerer at to brugere kommer til at køre koden samtidig:


Igen må jeg sige 1000 tak. Koden som er afprøvet og virker:

IDsql = "SELECT @@IDENTITY AS nytID FROM pr"
Application.Lock
Set rs = Conn.Execute (sql)
Set Rs = Conn.Execute(IDsql)
Application.UnLock
NytID = Rs("nytID")
Conn.Close
response.redirect ("opret.asp?" & NytID)

Venligst
Gunnar



Jens B (14-05-2004)
Kommentar
Fra : Jens B


Dato : 14-05-04 12:33


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns94E9805793E0Ajcdmfdk@gyrosmod.dtext.news.tele.dk...
> Det vil nok være en ide at bruge application.lock så man ikke
> risikerer at to brugere kommer til at køre koden samtidig:
>
>
> insertSQL = "INSERT into ...."
> identSQL = "SELECT @@IDENTITY as nytid..."
>
> Application.Lock
> Conn.execute(insertSQL)
> Set tRS = Conn.execute(identSQL)
> Application.UnLock
>
> skuespiller = tRs("nytID")


Det har du nok ret i.

Da jeg i sin tid fik koden gennem eksperten.dk var det netop med henblik på
at det ikke skulle gå galt i tilfælde af at to brugere postede på samme tid.
Og jeg har egentlig bare brugt den i den tro, at den var ok.

Men nu kan jeg godt se, at den jo egentlig ikke er bedre end hvis man bare
have SELECTED TOP 1, sorteret med nyeste øverst.

Tak for input, det vil jeg da lige få rettet de steder jeg bruger koden.

Jens



Privathospitalet Ham~ (14-05-2004)
Kommentar
Fra : Privathospitalet Ham~


Dato : 14-05-04 11:52

Hej Jens
1000 Tak. Det virker. Du har reddet min dag:

Hos mig ser den sådan her ud, og redirecter perfekt med det nye ID.:

Set rs = Conn.Execute (sql)
sql = "SELECT @@IDENTITY AS nytID FROM pr"
Set Rs = Conn.Execute(sql)
NytID = Rs("nytID")
Conn.Close
response.redirect ("opret.asp?" & NytID)

Venligst
Gunnar




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste