Avatar billede damnit Nybegynder
29. december 2005 - 15:42 Der er 29 kommentarer

Update set problem (newbie)

Hey dér

Jeg har sådan en form her... Men når jeg forsøger at køre den, siger den:

Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression 'id ='.
/l/cms/Default.asp, line 165

Den ser sådan her ud:
<%
if up = "go" then
    strSQL = "UPDATE Menu SET aktiv = 'on' WHERE id = " &request.Form("'nr'")& ""
        Conn.Execute(strSQL)
                       
        response.Write "Punktet er gendannet"
       
        Conn.Close
        Set Conn = Nothing
    end if
    %>

<h1>Gendan menupunkt</h1>
   
<form method="post" action="?edit=<%=edit%>&update=go">
    Vælg et punkt:
    <select>
        <%
            do while NOT menu_RS2.eof
                response.write "<option name=""nr"" value=""" & menu_RS2("id") & """>" & menu_RS2("menuNavn") & "</option>"
            menu_RS2.movenext
            loop
        %>
    </select>
    <br />
    <input type="submit" value="Gendan" />
   
</form>

Har brug for et hurtigt svar :)
Avatar billede trekkies Juniormester
29. december 2005 - 15:44 #1
Prøv denne SQL:
strSQL = "UPDATE Menu SET aktiv = 'on' WHERE ID=" & TRIM(Request.QueryString("nr"))
Avatar billede trekkies Juniormester
29. december 2005 - 15:45 #2
Hvis det ikke virker så sæt denne linie ind:
Response.Write strSQL
efter update sætningen
og sæt ' foran følgende sætninger:
Conn.Execute(strSQL)
                     
response.Write "Punktet er gendannet"
     
Conn.Close
Set Conn = Nothing

Se hvad den så siger.
Avatar billede damnit Nybegynder
29. december 2005 - 15:55 #3
Første linie virkede ikke...
UPDATE Menu SET aktiv = 'on' WHERE id =

Ser ud som om, at den slet ikke kan finde ud af at hente ID'et i formen? Men jeg skal måske parameter overføre den linie eller hvordan? Lige nu henter jeg den jo bare i formen? Er det ikke muligt? Jeg har aldrig prøvet at lave sådan en update før :)
Avatar billede trekkies Juniormester
29. december 2005 - 15:57 #4
Prøv det jeg skriver "29/12-2005 15:45:37"
Den måde vises hvad der gemmes i databasen.
Avatar billede trekkies Juniormester
29. december 2005 - 15:58 #5
Du har husket at hente id'et ind på siden, fra den side du kommer fra?
Avatar billede damnit Nybegynder
29. december 2005 - 16:00 #6
Jamen det var faktisk det jeg skrev her:
UPDATE Menu SET aktiv = 'on' WHERE id =

Hehe... glemte jeg lige at nævne:D
Avatar billede trekkies Juniormester
29. december 2005 - 16:02 #7
OK :)

Det ser ud til at du ikke får id'et med over.

HUSK at du skal først hente id'et i databasen ellers har du ikke noget sted at gemme dine nye oplysninger.
Avatar billede damnit Nybegynder
29. december 2005 - 16:04 #8
Altså kigger jeg i den RENE HTML som den er genereret efter jeg har lavet din ændring, så ser den således ud:

<div id="main">
        UPDATE Menu SET aktiv = 'on' WHERE id =
               
                <h1>Gendan menupunkt</h1>
                   
                <form method="post" action="?edit=4&update=go">
                    Vælg et punkt:
                    <select>
                        <option name="nr" value="12">BlapTest</option>

                    </select>
                    <br />
                    <input type="submit" value="Gendan" />
                   
                </form>
               
               
    </div>


Det jeg så prøver er at kalde nr i en form.request
Avatar billede trekkies Juniormester
29. december 2005 - 16:04 #9
F.eks.
Du er på denne side:
side.asp
og skal over til denne side:
ret.asp
Så skal du huske at have id'et med, det gøres sådan:
ret.asp?id=<%=id%>
Så kommer id'et med over og der hentes kun oplysninger ud fra det ene id, men kun hvis du husker at selecte alt ud fra det ene id.
Avatar billede damnit Nybegynder
29. december 2005 - 16:05 #10
Value er selvfølgelig hentet fra databasen, så det passer sammen...
Avatar billede trekkies Juniormester
29. december 2005 - 16:05 #11
Hvordan ser din side ud som du kommer fra(når at du vil hente dine oplysninger)?
Avatar billede damnit Nybegynder
29. december 2005 - 16:05 #12
True... Men behøver jeg at parameter overføre det id? Kan jeg ikke bare requeste det fra formen??
Avatar billede ranglen Nybegynder
29. december 2005 - 16:06 #13
din select/option er forkert :)

<select name="id">
  <option value="12">BlapTest</option>
</select>

det er <select> som skal navngives
Avatar billede damnit Nybegynder
29. december 2005 - 16:11 #14
Kæft en klovn jeg er :D

<div id="main">
UPDATE Menu SET aktiv = 'on' WHERE id =
       
        <h1>Gendan menupunkt</h1>
           
        <form method="post" action="?edit=4&update=go">
            Vælg et punkt:
            <select name="nr">
                <option value="12">BlapTest</option>

            </select>
            <br />
            <input type="submit" value="Gendan" />
           
        </form>
       
       
</div>

Så ser det sådan der ud... Men fejlen er stadig den samme :S
Avatar billede damnit Nybegynder
29. december 2005 - 16:12 #15
Jeg har på fornemmelsen, at jeg måske laver SQL-kaldet forkert... Altså at jeg først kalder den her:

if up = "go" then
    strSQL = "UPDATE Menu SET aktiv = 'on' WHERE id = " &request.Form("'nr'")& ""
        Conn.Execute(strSQL)
                     
        response.Write "Punktet er gendannet"
     
        Conn.Close
        Set Conn = Nothing
end if

For kan man så godt bede den hente request.form? Det er jo på foregående side det er sket - så måske man i det her tilfælde skal paramteroverføre?? - men hvordan kan man ellers lave det?? Måske jeg skal kopiere lidt mere af min kode?
Avatar billede damnit Nybegynder
29. december 2005 - 16:26 #16
Hov trekkies, havde ikke set din post... 2 sek
Avatar billede damnit Nybegynder
29. december 2005 - 16:27 #17
<%       
elseif edit = 4 then
    if up = "go" then
        strSQL = "UPDATE Menu SET aktiv = 'on' WHERE id = " &request.Form("'nr'")& ""
        'Conn.Execute(strSQL)
                        Response.Write strSQL
        'response.Write "Punktet er gendannet"
       
        'Conn.Close
        'Set Conn = Nothing
    end if
    %>

<h1>Gendan menupunkt</h1>
   
<form method="post" action="?edit=<%=edit%>&update=go">
    Vælg et punkt:
    <select name="nr">
        <%
            do while NOT menu_RS2.eof
                response.write "<option value=""" & menu_RS2("id") & """>" & menu_RS2("menuNavn") & "</option>"
            menu_RS2.movenext
            loop
        %>
    </select>
    <br />
    <input type="submit" value="Gendan" />
   
</form>

<%
end if
%>

Så dvs, man starter med at komme ind på default.asp?edit=4 - når man så trykker Gendan, så ryger man til default.asp?edit=4&update=go

Derfor er jeg i tvivl om man kan lave sådan en request.form i SQLen på den måde jeg har gjort det... Tror det ikke - men ANER ikke hvordan det så skal se ud :)
Avatar billede damnit Nybegynder
29. december 2005 - 16:28 #18
Jeg har også
    up = request.QueryString("update")
    edit = request.QueryString("edit")
   

i toppen af siden
Avatar billede trekkies Juniormester
29. december 2005 - 16:32 #19
Hvor er din SELECT sætning?
Avatar billede ranglen Nybegynder
29. december 2005 - 16:33 #20
dit felt hedder nr ikke 'nr'

så prøv med

&request.Form("nr")
Avatar billede damnit Nybegynder
29. december 2005 - 16:36 #21
Yessir! :) Så spiller den med ID'et korrekt...
Nu siger den bare:

Microsoft JET Database Engine error '80040e07'

Data type mismatch in criteria expression.

/l/cms/Default.asp, line 165

linie 165 = Conn.Execute(strSQL)
Avatar billede damnit Nybegynder
29. december 2005 - 16:37 #22
Min SELECT sætning sidder lige højere i dokumentet - regnede med den var ligegyldig her, men den ser således ud:
        if edit = 4 then
            menu_SQL2 = "SELECT id, menuNavn FROM Menu WHERE aktiv = false ORDER BY id"
            set menu_RS2 = conn.execute(menu_SQL2)
        end if
Avatar billede trekkies Juniormester
29. december 2005 - 16:38 #23
Hvilken type er "aktiv" er det tal eller tekst felt i databasen?
Avatar billede damnit Nybegynder
29. december 2005 - 16:41 #24
Det er en boolean i en access db...
Avatar billede damnit Nybegynder
29. december 2005 - 16:43 #25
Hmm nu fjernede jeg ' ' rundt om - så spiller den sataneddeme!! :D Tusind tak for hilfen.... Er det fair hvis trekkies for 175 og ranglen får 25 ??
Avatar billede trekkies Juniormester
29. december 2005 - 16:46 #26
Jeg vil kune have 50 point, resten kan du give til ranglen
Avatar billede damnit Nybegynder
29. december 2005 - 16:49 #27
Jamen du har jo løst det hele for mig næsten??
Avatar billede trekkies Juniormester
29. december 2005 - 16:54 #28
Måske, men jeg vil helst ikke have så mange point :)
Avatar billede damnit Nybegynder
29. december 2005 - 16:56 #29
Høh... Fair nok... Venter lige på Ranglens post så jeg kan fordele pointene!... Tusind tak for jeres tid...
Virkelig lækkert!
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