/ 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
Hjælp til at "fange" værdi ved oprettelse
Fra : kurt-overgaard-ander~


Dato : 16-12-05 18:55

Jeg har er problem som jeg godt kunne bruge en ide til:

Jeg opretter en post i en database på denne viis:

<%
Set rs=Server.CreateObject ("ADODB.recordset")
rs.Open "PAGES", database, 2, 2

rs.AddNew

rs("TYP") = Request.Form("TYP")
rs("HTITEL") = Request.Form("HTITEL")
rs("INDHOLD01") = Request.Form("INDHOLD01")

rs.Update


ID = rs("ID") ' automatisk felt i Access

rs.Close
Set rs = Nothing

Response.Redirect ("index.asp?C=index&ID="&ID)
%>

Jeg henter data fra en formular og det fungerer godt nok - men
ID er et autofelt (i en Accesbase) og efter oprettelse vil jeg
gerne hente dette og bruge det for at vise den netop oprettede
post?

Men - jeg får intet med i værdien ID ved min response.redirect ?

Kan nogen hjælpe med dette?

På forhånd tak






--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jørn Andersen (16-12-2005)
Kommentar
Fra : Jørn Andersen


Dato : 16-12-05 21:42

On 16 Dec 2005 17:54:58 GMT, kurt-overgaard-andersen <ko@email.dk>
wrote:

><%
>Set rs=Server.CreateObject ("ADODB.recordset")
>rs.Open "PAGES", database, 2, 2
>
>rs.AddNew
>
>rs("TYP") = Request.Form("TYP")
>rs("HTITEL") = Request.Form("HTITEL")
>rs("INDHOLD01") = Request.Form("INDHOLD01")
>
>rs.Update
>
>
>ID = rs("ID") ' automatisk felt i Access
>
>rs.Close
>Set rs = Nothing
>
>Response.Redirect ("index.asp?C=index&ID="&ID)
>%>
>
>Jeg henter data fra en formular og det fungerer godt nok - men
>ID er et autofelt (i en Accesbase) og efter oprettelse vil jeg
>gerne hente dette og bruge det for at vise den netop oprettede
>post?
>
>Men - jeg får intet med i værdien ID ved min response.redirect ?

Formentlig fordi posten ikke er oprettet i databasen, men kun i
Recordsettet. Og Id'et først tildeles, når selve databasen opretter
den nye post.

>Kan nogen hjælpe med dette?

Svaret afhænger nok lidt af hvilken database du bruger. De "dyrere"
typer kan en masse, som jeg ikke kender til. Hvis det fx er en
Access-database, er du nødt til at hente et nyt recordset med senest
oprettede post.
Jeg plejer at bruge en funktion til det:

' --- Funktion til at hente Max ID efter en Insert
' Returnerer "x" ved fejl
Function fktConnGetMaxId(strSql, strDsn)
   Dim objConnGetMax, objRsGetMax
   On Error Resume Next
   Set objConnGetMax = Server.CreateObject("ADODB.Connection")
   objConnGetMax.Open strDsn
   Set objRsGetMax = objConnGetMax.Execute(strSql)
   If Not objRsGetMax.Eof Then
      fktConnGetMaxId = objRsGetMax(0)
   Else
      fktConnGetMaxId = "x"
   End If
   If objConnGetMax.Errors.Count > 0 Then
      fktConnGetMaxId = "x"
   End If
   objRsGetMax.Close
   Set objRsGetMax = Nothing
   objConnGetMax.Close
   Set objConnGetMax = Nothing
   On Error Goto 0
End Function

Funktionen bruges således:
intNyesteId = fktConnGetMaxId(strSqlMaxId, strDsn)
hvor (fx):
strSqlMaxId = "SELECT MAX(Id) FROM Tabelnavn;"

Der er et par men'er ved metoden:
- du skal være sikker på, at der ikke er andre, der kan have opdateret
i databasen i mellemtiden. Det kan i nogle tilfælde komme udenom, hvis
man fx registrerer, hvem der oprettet de enkelte poster. Så kan man
indføje en klausul i SQL'en om, at man kun spørger på poster oprettet
af den aktuelle bruger:
SELECT MAX(Id) FROM Tabelnavn WHERE OprettetAf = " & Bruger & ";"

- desuden skal du lige tænke igennem, hvad der skal ske, hvis der er
fejl under oprettelsen etc.

Men hvis du har styr på hvem der opretter, og de ved, hvad de kan og
må, så behøver det ikke være så svært.

Med ovenstående metode behøver du ikke redirect'e med en Id-parameter,
men kun med beskeden om, at det er den nyeste, der skal vises.

Good luck!

--
Jørn Andersen,
Brønshøj

Øystein Svensen (16-12-2005)
Kommentar
Fra : Øystein Svensen


Dato : 16-12-05 23:32

kurt-overgaard-andersen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Jeg har er problem som jeg godt kunne bruge en ide til:
>
> Jeg opretter en post i en database på denne viis:
>

>
> Men - jeg får intet med i værdien ID ved min response.redirect
?
>
> Kan nogen hjælpe med dette?
>
> På forhånd takk
>
>
>
>
> --
> Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
> - Pædagogiske tutorials på dansk
> - Kom godt i gang med koderne
> KLIK HER! => http://www.html.dk/tutorials

Om du benytter Frontpage, se her
http://www.outfront.net/spooky/adv_new_id.htm

ellers kan det måske være en ide at benytte "order by desc" i dit
sql query i siden index.asp

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408514
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste