Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 16:32 Der er 24 kommentarer og
1 løsning

Fejl i database behandling

Hej
Jeg er ved at lave et simpelt script som skal hente nogle oplysninger fra en database. Scriptet kan godt hente informationen men det programmering jeg har lavet til "skrive" delen virker ik så skide godt :)

Når jeg prøver på at tilføje til databasen melder den denne fejl:

ADODB.Recordset.1 error '80004005'

Recordset is read-only

/kalender/godkendt.asp, line 41


Mine sider ser sådan her ud:

<--------tilføj.asp--------->

<body>

<form method="post" action="godkendt.asp" name="form">
     
    <p><b>Dato:</b></p>
    <input type="text" name="dato" value="" maxlength="50" class="input" size="65">
         
    <p><b>Beskrivelse:</b></p><textarea name="tekst" cols="72" rows="11"></textarea><br>
           
    <input name="submit" type="submit" value="Tilføj"></td>

</form>
</body>



<-------godkendt.asp------>

<body>

<%
dato = Request("dato")
tekst = Request("tekst")


Set my_conn = Server.CreateObject("ADODB.Connection")
my_conn.Open "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=miniklub_mv_dk; UID=BRUGERNAVN; PWD=PASSWORD;"

strSQL = "SELECT * FROM kalender"

' Execute SQL statement
Set rs = my_conn.Execute(strSQL) 
%>
                 
<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
                       
        if dato = "" then
                Response.Write("Du sakl skrive en dato!")
                end if   
               
                if tekst = "" then
                    Response.Write("Du skal skrive en tekst!")
                end if
                               
             
       
                    if dato <> "" AND tekst <> "" then
                    rs.AddNew
            rs("dato") = Request.form("dato")
              rs("tekst") = Request.form("tekst")
                   
                rs.update
                    Response.Redirect("kalender.asp")
                    end if
                    end if %>
                   
    <% rs.close
    Conn.Close
    set Conn = nothing
    %>
                   
</body>

Kan i se hvad fejlen er i dette script?

Håber i kan hjælpe

Mvh Morten
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 16:32 #1
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 16:34 #2
På linje 41 står der:

rs.AddNew
Avatar billede trekkies Juniormester
07. oktober 2004 - 16:37 #3
Det ser ud til at du kun kan læse fra din database og ikke skrive til den.

1.
Du skal højre klikk på din database og klik på "Egenskaber" der skulle der gerne være et faneblad ved navn "Sikkerhed".
Hvis du ikke har den:
http://www.darkskies.dk/rettigheder.html

2.
Under sikkerhed kan du sætte rettigheder til hver enkel bruger på maskinen.
Avatar billede eagleeye Praktikant
07. oktober 2004 - 16:41 #4
Når du bruger AddNew metoden skal du åbne recordsetet med .Open metoden der dure Set rs=my_conn(...) ikke.

Så prøv at rette denne linje:
Set rs = my_conn.Execute(strSQL) 

Til denne:
rs.Open strSQL, my_conn, 1


Jeg kan se du bruger mysql, der kan du godt få problemer med .Addnew metoden så du bliver nød til at lave en insert into sql sætning. Men prøv først det med .Open :)
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 16:43 #5
Det ligger jo som et webhotel på B-One, så det har jeg lidt svært ved. Og det er også en MySql database.
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 16:45 #6
eagleeye: Nu har jeg erstattet hele linjen med det som du skrev og nu giver den denne fejl:

Microsoft VBScript runtime error '800a01a8'

Object required: 'rs'

/kalender/godkendt.asp, line 24
Avatar billede eagleeye Praktikant
07. oktober 2004 - 16:51 #7
Ok så skal rs lige defineret som et recordset prøv tilføje denne linje før rs.open linjen:

set rs = Server.CreateObject("ADODB.Recordset")
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 16:55 #8
Hmm nu kommer vores fejl fra helt start.

ADODB.Recordset.1 error '80004005'

Recordset is read-only

/kalender/godkendt.asp, line 42
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:08 #9
Skal jeg bruge Insert Into så?
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:33 #10
Ingen som kan fortælle mig fejlen nu?
Avatar billede eagleeye Praktikant
07. oktober 2004 - 17:35 #11
hmm jeg fik først mailen nu??

Prøv at rette:
rs.Open strSQL, my_conn, 1

Til:

rs.Open strSQL, my_conn, 1, 3
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:37 #12
Det hjalp lidt :)
Nu er det galt med rs.update


ADODB.Recordset.1 error '80004005'

SQLState: S1000
Native Error Code: 1062
[TCX][MyODBC]Duplicate entry '' for key 1


/kalender/godkendt.asp, line 46
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:38 #13
Det er hvertfald det som står i linje 46
Avatar billede eagleeye Praktikant
07. oktober 2004 - 17:38 #14
Er en af kolonnerne dato eller tekst sat til primary?
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:43 #15
Tjekker lige
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:44 #16
Lige nu har jeg i databasen kalender: id, dato, tekst. Kan jeg godt bare slette id for den bruger jeg jo ik og så lave dato til primary?
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:45 #17
Kan se at id nu er primær nøgle.
Avatar billede eagleeye Praktikant
07. oktober 2004 - 17:45 #18
Nej hvis den er primary vil den ikke tillade duplicate poster
Avatar billede eagleeye Praktikant
07. oktober 2004 - 17:45 #19
Ja ID skal være primær nøgle
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:47 #20
Okay, dvs. at det er som det skal være?
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:47 #21
datatypen for id er ligsom de andre varchar, skal id os være det?
Avatar billede eagleeye Praktikant
07. oktober 2004 - 17:51 #22
Id skal være en Int type og sat til auto_increment
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 17:59 #23
Okay, kunne sådan set heller ik forstå...

Nu skriver den så en anden fejl (Det kører bare var :))

Response object error 'ASP 0156 : 80004005'

Header Error

/kalender/godkendt.asp, line 47

The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing page content.

i linje 47 står der Response.Redirect("kalender.asp")
Avatar billede eagleeye Praktikant
07. oktober 2004 - 18:01 #24
Det frodi du har send <html> tags til browseren før redirect, prøv at tilføje denne linje toppen af filen:

<% Response.buffer=true %>
Avatar billede morten_soegaard Nybegynder
07. oktober 2004 - 18:29 #25
Kanon!! Nu virker det..
Du får tusind tak for hjælpen.
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