Avatar billede lauritst Nybegynder
15. oktober 2005 - 14:36 Der er 43 kommentarer og
2 løsninger

Kan ikke finde problem i opdaterings asp

Jeg har lavet en opdateringsformular som vidersendes til en asp-fil, som skal opdatere felterne i databasen. Jeg kan dog ikke få den asp side der skal opdatere oplysningerne til at fungere og jeg kan ikke helt finde ud af, hvorfor den ikke virker. Er der nogen der kan se hvad jeg gør forkert?

<html>
<title>Opdatere data i databasen</title>
<head>
</head>
<body>
<%
Dim strVikar
Dim strfakturanr

strVikar=  Request.Form("vikartypeny")
strfakturanr=  Request.Form("fakturanummerny")

' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/vikardatabasen.mdb")
Conn.Open DSN

' SQL sætning opbygges
strSQL = "Update faktura set "
strSQL = strSQL & "[Vikar type]= ' "& strVikar & " ', "
strSQL = strSQL & " Where fakturanummer = " & strfakturanr &" "

' SQL sætning eksekveres
Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
<h1>Databasen er opdateret!</h1>
</body>
</html>
Avatar billede trekkies Juniormester
15. oktober 2005 - 14:42 #1
Får du en fejl?

Prøv dette:
Hvis du bruger Internet Explorer, så kan få en bedre fejl kode/beskrivelse ved at slå denne fra i IE:

Funktioner -> Internetindstillinger -> Avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"

Se om du får en fejl besked nu.
Avatar billede lauritst Nybegynder
15. oktober 2005 - 14:55 #2
Jeg får følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/rettelse3.asp, line 25
Avatar billede lauritst Nybegynder
15. oktober 2005 - 14:56 #3
Tak for tippen om: "vis meddelelse om uskadelige http-fejl" i øvrigt:-).
Avatar billede trekkies Juniormester
15. oktober 2005 - 14:57 #4
Tak for det, kigger på din SQL sætning.
Avatar billede trekkies Juniormester
15. oktober 2005 - 15:01 #5
Prøv denne sætning:
strSQL = strSQL & " Where fakturanummer = " & TRIM(Request.Querystring("strfakturanr"))

I stedet for den anden.

Du skal bare sætte en ' foran den gammel sætning, så du behøver ikke at slette den gammel, før at vi ved om den nye virker.
Avatar billede trekkies Juniormester
15. oktober 2005 - 15:47 #6
Du skriver bare hvis du har problemer.
Avatar billede trekkies Juniormester
15. oktober 2005 - 17:12 #7
Hvis den ikke virker, så prøv følgende:
Indsæt denne linie:
Response.Write strSQL

Den skal være lige før "Conn.Execute(strSQL)"

Når at man bruger "Response.Write strSQL" så skal der være ' foran "Conn.Execute(strSQL)", "Conn.Close" og "Set Conn = Nothing"

Ved at bruge "Response.Write strSQL" så kan man se hvad man vil gemme i databasen.
Avatar billede trekkies Juniormester
16. oktober 2005 - 11:36 #8
Hvordan går det?
Avatar billede lauritst Nybegynder
16. oktober 2005 - 15:40 #9
Jeg får ikke gjort mere ved det før i morgen (mandag), men så giver jeg en tilbagemelding og giver dig point.
Avatar billede trekkies Juniormester
16. oktober 2005 - 15:50 #10
Det er helt i orden, jeg ville være høre hvordan det gik :)
Avatar billede lauritst Nybegynder
17. oktober 2005 - 08:12 #11
Når jeg sætter response.write sætning ind får jeg følgende:
Update faktura set [Vikar type]= ' Portør ', Where fakturanummer =
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/rettelse3.asp, line 28



Så det kunne vel tyde på, at fakturanummeret ikke kommer med over fra formularen på den forgående side.

Den del af scriptet fra den forgående side, der gerne skulle sende fakturanummeret videre til sql sætningen på denne side ser således ud:

Response.Write "<tr><td><B>Fakruranummer:</B><td><td><input type=""text"" value=""" & rsvikar("fakturanummer") & """ name=""fakturanummerny""></td></tr>" & vbcrlf
Avatar billede inglenook Praktikant
17. oktober 2005 - 08:18 #12
denne linie:
strSQL = strSQL & "[Vikar type]= ' "& strVikar & " ', "

skal aendres til:
strSQL = strSQL & "[Vikar type]= '"& strVikar & "' "
Avatar billede inglenook Praktikant
17. oktober 2005 - 08:23 #13
og saa maa du have tilrettet siderne.
Paa den ene side bruger du "strfakturanr" og paa den naeste bruger du "fakturanummer"  .....
Avatar billede lauritst Nybegynder
17. oktober 2005 - 08:27 #14
Men vikartypen gå såden set fint nok med over. Den står til at være 'portør'. Det ser nærmere ud til, at jeg har problemer med at få felter der er numeriske med over.
Avatar billede trekkies Juniormester
17. oktober 2005 - 08:46 #15
Den side du kommer fra, sender den dit fakturanummer med over?

Se din "form" sætning, hvad står der der?
Avatar billede lauritst Nybegynder
17. oktober 2005 - 09:21 #16
Det burde den gøre. formularen der sender oplysninger med over ser således ud:
<% Response.Write "<form action=""rettelse3.asp"" method=""post"">"

Response.Write "<tr><td><B>Fakruranummer:</B><td><td><input type=""text"" value=""" & rsvikar("fakturanummer") & """ name=""fakturanummerny""></td></tr>"
Response.Write "<tr><td><B>Vikar type:</B><td><td><input type=""text"" value=""" & rsvikar("vikar type") & """ name=""vikartypeny""></td></tr>" & vbcrlf
Response.Write "<tr><td><B>Vikar bureau:</B><td><td><input type=""text"" value=""" & rsvikar("Vikar burareau") & """ name=""vikarburareauny""></td></tr>" & vbcrlf
Response.Write "<tr><td><B>Start dato:</B><td><td><input type=""text"" value=""" & rsvikar("Dato start") & """ name=""startdatony""></td></tr>" & vbcrlf
Response.Write "<tr><td><B>Start tid:</B><td><td><input type=""text"" value=""" & rsvikar("Tid start") & """ name=""Tid start""></td></tr>" & vbcrlf
Response.Write "<tr><td><B>Slut dato</B><td><td><input type=""text"" value=""" & rsvikar("Dato slut") & """ name=""slutdatony""></td></tr>" & vbcrlf
Response.Write "<tr><td><B>Slut tid</B><td><td><input type=""text"" value=""" & rsvikar("Tid slut") & """ name=""tidslutny""></td></tr>" & vbcrlf
' hvis det er et alm. text-input-felt.



%></table><input type="submit" name="submit" value="Søg">  </td>

<td><input type="reset" value="Ryd"></td></tr><%
Response.Write "</form>"



Det lader til, at mit problem muligvis har noget med numeriske værdier at gøre.
Avatar billede trekkies Juniormester
17. oktober 2005 - 09:27 #17
Hvis det er den side hvor at du sender dine oplysninger fra, så mangler du at sende dit fakturanummer med over, det skal være oppe i din action="rettelse3.asp"

Men jeg ville bruge denne:
<% Response.Write "<form action=""rettelse3.asp?id=<%=rs("fakturanummer")%>"" method=""post"">"

Men efter som at du bruger <% og %> til hele siden, tror jeg ikke at min løsning ville virke, da der også er <%%> i actionen.
Avatar billede lauritst Nybegynder
17. oktober 2005 - 09:36 #18
får jeg den ikke med her: Response.Write "<tr><td><B>Fakruranummer:</B><td><td><input type=""text"" value=""" & rsvikar("fakturanummer") & """ name=""fakturanummerny""></td></tr>"
Avatar billede trekkies Juniormester
17. oktober 2005 - 10:20 #19
Jo, det gør du, men hvis du vil opdatere et bestemt id/Fakruranummer, så skal du have dit Fakruranummer op i formen, på den måde vil kun det ene Fakruranummer blive opdateret.
Avatar billede lauritst Nybegynder
17. oktober 2005 - 10:23 #20
Du har sikekrt ret. Jeg troede det var det jeg gjorde med sætningen:
strSQL = strSQL & " Where fakturanummer = " & strfakturanr &" " . Jeg prøver at gøre det via id og ser om det hjælper.
Avatar billede trekkies Juniormester
17. oktober 2005 - 10:24 #21
Det gør du også, men da den ikke kan finde Fakruranummeret, så får du fejlen.

Hvis du giver mig lidt tid, så skal jeg kigge på dine sætninger.
Avatar billede trekkies Juniormester
17. oktober 2005 - 10:29 #22
Har du mulighed for at sende mig nogle af dine filer og database, da det vil gøre det nemmere?

Jeg skal nok slette dem bagefter.

Min mail adresse er: spam  @    darkskies    .  dk

HUSK at fjerne mellemrummene.
Avatar billede lauritst Nybegynder
17. oktober 2005 - 10:43 #23
ok, nu har jeg sendt dig databasen samt asp siderne forbundet med opdateringsproceduren.
Avatar billede trekkies Juniormester
17. oktober 2005 - 10:45 #24
Fået dem, og kigger på det.
Avatar billede trekkies Juniormester
17. oktober 2005 - 11:01 #25
Jeg kan ikke bruge din database fil, kan du ikke prøve at sende den igen?

Den siger at din database fil har en fejl, jeg kører med Access 2003, hvilken version har du lavet din database fil i?
Avatar billede lauritst Nybegynder
17. oktober 2005 - 12:23 #26
Jeg har sendt den igen. Det er Access 2003.
Avatar billede lauritst Nybegynder
17. oktober 2005 - 12:49 #27
Ok, nu er jeg så langt, at jeg får oplysningerne med over, men der er fortsat en syntakstfejl. Jeg får nu denne fejlmeddelse:

Update faktura set [Vikar type]= ' Portør ', [vikar burareau]= ' 2 ', [Tid start]= ' 10:00:00 ', Where fakturanummer = 1111111111
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/rettelse3.asp, line 34
Avatar billede trekkies Juniormester
17. oktober 2005 - 13:04 #28
Prøv at fjerne ' erne ved Tid start
Avatar billede trekkies Juniormester
17. oktober 2005 - 13:05 #29
Nu står der:
strSQL = strSQL & "[Tid start]= ' "& strStarttid & " ', "

Prøv denne i stedet for:
strSQL = strSQL & "[Tid start]= "& strStarttid & ", "
Avatar billede lauritst Nybegynder
17. oktober 2005 - 13:23 #30
Den vil vist har 'erne med. Ellers skriver den:
Syntax error (missing operator) in query expression '10:00:00'
Avatar billede trekkies Juniormester
17. oktober 2005 - 13:24 #31
Ok, jeg ved at der er noget med tal og '
Avatar billede lauritst Nybegynder
17. oktober 2005 - 13:29 #32
Men det ser ud til at jeg får alle felterne med nu, men at der stadig er en syntakst fejl
Avatar billede trekkies Juniormester
17. oktober 2005 - 13:30 #33
Kan du ikke vise os din update sætning igen, men kun hvis du har ændret i den?
Avatar billede lauritst Nybegynder
17. oktober 2005 - 13:39 #34
strSQL = "Update faktura set "
strSQL = strSQL & "[Vikar type]= ' "& strVikar & " ', "
strSQL = strSQL & "[vikar burareau]= ' "& strbureau & " ', "
strSQL = strSQL & "[Tid start]= ' "& strStarttid & "  ', "
strSQL = strSQL & " Where fakturanummer = " & strfakturanr &"  "
Avatar billede trekkies Juniormester
17. oktober 2005 - 13:40 #35
Hvad sker der hvis du sætter ' foran Response.Write strSQL og fjerner de andre ' er?
Avatar billede lauritst Nybegynder
17. oktober 2005 - 13:43 #36
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '10:00:00'.

/rettelse3.asp, line 33
Avatar billede trekkies Juniormester
17. oktober 2005 - 13:45 #37
Der er galt med din tid start, det er mærkeligt, men kigger lige om google.
Avatar billede trekkies Juniormester
17. oktober 2005 - 13:49 #38
Kigget på google.dk og fundet denne side:
http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_14622

Den siger at det måske har noget med speciale tegn at gøre, f.eks. disse:
. / * : ! # & - ?
Avatar billede lauritst Nybegynder
17. oktober 2005 - 13:53 #39
Men jeg bruger ikke specialtegn i kolonne navnet, hvilket er det problem de behandler.
Avatar billede lauritst Nybegynder
17. oktober 2005 - 14:01 #40
Jeg har fundet fejlen. Der er et komma for meget i strSQL = strSQL & "[Tid start]= ' "& strStarttid & "  ', ". Det skal der ikke være i den sidste linie inden "where" linien.

Tak for alt din hjælp. Det var pænt af dig at bruge så meget tid på det og dine forslag gjorde da også, at vi kom et langt stykke af vejen. Så smid et svar, så får du dine point.
Avatar billede trekkies Juniormester
17. oktober 2005 - 14:04 #41
Godt at fejlen er fundet, men du tager bare dem selv :)

HUSK at sætte ' foran Response.Write strSQL og fjern de andre ' er, så dine brugere ikke kan se hvor tingene bliver gemt.
Avatar billede lauritst Nybegynder
17. oktober 2005 - 14:06 #42
Ja det skal jeg nok. Men jeg synes lige du skal smide et svar. Du har været så hjælpsom.
Avatar billede trekkies Juniormester
17. oktober 2005 - 14:08 #43
Så deler vi i stedet for, da jeg næsten ikke har lavet noget.
Avatar billede lauritst Nybegynder
17. oktober 2005 - 14:41 #44
ok
Avatar billede trekkies Juniormester
17. oktober 2005 - 14:42 #45
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