Avatar billede rar_jacobsen Nybegynder
26. august 2006 - 11:48 Der er 8 kommentarer og
1 løsning

Update database i en For løkke

Hej,

er der nogen som kan fortælle mig hvad jeg gør forkert i denne kode.

Koden skal bruges efter at jeg har selected en masse links og klikket på en approve-knap for at godkende valgte links i en databsae hvor den skal ændre approved-feltet fra 0 (ikke godkendt) til 1 (godkendt)

Den finder noget i databsen for den redirecter til adressen http://www.domænenavn.dk/addedlinks2.asp?mid=declined, men den ændrer ikke approved-feltet

If Request("aid") = "declined" Then
    arrID = Request("selections")
    arrID = Split(arrID,",")
    dim x
    for x = 0 to ubound(arrID)
        strQ = "SELECT * FROM IndexRecords WHERE id = " & arrID(x) & " ORDER BY created DESC"
        objRS.Open strQ, strConn, 1,3
        If objRS.EOF Then
            objRS.Close
            Response.Redirect("http://www.domænenavn.dk/addedlinks2.asp?mid=declined_failed")
        Else
            objRS("status") = "0"
            objRS("approved") = "1"
            objRS("approvedby") = Session("name")
            objRS.Update
            Response.Redirect("http://www.domænenavn.dk/addedlinks2.asp?mid=declined")
        End If
        objRS.Close
    next
End If


Håber I kan hjælpe mig
Avatar billede softspot Forsker
26. august 2006 - 12:05 #1
Hvorfor gør du ikke bare sådan:

arrID = Request("selections")
if trim(arrID) <> "" then
  sql = "SELECT * " & _
        "FROM IndexRecords " & _
        "WHERE id IN (" & arrID & ") " & _
        "ORDER BY created DESC"

  set cn = Server.CreateObject("ADODB.Connection")
  cn.Open strConn
  set rs = cn.Execute(sql)
  if not rs.eof then
    sql = "UPDATE IndexRecords SET " & _
          "status = 0, approved = 1, " & _
          "approvedBy = '" replace(session("name"),"'","''") & "' " & _
          "WHERE ID = " & rs("id")
    cn.Execute("UPDATE IndexRecords SET
    url = "http://www.domænenavn.dk/addedlinks2.asp?mid=declined"
  else
    url = "http://www.domænenavn.dk/addedlinks2.asp?mid=declined_failed"
  end if
  rs.close
  Response.Redirect url
End if
Avatar billede softspot Forsker
26. august 2006 - 12:12 #2
Ups! Retter og gør det ikke færdig - sorry! Herunder følger en (mere) færdig version:

arrID = Request("selections")
if trim(arrID) <> "" then
  sql = "SELECT * " & _
        "FROM IndexRecords " & _
        "WHERE id IN (" & arrID & ") " & _
        "ORDER BY created DESC"

  set cn = Server.CreateObject("ADODB.Connection")
  cn.Open strConn
  set rs = cn.Execute(sql)
  if not rs.eof then
    sql = "UPDATE IndexRecords SET " & _
          "status = 0, approved = 1, " & _
          "approvedBy = '" replace(session("name"),"'","''") & "' " & _
          "WHERE ID = " & rs("id")
    cn.Execute(sql)
    url = "http://www.domænenavn.dk/addedlinks2.asp?mid=declined"
  else
    url = "http://www.domænenavn.dk/addedlinks2.asp?mid=declined_failed"
  end if
  rs.close
  Response.Redirect url
End if
Avatar billede rar_jacobsen Nybegynder
26. august 2006 - 12:12 #3
ja, det er jo et godt spørgsmål, bl.a. måske fordi jeg åbenbart stadig er en novice på dette område ;)

den vil jeg lige prøve af og give besked tilbage ... der går nok et par timer inden jeg får mulighed for det
Avatar billede softspot Forsker
26. august 2006 - 12:18 #4
Fair nok - vi skal jo alle begynde et sted :)

Det ser bare ud til at du ikke bruger din løkke til noget (eller i det mindste ikke har behov for den), for du bryder ud af den i første gennemløb uanset om der findes noget i databasen eller ej. Derfor vil jeg anbefale den anden metode i stedet, da den er mere intuitiv at forstå.

Det kan sagtens være du prøver på noget andet end koden fortæller, men i så fald må du lige indvie os i hvad intentionen med koden har været... :)
Avatar billede rar_jacobsen Nybegynder
26. august 2006 - 18:38 #5
Hmmm ... det virker til dels, det er som om den kun tager den første valgte og resten lader den være.

Kan det være fordi der mangler en løkke et sted i UPDATE sætningen???
Avatar billede rar_jacobsen Nybegynder
26. august 2006 - 19:24 #6
Svogeren kom og denne virker

    arrID = Request("selections")
    If trim(arrID) <> "" Then
        Sql = "SELECT COUNT(id) FROM IndexRecords WHERE id IN (" & arrID & ")"

          Set objRS = Server.CreateObject("ADODB.Connection")
          objRS.Open strConn
        If NOT Cint("0" & objRS.Execute(Sql)(0)) = 0 Then

            Sql = "UPDATE IndexRecords SET status = 0, approved = 2, approvedBy = '" & replace(session("name"),"'","''") & "' WHERE id IN (" & arrID &");"

        objRS.Execute(Sql)
            url = "http://www.domænenavn.dk/addedlinks2.asp?mid=declined"
        Else
            url = "http://www.domænenavn.dk/addedlinks2.asp?mid=declined_failed"   
        End If
        Response.Redirect url
    End if
Avatar billede rar_jacobsen Nybegynder
26. august 2006 - 19:24 #7
Smider du et svar så du kan få point ... jeg lærte stadig en smule mere
Avatar billede softspot Forsker
26. august 2006 - 22:49 #8
Ja, jeg tog ikke alle id'erne i listen med i opdateringen, da jeg fokuserede på hvad du lavede i det eksisterende, men IN-operatoren i samspil med UPDATE-kommandoen i SQL-sætningen er da en god løsning til at opdatere alle relevante poster - godt tænkt :)
Avatar billede softspot Forsker
27. august 2006 - 14:08 #9
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