Avatar billede jesperwerge Nybegynder
29. januar 2005 - 16:08 Der er 32 kommentarer og
1 løsning

Update Statement fejl, kan I rette den?

Hej,

jeg har denne Update statement, som skal opdatere flere records af gangen.

Link til fejlen: http://www.horsholmloppemarked.dk/admin/oversigt_admin.asp?DatoSoendage=20/02/05

<%
Set oDB = Server.CreateObject("ADODB.connection")
      oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/lop_2005.mdb")
if request.form("submit") <> "" then
   
For Each ID IN Request.Form("ID")
    FormR1 = Request.Form("R1" & ID)
    FormR2 = Request.Form("R2" & ID)
    FormBetalt = Request.Form("Betalt" & ID)
    FormStadeNr = Request.Form("StadeNr" & ID) 
    strSQL = "UPDATE Main SET R1=" & FormR1 & ", R2=" & FormR2 & ", StadeNr=" & FormStadeNr & ", Betalt=" & FormBetalt & " WHERE AutoID=" & ID & ""
    Response.Write strSQL & "<br>"
    oDB.execute (strSQL)
   
Next
End if
%>

Håber en frisk sjæl kan hjælpe
Avatar billede jesperwerge Nybegynder
29. januar 2005 - 16:09 #1
Min form ser således ud:

<form name="oversigt" method="Post" action="oversigt_admin.asp">
    <tr>
        <td <%= bg %>valign="top"><font size="1"><%= oRS("AutoID") %><input type=hidden name="ID" value="<%= oRS("AutoID") %>"></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("Navn") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("Tlf") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("ToDayDate") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("Dato") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("StadeAntal") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" id="Checks" name="R1" value="<%= oRS("R1") %>" <% if oRS("R1")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" id="Checks" name="R2" value="<%= oRS("R2") %>" <% if oRS("R2")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" id="Checks" name="Betalt" value="<%= oRS("Betalt") %>" <% if oRS("Betalt")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><select name="StadeNr">
        <option value="0">n/a</option>
        <%
        Set oDB2 = Server.CreateObject("ADODB.connection")
          oDB2.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/lop_2005.mdb")
     
            strSQL = "SELECT * FROM stadenr ORDER By Stadenr_tal "
            Set DORS = oDB2.Execute(strSQL)
            Do While Not DORS.EOF                    'nr D2
                IF DORS("Stadenr_tal") = "" OR DORS("Stadenr_tal") = 0 Then                                'nr I6
        %>
        <option value="<%= DORS("Stadenr_tal")%>"><%= DORS("Stadenr_tal")%></option>
                <% ELSE %>
        <option value=" <%= DORS("Stadenr_tal")%>" <% If oRS("StadeNr") = DORS("Stadenr_tal") Then         'nr 6b
            response.Write("selected")%><%end if%>><%= DORS("Stadenr_tal") %></option>                     <%'nr6b %>
        <%
                End If                                                                                    'nr I6
        %>
        <%
            DORS.MoveNext
            Loop
            'Wend                                                                                        'nr D2
          oDB2.Close
          set DORS = Nothing
        %>
        </select></font></td>
        <td <%= bg %>valign="top"><font size="2"></font> </td>
    </tr>

<%
    oRS.MoveNext
    Loop                                                                                                'nr D1
    oDB.Close
    set oRS = Nothing
   
    if p=0 then                                                                                        'nr I7
        p=1
    else
        p=0
    end if                                                                                                'nr I7
%>
<input type="submit" value="Gem Ændringer" name="Submit">
</form>
Avatar billede erikjacobsen Ekspert
29. januar 2005 - 16:11 #2
Du har een form for hver linie, men kun een gem knap? Og du afslutter ikke dine
<form> tags. Hvad prøver du på at få udført?
Avatar billede erikjacobsen Ekspert
29. januar 2005 - 16:14 #3
Det ser ud til du tror at du har et slags løbenummer på nogle af dine feltnavne
      FormR1 = Request.Form("R1" & ID)
men det har du ikke, for der står jo blot:
      name="R1"
Avatar billede jesperwerge Nybegynder
29. januar 2005 - 16:15 #4
meningen er at en knap skal gemme alle ændringerne for de forskellige records.

der er 4 felter som kan ændres fra bruges suder, R1, R2, Betalt, StadeNr.
Avatar billede jesperwerge Nybegynder
29. januar 2005 - 16:16 #5
Her er hele koden, hvis det kan hjælpe:

<%
Set oDB = Server.CreateObject("ADODB.connection")
      oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/lop_2005.mdb")
if request.form("submit") <> "" then
   
For Each ID IN Request.Form("ID")
    FormR1 = Request.Form("R1" & ID)
    FormR2 = Request.Form("R2" & ID)
    FormBetalt = Request.Form("Betalt" & ID)
    FormStadeNr = Request.Form("StadeNr" & ID) 
    strSQL = "UPDATE Main SET R1=" & FormR1 & ", R2=" & FormR2 & ", StadeNr=" & FormStadeNr & ", Betalt=" & FormBetalt & " WHERE AutoID=" & ID & ""
    Response.Write strSQL & "<br>"
    oDB.execute (strSQL)
   
Next
End if
%>


<%
Dim strDato
strDato= Trim(Request.QueryString("DatoSoendage"))
response.write "<font face='Arial' size'2'>Søndag den :" & strDato & "<br> </font>"
%>
<html>

<head>
<meta http-equiv="Content-Language" content="da">
<title>Bestillingsoversigt</title>
</head>
<body>

<font face="Arial" size="2">

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="760">

    <tr>
        <td bgcolor="#CC0000"><b><font size="1" color="#FFFFFF">ID</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Navn</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Tlf</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Bestillingsdato</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Dato</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Stade Antal</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Rykker 1</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Rykker 2</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Betalt</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Stadenr.</font></b></td>
        <td bgcolor="#CC0000"><b><font size="2" color="#FFFFFF">Actions</font></b></td>
    </tr>
<%
    Set oDB = Server.CreateObject("ADODB.connection")
      oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/lop_2005.mdb")
p=0
        IF strDato ="" THEN                                                                             'nr I1
            response.write "Du har ikke valgt en dato!!"
        ELSE
            SQL = "SELECT * from main Where Dato='"& strdato &"' ORDER BY ToDayDate"
        END IF                                                                                             'nr I1
    set oRS = oDB.Execute(SQL)
    oRS.Movefirst
    DO WHILE NOT oRS.EOF                                                                                'nr D1
'----------------------------------
        if oRS("R1") = "" then                                                                             'nr I2
              R1 = "true"
        else
              R1 = "false"
        end if                                                                                            'nr I2
'----------------------------------
        if oRS("R2") = "" then                                                                            'nr I3
              R2 = "true"
        else
            R2 = "false"
        end if                                                                                            'nr I3
'----------------------------------
        if oRS("Betalt") = "" then                                                                        'nr I4
              Betalt = "true"
        else
              Betalt = "false"
        end if                                                                                            'nr I4
'----------------------------------
        if p=0 then                                                                                        'nr I5
            bg="bgcolor='#CCCCCC'"
        else
            bg=""
        End if                                                                                            'nr I5
%>
<form name="oversigt" method="Post" action="oversigt_admin.asp">
    <tr>
        <td <%= bg %>valign="top"><font size="1"><%= oRS("AutoID") %><input type=hidden name="ID" value="<%= oRS("AutoID") %>"></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("Navn") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("Tlf") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("ToDayDate") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("Dato") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><%= oRS("StadeAntal") %></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" id="Checks" name="R1" value="<%= oRS("R1") %>" <% if oRS("R1")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" id="Checks" name="R2" value="<%= oRS("R2") %>" <% if oRS("R2")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" id="Checks" name="Betalt" value="<%= oRS("Betalt") %>" <% if oRS("Betalt")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><select name="StadeNr">
        <option value="0">n/a</option>
        <%
        Set oDB2 = Server.CreateObject("ADODB.connection")
          oDB2.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/lop_2005.mdb")
     
            strSQL = "SELECT * FROM stadenr ORDER By Stadenr_tal "
            Set DORS = oDB2.Execute(strSQL)
            Do While Not DORS.EOF                    'nr D2
                IF DORS("Stadenr_tal") = "" OR DORS("Stadenr_tal") = 0 Then                                'nr I6
        %>
        <option value="<%= DORS("Stadenr_tal")%>"><%= DORS("Stadenr_tal")%></option>
                <% ELSE %>
        <option value=" <%= DORS("Stadenr_tal")%>" <% If oRS("StadeNr") = DORS("Stadenr_tal") Then         'nr 6b
            response.Write("selected")%><%end if%>><%= DORS("Stadenr_tal") %></option>                     <%'nr6b %>
        <%
                End If                                                                                    'nr I6
        %>
        <%
            DORS.MoveNext
            Loop
            'Wend                                                                                        'nr D2
          oDB2.Close
          set DORS = Nothing
        %>
        </select></font></td>
        <td <%= bg %>valign="top"><font size="2"></font> </td>
    </tr>

<%
    oRS.MoveNext
    Loop                                                                                                'nr D1
    oDB.Close
    set oRS = Nothing
   
    if p=0 then                                                                                        'nr I7
        p=1
    else
        p=0
    end if                                                                                                'nr I7
%>
<input type="submit" value="Gem Ændringer" name="Submit">
</form>
</table>
<font face="Arial" size="2">
<%
    Set oDB = Server.CreateObject("ADODB.connection")
      oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/lop_2005.mdb")

  SQL= "SELECT COUNT(*) AS antal FROM main WHERE Dato ='" & strDato &"'"
  set oRS = oDB.Execute(SQL)
  Response.Write "Antal bestillinger: " & oRS("Antal")
%></font>

<%
  oDB.Close
  set oRS = Nothing
%>
</font>

</body>
</html>
Avatar billede jesperwerge Nybegynder
29. januar 2005 - 16:56 #6
hjææææælp Er der nogen som har nogle ideer?
Avatar billede erikjacobsen Ekspert
29. januar 2005 - 17:27 #7
Jeg har anført 2 ting du skal rette - troede du var igang.... Er der noget du ikke forstår?
Avatar billede jesperwerge Nybegynder
29. januar 2005 - 18:00 #8
Det er rettet, og jeg får intet fra formen over i opdateringen, sorry
Avatar billede erikjacobsen Ekspert
29. januar 2005 - 18:21 #9
Der er vist kun een form, men der står stadig
    name="R1"
Avatar billede jesperwerge Nybegynder
29. januar 2005 - 22:25 #10
-> erikjacobsen

Jeg tror ikke helt jeg forstår det med name="R1" - eller rettere jeg forstår ikke den tæller jeg har fundet og bruger her, kan du måske forklare mig lidt hvordan det hænger sammen, eller bedre hvordan det skal hænge sammen.
Avatar billede jesperwerge Nybegynder
29. januar 2005 - 22:29 #11
Lige nu ser min Update SQL således ud:

<%
Set oDB = Server.CreateObject("ADODB.connection")
      oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/lop_2005.mdb")
if request.form("submit") <> "" then
   
For Each AutoID IN Request.Form("ID")
    FormR1 = Request.Form("R1" & ID)
    FormR2 = Request.Form("R2" & ID)
    FormBetalt = Request.Form("Betalt" & ID)
    FormStadeNr = Request.Form("StadeNr" & ID) 
    strSQL = "UPDATE Main SET R1=" & FormR1 & ", R2=" & FormR2 & ", StadeNr=" & FormStadeNr & ", Betalt=" & FormBetalt & " WHERE AutoID=" & ID & ""
    oDB.execute (strSQL)
    Response.Write strSQL & "<br>"
Next
End if
%>
Avatar billede jesperwerge Nybegynder
29. januar 2005 - 22:30 #12
og min form indholder følgende:

<td <%= bg %>valign="top"><font size="2"><input type="checkbox" id="ID" name="R1" value="<%= oRS("R1") %>" <% if oRS("R1")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" id="ID" name="R2" value="<%= oRS("R2") %>" <% if oRS("R2")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" id="ID" name="Betalt" value="<%= oRS("Betalt") %>" <% if oRS("Betalt")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><select name="StadeNr" id="ID">
        <option value="0">n/a</option></select>
Avatar billede erikjacobsen Ekspert
31. januar 2005 - 21:03 #13
Det er egentlig meget simpelt. Du skal have dit id nummer på dine navne. Eksempel:

.....name="R1<%=ors("AutoID")%>"....

Jeg mener at kunne se, at det er der dit ID komme fra, men ellers må du ændre navnet.
Avatar billede jesperwerge Nybegynder
01. februar 2005 - 20:01 #14
--> Hej erikjacobsen

jeg har ændret mine name værdier og jeg får nu ikke nogle fejl, men heller ingen opdatering - der sker ikke rigtig noget???

jeg har prøvet at ændre eller omskrive min update statement så den ser således ud:

if request.form("submit") <> "" then

Set oDB = Server.CreateObject("ADODB.connection")
      oDB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/lop_2005.mdb")

For Each AutoID in Request.Form("AutoID")
    strSQL = "Update Main SET " _
        & "R1 = " & Request.Form("R1" & AutoID) & ", "_
        & "R2 = '" & Request.Form("R2" & AutoID) & "', "_
        & "Betalt = " & Request.Form("Betalt" & AutoID) & ", "_
        & "StadeNr = " & Request.Form("StadeNr" & AutoID) & ", "_
        & "WHERE AutoID = " & AutoID

    oDB.execute (strSQL)
    'Response.Write strSQL & "<br>"
Next
oDB.Close
Set oDB = Nothing
End if
%>
Avatar billede erikjacobsen Ekspert
01. februar 2005 - 20:06 #15
Men de hedder stadig ID i din form:

<input type=hidden name="ID" value="737">
Avatar billede jesperwerge Nybegynder
01. februar 2005 - 20:11 #16
det er rettet, men stadig intet resultat

lige nu hedder de følgende

<input type="checkbox" name="R1<%= oRS("AutoID") %>" value="<%= oRS("R1") %>" <% if oRS("R1")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" name="R2<%= oRS("AutoID") %>" value="<%= oRS("R2") %>" <% if oRS("R2")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><input type="checkbox" name="Betalt<%= oRS("AutoID") %>" value="<%= oRS("Betalt") %>" <% if oRS("Betalt")&"" = "True" then response.write "checked" end if %>></font></td>
        <td <%= bg %>valign="top"><font size="2"><select name="StadeNr<%= oRS("AutoID") %>"><option value="0">n/a</option>
Avatar billede erikjacobsen Ekspert
01. februar 2005 - 20:13 #17
Det går ikke at kalde den

  <input type=hidden name="AutoID737" value="737">

men måske

  <input type=hidden name="AutoID" value="737">
Avatar billede jesperwerge Nybegynder
01. februar 2005 - 20:26 #18
ja det hjalp lidt.  - men nu er der en update syntax error - men dt er ikke felt navne som er forkerte???
Avatar billede erikjacobsen Ekspert
01. februar 2005 - 20:43 #19
Joh, måske - det kan vi jo ikke vide. Men i hvert fald skal du tænke på '...' omkring
tekst og ikke omkring talfelters værdier. Hvad er feltet Betalt for en type?
Avatar billede jesperwerge Nybegynder
01. februar 2005 - 20:44 #20
jeg har sat en response.write SQL ud på  og der er der to problemer, tror jeg. det ene er at checkboxen Betalt ikke har en værdi selvom den som standard står i databasen til værdien False - forstår ikke hvorfor den virker i den ovenover men ikke denne?

to min dropdown ser rigtig ud i HTML kodn, men den vælger heletiden kun 0 og ikke det man vælger i den.

jeg giver gerne flere Points hvis det kan lokke til en løsning :o)
Avatar billede jesperwerge Nybegynder
01. februar 2005 - 20:45 #21
både R1, R2, og Betalt felter er YES/NO felter i databasen
Avatar billede erikjacobsen Ekspert
01. februar 2005 - 20:51 #22
Checkbox felter kommer kun med over, hvis der er kryds i dem.
Yes/no-felter er bøvlede - jeg bruger dem aldrig. Kan det passe du kan sætte
dem til true og false ?
Men det skal du altså finde ud af ved at checke på om checkboxen er afkrydset.
Avatar billede jesperwerge Nybegynder
01. februar 2005 - 20:58 #23
kunne man bruge et nummerisk værdi i stedet eks. 0/1 i stedet for Yes/No checkbokse?
Avatar billede jesperwerge Nybegynder
01. februar 2005 - 20:59 #24
eller bare beholder True/False, men bare lave det til et text felt i databasen, ville det ikke gå?
Avatar billede erikjacobsen Ekspert
01. februar 2005 - 21:57 #25
Jeg bruger selv 0/1 - det virker altid uanset DB-system.
Men du kommer ikke udenom at checke for om feltet er krydset af eller ej.
Avatar billede jesperwerge Nybegynder
02. februar 2005 - 21:05 #26
jeg har faktisk en chekker på mine checkfelter:

'----------------------------------
        DIM R1
        if oRS("R1") = "" then                                                                             'nr I2
            R1 = "true"
        else
              R1 = "false"
        end if                                                                                            'nr I2
'----------------------------------
        DIM R2
        if oRS("R2") = "" then                                                                            'nr I3
              R2 = "true"
        else
            R2 = "false"
        end if                                                                                            'nr I3
'----------------------------------
        DIM Betalt
        if oRS("Betalt") = "" then                                                                        'nr I4
              Betalt = "False"
        else
              Betalt = "True"
        end if                                                                                            'nr I4
'----------------------------------
        if p=0 then                                                                                        'nr I5
            bg="bgcolor='#CCCCCC'"
        else
            bg=""
        End if                                                                                            'nr I5
%>
men et af felterne kommer ikke rigtig med, men der er ingen forskel på den og de andre felter
Avatar billede erikjacobsen Ekspert
02. februar 2005 - 21:24 #27
Det er vel ikke dine checkfelter, men dit recordset du tester på.
Avatar billede jesperwerge Nybegynder
02. februar 2005 - 21:48 #28
hehe - jeg rykker dem lige op, så de står ved min update statement, men jeg når det først i morgen.
Avatar billede jesperwerge Nybegynder
03. februar 2005 - 19:23 #29
Jeg har fundet denne if statement til at checke mine checkboxe, men jeg er i tvivl om hvor jeg skal lægge dem i min kode, hvor ville du lægge den?

IF R1 = "on" THEN
    R1 = "True"
ELSE
    R2 = "False"
END IF

IF R2 = "on" THEN
    R2 = "True"
ELSE
    R2 = "False"
END IF

IF Betalt = "on" THEN
    Betalt = "True"
ELSE
    Betalt = "False"
END IF
Avatar billede erikjacobsen Ekspert
03. februar 2005 - 19:27 #30
Jeg ville nok

IF request.form("R1") = "on" THEN
    R1 = "True"
ELSE
    R1 = "False"
END IF

men så skal du også sætte value="on" i dine checkboxe (eller lade være - det er default)
Avatar billede jesperwerge Nybegynder
27. marts 2005 - 12:41 #31
hej erikjacobsen

jeg er gået over til en anden løsning, men tusind tak for din hjælp, jeg må finde noget simplere at begynde med, hvis jeg skal bruge multi update .

vil du ikke smide et svar så får du points, for du har hjælpe mig meget, og undskyld vente tiden for mit svar.
Avatar billede erikjacobsen Ekspert
27. marts 2005 - 21:07 #32
Intet problem med den lange tid. Men jeg samler slet ikke på point, tak.
Avatar billede jesperwerge Nybegynder
27. marts 2005 - 21:10 #33
hej erikjocobsen - det må jeg nok sige tak for dette, det har jeg ikke oplevet før - jeg takker endnu en gang for din hjælp.
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