14. marts 2005 - 00:23
Der er
37 kommentarer og 5 løsninger
Conn.Execute(strSQL)
Hej! Hvorfor virker dette ikke?? IIS skriver: "Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i INSERT INTO-sætningen. nyhed-upload.asp, line 47 " 'Indsætter i db strSQL = "Insert into t_nyheder (" strSQL = strSQL & "Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID) " strSQL = strSQL & "values( " strSQL = strSQL & "'" & Request.Form("T1") & "', " strSQL = strSQL & "'" & Request.Form("T2") & "', " strSQL = strSQL & "'" & Request.Form("T4") & "', " strSQL = strSQL & "'Link', " strSQL = strSQL & "'Dato')" response.write(strSQL) Conn.Execute(strSQL) <----- Linie 47!!!! ------ Mange hilsner! - Frederik
Annonceindlæg fra Cognizant
14. marts 2005 - 00:31
#1
Så vidt jeg kan se har du ikke Medl-Id med, altså passer antallet af værdier du angiver ikke.
14. marts 2005 - 00:33
#2
...Det skal siges at alle felter var fuldet i request-formen... Den kommer for sjov her: <FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="nyhed-upload.asp"> <p><b>Titel: <input type="text" name="T1" size="33"><br> Tekst: <textarea rows="12" name="S1" cols="27"></textarea> <br> Dato: <input type="text" value="<%=date()%>" name="D1" size="33"> (<%=date()%>)</b></p> <p> </b></p> <p><b>Kilde: <input type="text" name="T2" size="33"><br> Link: <input type="text" name="T3" size="33"><br> <br> Bruger: <!-- #include file= "medl-ID.fbr" --><br> <!-- Virker fint!--> Bruger-ID:<input type="text" value="<%response.write ID%>" name="T4" size="33"><br> <p> <input name="submit" type="submit" value="Upload">
14. marts 2005 - 00:33
#3
*fuldet betyder på mit sprog fyldt.. :P
14. marts 2005 - 00:38
#4
Prøv at poste den SQL streng du prøver at køre. (Copy paste resultatet af Response.Write(strSQL) herind. Men jeg mener stadig at min første kommentar er korrekt. (Med mindre min evne til at tælle er forsvundet. Du skal have lige mange værdier i den første og sidste parentes.
14. marts 2005 - 00:38
#5
"'Dato & "')" skal det ikke se sådan der ud til sidst? eller det måske ligegyldigt?
14. marts 2005 - 00:57
#6
Jeg havde skam medl-ID med, da denne jo hedder T4... Men der manglede en Kilde... Jeg har derfor nu rettet lidt i det: 'Indsætter i db strSQL = "Insert into t_nyheder (" strSQL = strSQL & "Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID) " strSQL = strSQL & "values( " strSQL = strSQL & "'" & Request.Form("T1") & "', " strSQL = strSQL & "'" & Request.Form("S1") & "', " strSQL = strSQL & "'Dato', " strSQL = strSQL & "'" & Request.Form("T2") & "', " strSQL = strSQL & "'Link', " strSQL = strSQL & "'" & Request.Form("T4") & "')" response.write(strSQL) Conn.Execute(strSQL) Den nuværende response.write(strSQL) giver: Insert into t_nyheder (Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID) values( '', '', 'Dato', '', 'Link', '')
14. marts 2005 - 01:16
#7
...men jeg får stadig samme fejl samme sted... :D
14. marts 2005 - 01:33
#8
du mangler et set: strSQL = "INSERT INTO t_nyheder SET(" strSQL = strSQL & "Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID) " strSQL = strSQL & "VALUES( " strSQL = strSQL & "'" & Request.Form("T1") & "', " strSQL = strSQL & "'" & Request.Form("S1") & "', " strSQL = strSQL & "'Dato', " strSQL = strSQL & "'" & Request.Form("T2") & "', " strSQL = strSQL & "'Link', " strSQL = strSQL & "'" & Request.Form("T4") & "')" response.write(strSQL) Conn.Execute(strSQL)
14. marts 2005 - 01:34
#9
what the... troede jeg kun var ved updates
14. marts 2005 - 01:36
#10
øøh?? Let me in to your world!! :P
14. marts 2005 - 01:42
#11
Oh... hmm... det set virkede heller ikke... Stadig samme fejl....
14. marts 2005 - 01:52
#12
guess you don't use SET anyway:)
14. marts 2005 - 01:53
#13
hehe så fjerner vi set... :P og SETter (høhø) et mellemrum... :P
14. marts 2005 - 01:54
#14
sorry, klokken er mange, det er mig der er et fjols. Hvordan er de forskellige felter defineret i din base?
14. marts 2005 - 01:57
#15
Prøv hvis Dato er af typen date/time strSQL = "INSERT INTO t_nyheder SET(" strSQL = strSQL & "Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID) " strSQL = strSQL & "VALUES( " strSQL = strSQL & "'" & Request.Form("T1") & "', " strSQL = strSQL & "'" & Request.Form("S1") & "', " strSQL = strSQL & "Date(), " strSQL = strSQL & "'" & Request.Form("T2") & "', " strSQL = strSQL & "'" & Request.Form("T3") & "', " strSQL = strSQL & "'" & Request.Form("T4") & "')" response.write(strSQL) Conn.Execute(strSQL)
14. marts 2005 - 01:58
#16
og hvis også Medl-ID er erklæret som et tal, så brug: strSQL = "INSERT INTO t_nyheder SET(" strSQL = strSQL & "Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID) " strSQL = strSQL & "VALUES( " strSQL = strSQL & "'" & Request.Form("T1") & "', " strSQL = strSQL & "'" & Request.Form("S1") & "', " strSQL = strSQL & "Date(), " strSQL = strSQL & "'" & Request.Form("T2") & "', " strSQL = strSQL & "'" & Request.Form("T3") & "', " strSQL = strSQL & "" & Cint(Request.Form("T4")) & ")" response.write(strSQL) Conn.Execute(strSQL)
14. marts 2005 - 02:00
#17
Hvis det skal være muligt for brugeren at ændre på datoen, altså at bruge det felt du har lavet i formen, så skal du have det her med: strSQL = "INSERT INTO t_nyheder SET(" strSQL = strSQL & "Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID) " strSQL = strSQL & "VALUES( " strSQL = strSQL & "'" & Request.Form("T1") & "', " strSQL = strSQL & "'" & Request.Form("S1") & "', " strSQL = strSQL & "'" & Request.Form("D1") & "', " strSQL = strSQL & "'" & Request.Form("T2") & "', " strSQL = strSQL & "'" & Request.Form("T3") & "', " strSQL = strSQL & "" & Cint(Request.Form("T4")) & ")" response.write(strSQL) Conn.Execute(strSQL)
14. marts 2005 - 02:00
#18
smutter i seng igen :-) Godnat
14. marts 2005 - 02:06
#19
Jah, min bases felter er defineret som: Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID... Det hjalp hellerej at sætte aktuel dato ind i stedet...
14. marts 2005 - 02:12
#20
...og den sidste rettelse fra moejensen inden han gik til køjs hjalp hellerej.
14. marts 2005 - 06:40
#21
Medl-ID skaber muligvis en konflikt. Prøv med [Medl-ID] strSQL = strSQL & "Overskrift, Nyhed, Dato, Link, Kilde, [Medl-ID]) "
14. marts 2005 - 07:46
#22
det jeg nu var ude efter var ikke feltnavnene, dem kan jeg jo se i din insert setning, men hvordan er de enkelte felter devineret, som string, tal, dato eller hvad?
14. marts 2005 - 15:15
#23
Oh, hehe, på den måde!! Overskrift: Tekst Nyhed: Notat Dato: Dato og klokkeslet Link: Tekst Kilde: Tekst Medl-ID: Tal Jeg forsøger lige med at sætte gnyffer om Medl-ID...
14. marts 2005 - 15:32
#24
Det virkede heller ikke at sætte gnyffer, [], om...
14. marts 2005 - 16:46
#25
prøv den her: strSQL = "INSERT INTO t_nyheder(" strSQL = strSQL & "Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID) " strSQL = strSQL & "VALUES( " strSQL = strSQL & "'" & Request.Form("T1") & "', " strSQL = strSQL & "'" & Request.Form("S1") & "', " strSQL = strSQL & "Date(), " strSQL = strSQL & "'" & Request.Form("T2") & "', " strSQL = strSQL & "'" & Request.Form("T3") & "', " strSQL = strSQL & "" & Request.Form("T4") & ")" response.write(strSQL) Conn.Execute(strSQL)
14. marts 2005 - 16:52
#26
Lige nu ser min kode således ud:
<% if Request.Querystring("id") = "db_ind" then
' Valider input af felter
'If Request.Form("T1") = "" OR Request.Form("T2") = "" OR Request.Form("T3") = "" OR Request.Form("S1") = "" OR Request.Form("T4") = ""
' Response.Write "Alle felter skal udfyldes!"
' Response.End
'End If
If Request.Form("D1") = "" Then
Dato=date()
else
Dato=Request.Form("D1")
End If
If left(Request.Form("T3"),7) = "
http://" Then
Link=Request.Form("T3")
else
Link="
http://" & Request.Form("T3")
End If
Overskrift=Request.Form("T1")
nyhed=Request.Form("S1")
bruger=Request.Form("T4")
%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../db/arda.mdb")
Conn.Open DSN
%>
<%
set rs = Conn.Execute("Select * from t_nyheder")
strSQL = "INSERT INTO t_nyheder (Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID)"
strSQL = strSQL & "VALUES('"&Overskrift&"','"&nyhed&"','"&Dato&"','"&Link&"','"&Kilde&"','"&bruger&"')"
Conn.Execute (strSQL)
%>
Min form-kode ser således ud:
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="ny_nyhed.asp?id=db_ind">
Titel
<input type="text" name="T1" size="33">
Tekst
<textarea rows="12" name="S1" cols="27"></textarea>
Dato
<input type="text" value="<%=date()%>" name="D1" size="33"> (<%=date()%>)
Kilde
<input type="text" name="T2" size="33">
Link
<input type="text" name="T3" size="33">
Bruger:
<%
set rs = Conn.Execute("Select * from t_medlemmer where user = '"& Session("user") &"'")
DO
response.write rs("User") & "<br>" & rs("Medl-ID")
medlID = rs("medl-ID")
rs.MoveNext
Loop While Not rs.eof
%>
Bruger-ID:<input type="hidden" value="<%medlID%>" name="T4" size="33">
<input name="submit" type="submit" value="Upload">
Stadig klynker serveren over en syntaksfejl i INSERT INTO-sætningen...
Nogen idéer?? :)
14. marts 2005 - 16:58
#27
yep, prøv det jeg skrev før: strSQL = "INSERT INTO t_nyheder (Overskrift, Nyhed, Dato, Link, Kilde, Medl-ID)" strSQL = strSQL & "VALUES('"&Overskrift&"','"&nyhed&"',Dato(),'"&Link&"','"&Kilde&"',"&bruger&")" Conn.Execute (strSQL)
14. marts 2005 - 16:59
#28
Hvis du alligevel bruger Dato() i fin form, kan du lige så godt sætte den direkte ind i SQL sætnigen, ellers kan det godt blive et større arbejde at på tilpasset stringen ind i date/time feltet i databasen.
14. marts 2005 - 17:14
#29
Det virker heller ikke....
14. marts 2005 - 17:28
#30
prøv: strSQL = "INSERT INTO t_nyheder (Overskrift,Nyhed,Dato,Link,Kilde,Medl-ID)" strSQL = strSQL & "VALUES('"&Overskrift&"','"&nyhed&"',Date(),'"&Link&"','"&Kilde&"',"&bruger&")" Conn.Execute (strSQL)
14. marts 2005 - 17:50
#31
Den har jeg også prøvet, virker heller ikke...
14. marts 2005 - 18:07
#32
har du tjekket at der er skriverettigheder på databasen?
14. marts 2005 - 18:17
#33
og ken du ikke lige prøve at lave sådan en her: Response.write strSQL Response.end så vi kan se den sql der kommer ud.
14. marts 2005 - 18:20
#34
så tror jeg at jeg har fundet din fejl. Du skal ikke have dette her i dit form tag: ENCTYPE="multipart/form-data"
14. marts 2005 - 18:23
#35
Hvordan tjekker jeg det??
14. marts 2005 - 18:26
#36
så fik jeg den til at virke: strSQL = "INSERT INTO t_nyheder (Overskrift, Nyhed, Dato, Link, Kilde, [Medl-ID]) VALUES('"&Overskrift&"','"&nyhed&"','"& Date()&"','"&Link&"','"&Kilde&"',"&bruger&")" og så skal du fjerne ENCTYPE="multipart/form-data" fra formen, for ellers sender den ikke noget.
14. marts 2005 - 19:20
#37
Jah jeg har rettet og prøvet hvad du fik til at virke... jeg får nu: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access-driver] Handlingen skal bruge en opdaterbar forespørgsel. /stardust/apps/ny_nyhed.asp, line 43 og sendte følgende: POST Data: T1=test&S1=test&D1=14-03-2005&T2=www.google.com&T3=www.google.com&T4=2&submit=Upload
14. marts 2005 - 19:27
#38
Det skyldes så at der ikke er skriverettigheder på din database.
14. marts 2005 - 19:29
#39
Okay... Hmmm... Jamen, *pivpiv*, hvordan ændrer jeg dem?
14. marts 2005 - 20:59
#41
DOH!!!! Jah, som du selv siger, virker det fint nu!! :D Tusind tak! Du får hermed dine fortjente 200points...
14. marts 2005 - 22:24
#42
jeg takker mange gange :-)
Kurser inden for grundlæggende programmering