|  | 		    
					
        
         
          
         
	
          | |  | Opdater Database via Form Fra : Finn Madsen
 | 
 Dato :  25-10-03 22:38
 | 
 |  | 
 
            Igen.. Jeg har skrevet om dette her før herinde, men da min
 harddisk satte ud, og jeg ikke havde backup for over ½ år siden,
 og ikke har kodet siden, er mit asp en andelse rusten. Derfor kan
 jeg ikke se hvad der er galt med denne kode: 
 <% 
 Set Conn = Server.CreateObject("ADODB.Connection") 
 DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " 
 DSN = DSN & "DBQ=" & Server.MapPath("db/data.mdb") 
 Conn.Open DSN 
 If Request.Form("opdater") <> "" Then 
 strSQL = "Update med set" 
 strSQL = strSQL & "navn= ' " & Request.Form("opdater") & " ' " 
 strSQL = strSQL & " Where id = " & Request.Form("id") 
 Conn.Execute(strSQL) 
 Else 
 %> 
 <form action="med-edit.asp" method="post"> 
 <input type="hidden" name="id" id="id" value="<%=
 Request.QueryString("id") %>"> 
 <input type="text" name="opdater" value=""> 
 <input type="submit" value="Gem"> 
 </form> 
 <% 
 End If 
 %> 
 Når jeg trykker på gem, kan den ikke finde side, så kan det være
 noget omkring action="med-edit.asp"? 
 Håber der er nogle der fatter mere end mig (sikkert en del :D ). 
 Hvis i har brug for mere info, så skriv.
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
  Jens Gyldenkærne Cla~ (25-10-2003) 
 
	
          | |  | Kommentar Fra : Jens Gyldenkærne Cla~
 | 
 Dato :  25-10-03 23:03
 | 
 |  |  |  |  | 
  Finn Madsen (26-10-2003) 
 
	
          | |  | Kommentar Fra : Finn Madsen
 | 
 Dato :  26-10-03 12:06
 | 
 |  | 
 
            Efter at have fundet hvor fejlen er, er den i linje 22;
 Conn.Execute(strSQL) 
 Hvad er der galt med den?
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
   Torben Brandt (26-10-2003) 
 
	
          | |  | Kommentar Fra : Torben Brandt
 | 
 Dato :  26-10-03 12:21
 | 
 |  | 
 
            Finn Madsen skrev:
 > Efter at have fundet hvor fejlen er, er den i linje 22;
 > 
 > Conn.Execute(strSQL) 
 > 
 > Hvad er der galt med den?
 Fik du læst hele det link Jens gav dig - også det om at udskrive din 
 sql-streng?
 <URL:http://asp-faq.dk/article/?id=41> Du mangler et mellemrum (og har måske to for meget et andet sted)
 /Torben
            
             |  |  | 
    Finn Madsen (26-10-2003) 
 
	
          | |  | Kommentar Fra : Finn Madsen
 | 
 Dato :  26-10-03 13:22
 | 
 |  | 
 
            > Fik du læst hele det link Jens gav dig - også det om at udskrive din  
 > sql-streng? 
 > <URL:http://asp-faq.dk/article/?id=41> Ja, jeg læste alle tre, men fandt ingen sammenligning med linket, og min
 kode. Forstod det ikke.
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
     Torben Brandt (26-10-2003) 
 
	
          | |  | Kommentar Fra : Torben Brandt
 | 
 Dato :  26-10-03 13:29
 | 
 |  | 
 
            Finn Madsen skrev:
 >>Fik du læst hele det link Jens gav dig - også det om at udskrive din  
 >>sql-streng? 
 >><URL:http://asp-faq.dk/article/?id=41> > 
 > Ja, jeg læste alle tre, men fandt ingen sammenligning med linket, og min
 > kode. Forstod det ikke.
 Artiklen handler bla. om hvilke informationer der er nødvendige for at 
 løse et problem, herunder database-fejl som i dit tilfælde.
 Man skal bruge lidt relevant kode:
 1. Typisk opbygningen af sql-strengen - det var med i dit første indlæg.
 2. Hvilken fejl der kommer - indeholder bla linienummer, men også en 
 beskrivelse af fejlen. Fejlen kan ses i browseren.
 F.eks. Syntaks Error in UPDATE ...
 3. Resultatet af nedenstående kode som indsættes før umiddelbart før 
 linie med Conn.Execute(strSQL):
   Response.Write strSQL
   Response.End
 Det er det der sendes til databasen, så det må være det, der indeholder 
 fejlen.
 Så du bliver nødt til at give os informationerne fra 2. og 3.
 Ofte kan 3. hjælpe til at se indlysende fejl, så det bør være der man 
 altid kigger først.
 /Torben
            
             |  |  | 
      Finn Madsen (26-10-2003) 
 
	
          | |  | Kommentar Fra : Finn Madsen
 | 
 Dato :  26-10-03 13:52
 | 
 |  | 
 
            > Man skal bruge lidt relevant kode: 
 > 1. Typisk opbygningen af sql-strengen - det var med i dit første indlæg. 
 > 2. Hvilken fejl der kommer - indeholder bla linienummer, men også en  
 > beskrivelse af fejlen. Fejlen kan ses i browseren. 
 > F.eks. Syntaks Error in UPDATE ... 
 > 3. Resultatet af nedenstående kode som indsættes før umiddelbart før  
 > linie med Conn.Execute(strSQL): 
 >   Response.Write strSQL 
 >   Response.End 
 > Det er det der sendes til databasen, så det må være det, der indeholder  
 > fejlen.
 Okay, jeg prøver igen så:
 Fejlen lyder på:
 Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 
 [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator)
 in query expression 'id ='. 
 /med-edit.asp, line 22 
 <% 
 Set Conn = Server.CreateObject("ADODB.Connection")
 DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
 DSN = DSN & "DBQ=" & Server.MapPath("db/data.mdb")
 Conn.Open DSN
 If Request.Form("opdater") <> "" Then 
 strSQL = "Update med set" 
 strSQL = strSQL & "navn= ' " & Request.Form("opdater") & " ' " 
 strSQL = strSQL & " Where id = " & Request.Form("id") 
 Conn.Execute(strSQL)     <---- Dette er linje 22!!!
 Else 
 %> 
 <form action="med-edit.asp" method="post"> 
 <input type="hidden" name="id" id="id" value="<%= Request.QueryString("id")
 %>"> 
 <input type="text" name="opdater" value=""> 
 <input type="submit" value="Gem"> 
 </form> 
 <% 
 End If 
 %>
 Er det sådan jeg skal skrive indlægget?
 Mvh 
 Finn Madsen
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
  Jens Gyldenkærne Cla~ (26-10-2003) 
 
	
          | |  | Kommentar Fra : Jens Gyldenkærne Cla~
 | 
 Dato :  26-10-03 14:28
 | 
 |  | 
 
            Finn Madsen skrev:
 >> 3. Resultatet af nedenstående kode som indsættes før
 >> umiddelbart før  linie med Conn.Execute(strSQL): 
 >>   Response.Write strSQL 
 >>   Response.End 
 Ovenstånde mangler stadig - men jeg tror godt vi kan finde fejlen 
 alligevel.
 > [Microsoft][ODBC Microsoft Access Driver] Syntax error
 > (missing operator) in query expression 'id ='. 
 O.k. - der mangler en operator i sql-linjen.
 > strSQL = "Update med set" 
 > strSQL = strSQL & "navn= ' " & Request.Form("opdater") & " ' "
 > strSQL = strSQL & " Where id = " & Request.Form("id") 
 Hvis du havde udskrevet strSQL (som beskrevet i det øverste citat i 
 indlægget her samt på den første side jeg henviste til) - ville du 
 se noget ligende det her:
 Update med setnavn= ' Hans Kurt '  Where id = 42
 Som du kan se mangler der et mellemrum mellem set og navn. Det 
 kunne du sikkert selv have opdaget hvis du havde udskrevet strSQL 
 og set sætningen i sin helhed. Det er derfor det første råd ved 
 problemer med sql-sætninger er: Udskriv den færdige sql-variabel.
 Der er også et par ekstra mellemrum omkring navnet - det giver ikke 
 sql-fejl, men du får noget andet ind i databasen end du måske 
 forventer.
 > Er det sådan jeg skal skrive indlægget?
 Prøv at læse <http://asp-faq.dk/article/?id=41>  en gang mere - 
 specielt anden halvdel af artiklen.
 -- 
 Jens Gyldenkærne Clausen
 Svar venligst under det du citerer, og citer kun det der er 
 nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og 
 hvordan på http://usenet.dk/netikette/citatteknik.html |  |  | 
   Finn Madsen (26-10-2003) 
 
	
          | |  | Kommentar Fra : Finn Madsen
 | 
 Dato :  26-10-03 15:26
 | 
 |  | 
 
            > 3. Resultatet af nedenstående kode som indsættes før 
 > umiddelbart før  linie med Conn.Execute(strSQL):  
 > Response.Write strSQL  
 > Response.End  
 strSQL = "Update med Set navn= '" & Request.Form("opdater") & "'
 Where Id = 1"
 Okay, nu har jeg fået lavet den så jeg kan ændre indholdet af
 databasen, men kun på den der har værdien 1. Hvordan ændre jeg det
 til at den selv finder ud af hvilken jeg vil ændre?
 Jeg har prøvet at indsætte denne linje:
 & Request.Form("id")
 istedet for 1, da jeg har en form:
 <input type="hidden" name="id" id="id" value="<%=
 Request.QueryString("id") %>">
 Håber der er en der stadig vil hjælpe.
 Mvh
 Finn Madsen
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
    Torben Brandt (26-10-2003) 
 
	
          | |  | Kommentar Fra : Torben Brandt
 | 
 Dato :  26-10-03 16:27
 | 
 |  | Finn Madsen skrev:
 
 >>3. Resultatet af nedenstående kode som indsættes før
 >>umiddelbart før  linie med Conn.Execute(strSQL):
 >>Response.Write strSQL
 >>Response.End
 >
 > strSQL = "Update med Set navn= '" & Request.Form("opdater") & "'
 > Where Id = 1"
 
 Det er ikke helt de Jens og jeg mener.
 Du har noget kode:
 strSQL = "Update med set "
 strSQL = strSQL & "navn= '" & Request.Form("opdater") & "' "
 strSQL = strSQL & " Where id = " & Request.Form("id")
 Efter de linier skal du skrive:
 Response.Write strSQL
 Response.End
 Så kommer der noget tekst i browseren i stil med:
 Update med set ...
 
 Det er den linie du skal kopiere fra din browser og sætte den ind her.
 
 Så kan vi bla. se hvad Request.Form("opdater") og Request.Form("id")
 indeholder.
 
 Så send os lige den linie.
 
 /Torben
 
 
 
 |  |  | 
     Finn Madsen (26-10-2003) 
 
	
          | |  | Kommentar Fra : Finn Madsen
 | 
 Dato :  26-10-03 16:37
 | 
 |  | 
 
            Okay, den gik rent ind.
 Dette er linjen der kommer ud:
 Update med set navn= 'test' Where id =
 Som det kan ses, er der intet ud fra id, hvor der skulle have stået 1, da
 jeg prøver at ændre 1.
 Mvh
 Finn Madsen
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
      Torben Brandt (26-10-2003) 
 
	
          | |  | Kommentar Fra : Torben Brandt
 | 
 Dato :  26-10-03 16:46
 | 
 |  | Finn Madsen skrev:
 > Okay, den gik rent ind.
 >
 > Dette er linjen der kommer ud:
 >
 > Update med set navn= 'test' Where id =
 >
 > Som det kan ses, er der intet ud fra id, hvor der skulle have stået 1, da
 > jeg prøver at ændre 1.
 
 Præcis. Så er spørgsmålet jo hvorfor der ikke står noget i
 Request.Form("id")...
 
 Så må du se på den side hvor formen ligger på. Se i kildekoden [1]:
 a. Bliver formen sendt med method="post" ?
 b. Hvad indeholder <input name="id" .... ? Står der 1 her ?
 c. Find selv på flere :)
 
 
 [1] Højreklik i browseren og vis kilde.
 
 /Torben
 
 
 
 |  |  | 
       Finn Madsen (26-10-2003) 
 
	
          | |  | Kommentar Fra : Finn Madsen
 | 
 Dato :  26-10-03 17:02
 | 
 |  | 
 
            > a. Bliver formen sendt med method="post" ? <--- Ja
 <form action="med-edit.asp" method="post">
 > b. Hvad indeholder <input name="id" .... ? Står der 1 her ? <--- Nej, intet.
 <input type="hidden" name="id" id="id" value=""> 
 > c. Find selv på flere :) 
 Ud fra det, vil jeg med meget lidt kendskab til asp sige at fejlen enten
 ligger her:
 Where Id = " & Request.Form("id")
 Eller her :
 <input type="hidden" name="id" id="id" value="<%= Request.QueryString("id")
 %>"> 
 Mvh
 Finn Madsen
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
        Torben Brandt (26-10-2003) 
 
	
          | |  | Kommentar Fra : Torben Brandt
 | 
 Dato :  26-10-03 17:19
 | 
 |  | Finn Madsen skrev:
 >>b. Hvad indeholder <input name="id" .... ? Står der 1 her ? <--- Nej, intet.
 >
 > <input type="hidden" name="id" id="id" value="">
 
 Se, det er årsagen. Når value="" så bliver der ikke medsendt noget.
 
 > Ud fra det, vil jeg med meget lidt kendskab til asp sige at fejlen enten
 > ligger her:
 >
 > Where Id = " & Request.Form("id")
 
 Nej, det jo klart at den må være tom, fejlen ligger i at value=""
 
 > Eller her :
 >
 > <input type="hidden" name="id" id="id" value="<%= Request.QueryString("id")
 > %>">
 
 Ja, Request.QueryString("id") må være tom.
 Det står kun noget i den, hvis du kalder siden med formen med .asp?id=1.
 Du skal altså hver gang du linker til siden med formen skrive noget i
 ..asp?id=xx
 
 /Torben
 
 
 
 |  |  | 
         Finn Madsen (26-10-2003) 
 
	
          | |  | Kommentar Fra : Finn Madsen
 | 
 Dato :  26-10-03 17:27
 | 
 |  | 
 
            Hvis dumhed blev belønnet, så skulle jeg ha en Mercedes. Straks.
 Hvis du/i har brug for latter, så tjek den side jeg sender det fra:
 Response.Write "<a href='med-edit.asp?di=" & rs("id") & "' <b>Rediger</b></a>"
 di = id. Jeg har ikke skænet det en tanke, og opdagede det heller ikke da jeg
 tjekke det.
 Den anden side vil lede efter id, men der er kun noget di.
 Mange tak for hjælpen!!
 Mvh
 Finn Madsen
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
  Jens Gyldenkærne Cla~ (26-10-2003) 
 
	
          | |  | Kommentar Fra : Jens Gyldenkærne Cla~
 | 
 Dato :  26-10-03 17:21
 | 
 |  | 
 
            Finn Madsen skrev:
 >> b. Hvad indeholder <input name="id" .... ? Står der 1 her ?
 >> <--- Nej, intet. 
 > 
 > <input type="hidden" name="id" id="id" value=""> 
 Så er fejlen at der ikke bliver skrevet den værdi i value som du 
 forventer.
 > Ud fra det, vil jeg med meget lidt kendskab til asp sige at
 > fejlen enten ligger her:
 > 
 > Where Id = " & Request.Form("id")
 Nej - når du har fundet ud af at input-feltet id er tomt, ligger 
 fejlen der.
 > <input type="hidden" name="id" id="id" value="<%=
 > Request.QueryString("id") %>"> 
 Ja. Noget er galt her. Kalder du siden med querystringen "?id=1" ? 
 Prøv evt at skrive Response.write Request.Querystring()
 -- 
 Jens Gyldenkærne Clausen
 Svar venligst under det du citerer, og citer kun det der er 
 nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og 
 hvordan på http://usenet.dk/netikette/citatteknik.html |  |  | 
 |  |