Avatar billede tidsrejse-frede Nybegynder
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
Avatar billede driis Nybegynder
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.
Avatar billede tidsrejse-frede Nybegynder
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:&nbsp; <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">
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 00:33 #3
*fuldet betyder på mit sprog fyldt.. :P
Avatar billede driis Nybegynder
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.
Avatar billede kalp Novice
14. marts 2005 - 00:38 #5
"'Dato & "')"

skal det ikke se sådan der ud til sidst? eller det måske ligegyldigt?
Avatar billede tidsrejse-frede Nybegynder
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', '')
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 01:16 #7
...men jeg får stadig samme fejl samme sted... :D
Avatar billede moejensen Nybegynder
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)
Avatar billede kalp Novice
14. marts 2005 - 01:34 #9
what the... troede jeg kun var ved updates
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 01:36 #10
øøh??

Let me in to your world!! :P
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 01:42 #11
Oh... hmm... det set virkede heller ikke...
Stadig samme fejl....
Avatar billede kalp Novice
14. marts 2005 - 01:52 #12
guess you don't use SET anyway:)
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 01:53 #13
hehe så fjerner vi set... :P og SETter (høhø) et mellemrum... :P
Avatar billede moejensen Nybegynder
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?
Avatar billede moejensen Nybegynder
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)
Avatar billede moejensen Nybegynder
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)
Avatar billede moejensen Nybegynder
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)
Avatar billede moejensen Nybegynder
14. marts 2005 - 02:00 #18
smutter i seng igen :-)

Godnat
Avatar billede tidsrejse-frede Nybegynder
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...
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 02:12 #20
...og den sidste rettelse fra moejensen inden han gik til køjs hjalp hellerej.
Avatar billede plx Nybegynder
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]) "
Avatar billede moejensen Nybegynder
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?
Avatar billede tidsrejse-frede Nybegynder
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...
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 15:32 #24
Det virkede heller ikke at sætte gnyffer, [], om...
Avatar billede moejensen Nybegynder
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)
Avatar billede tidsrejse-frede Nybegynder
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?? :)
Avatar billede moejensen Nybegynder
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)
Avatar billede moejensen Nybegynder
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.
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 17:14 #29
Det virker heller ikke....
Avatar billede moejensen Nybegynder
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)
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 17:50 #31
Den har jeg også prøvet, virker heller ikke...
Avatar billede moejensen Nybegynder
14. marts 2005 - 18:07 #32
har du tjekket at der er skriverettigheder på databasen?
Avatar billede moejensen Nybegynder
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.
Avatar billede moejensen Nybegynder
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"
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 18:23 #35
Hvordan tjekker jeg det??
Avatar billede moejensen Nybegynder
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.
Avatar billede tidsrejse-frede Nybegynder
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
Avatar billede moejensen Nybegynder
14. marts 2005 - 19:27 #38
Det skyldes så at der ikke er skriverettigheder på din database.
Avatar billede tidsrejse-frede Nybegynder
14. marts 2005 - 19:29 #39
Okay... Hmmm...
Jamen, *pivpiv*, hvordan ændrer jeg dem?
Avatar billede moejensen Nybegynder
14. marts 2005 - 19:29 #40
du skal sikre dig at IUSR_SERVERNAVN har skrive og læserettigheder til databasen.

http://www.webwizguide.info/asp/faq/server_permissions.asp
Avatar billede tidsrejse-frede Nybegynder
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...
Avatar billede moejensen Nybegynder
14. marts 2005 - 22:24 #42
jeg takker mange gange :-)
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