Avatar billede macriis Nybegynder
10. november 2005 - 00:20 Der er 4 kommentarer og
1 løsning

Alle rækker i db skal + 1 i en løkke

Hej

Jeg har lidt problemer med nedenstående kode.

Hver nyhed har et orderId som bestemmes af brugeren. Når der oprettes en nyhed afvikles nedenstående kode. Det er meningen af den nye nyhed får orderId 1 og at de andre nyheder får order + 1. Jeg kan dog desværre ikke få nedenstående til at virke.
Det er både testet med en For-løkke og men en Do until. Begge eksempler er indsat.

IF Request.QueryString("action") = "opret" THEN
    'Alle nyheder til opdatering af orderId
    strSQL = "SELECT orderId FROM news ORDER BY orderId ASC"
    Set rsOrderId = Conn.Execute(strSQL)
   
    'Antal nyheder
    strSQL = "SELECT COUNT(newsId) AS antal FROM news"
    Set rsAntalOrderId = Conn.Execute(strSQL)
    antalOrderId = rsAntalOrderId("antal")
   
    DO UNTIL counter = antalOrderId
        counter = 1
        Conn.Execute ("UPDATE news SET orderId = " & counter + 1 & " WHERE orderId = " & counter & "")       
        counter = counter + 1
    LOOP
   
    orderId = 1

    Conn.Execute ( "INSERT INTO news (headline, [note], orderId, createdBy, createdDate) VALUES ('Skriv overskrift', ' ', " & orderId & ", '" & Session("userId") & "', '" & ConvertDate("mm-dd-yyyy hh:nn:ss") & "')" )
    Set rsNewsId = Conn.Execute("SELECT @@IDENTITY AS newsId")
    Response.Redirect "update.asp?newsId=" & rsNewsId("newsId") & ""
END IF


========================


IF Request.QueryString("action") = "opret" THEN
    'Alle nyheder til opdatering af orderId
    strSQL = "SELECT orderId FROM news ORDER BY orderId ASC"
    Set rsOrderId = Conn.Execute(strSQL)
   
    'Antal nyheder
    strSQL = "SELECT COUNT(newsId) AS antal FROM news"
    Set rsAntalOrderId = Conn.Execute(strSQL)
    antalOrderId = rsAntalOrderId("antal")
   
    For t = 1 to antalOrderId
        Conn.Execute ("UPDATE news SET orderId = " & t + 1 & " WHERE orderId = " & t & "")
    Next
   
    orderId = 1

    Conn.Execute ( "INSERT INTO news (headline, [note], orderId, createdBy, createdDate) VALUES ('Skriv overskrift', ' ', " & orderId & ", '" & Session("userId") & "', '" & ConvertDate("mm-dd-yyyy hh:nn:ss") & "')" )
    Set rsNewsId = Conn.Execute("SELECT @@IDENTITY AS newsId")
    Response.Redirect "update.asp?newsId=" & rsNewsId("newsId") & ""
END IF
Avatar billede softspot Forsker
10. november 2005 - 00:55 #1
Du burde bare kunne kalde denne update

UPDATE news SET orderid = orderid + 1


I.o.m. det skal gøres på alle, behøver du ikke gennemløbe nogen løkke for at sætte hver enkelt.
Avatar billede softspot Forsker
10. november 2005 - 00:58 #2
Altså:

IF Request.QueryString("action") = "opret" THEN
    Conn.Execute "UPDATE news SET orderId = orderId + 1"   
   
    orderId = 1

    Conn.Execute "INSERT INTO news (headline, [note], orderId, createdBy, createdDate) VALUES ('Skriv overskrift', ' ', " & orderId & ", '" & Session("userId") & "', '" & ConvertDate("mm-dd-yyyy hh:nn:ss") & "')"
    Set rsNewsId = Conn.Execute("SELECT @@IDENTITY AS newsId")
    Response.Redirect "update.asp?newsId=" & rsNewsId("newsId") & ""
END IF
Avatar billede macriis Nybegynder
21. november 2005 - 19:25 #3
Det spiller. Takker. Smid et svar.
Undskyld det sene svar.
Avatar billede softspot Forsker
21. november 2005 - 19:33 #4
Det er ok. Velbekomme :)
Avatar billede softspot Forsker
21. november 2005 - 20:52 #5
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester