Avatar billede medions Nybegynder
16. juli 2001 - 16:53 Der er 36 kommentarer og
1 løsning

ASP og Access database

Hejsa.. jeg har lige et lille spørgsmål her ;-)

Den kommer med denne fejl:

Der opstod en Microsoft VBScript-kørselsfejl fejl \'800a01a8\'

Et objekt er obligatorisk: \'rs\'

/div/test/forum.asp, linje 52


og i linie 52 har jeg dette:

rs.Open strSQL, Conn, 1, 3

og ellers har jeg dette:
Set Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open \"Driver={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath (\"db.mdb\")
        strSQL = \"SELECT * From forum\"
                            rs.Open strSQL, Conn, 1, 3
                            If Not (rs.BOF Or rs.EOF) Then
                            Response.Write(\" \")
                            End If
                                rs.addnew
                                rs(\"bruger\")      = Request.form(\"bruger\")
                                rs(\"emne\")        = Request.form(\"emne\")
                                rs(\"sporgesmaal\") = Request.form(\"sporgesmaal\")
                                rs.update
                                Response.Write \"spørgesmålet er nu blevet oprettet!\"
                                rs.Close
                                End If


hvad gør jeg galt?

Mvh Rune
Avatar billede kornfreak Nybegynder
16. juli 2001 - 16:58 #1
Den sidste \"End If\" ..hvad gør den godt for ?
Avatar billede medions Nybegynder
16. juli 2001 - 16:59 #2
ahh.. det et fordi jeg ikke fik if mode = et eller andet med !
Avatar billede medions Nybegynder
16. juli 2001 - 17:00 #3
Her er det hele ;-)

If mode = \"gem\" Then
Set Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open \"Driver={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath (\"db.mdb\")
        strSQL = \"SELECT * From forum\"
                            rs.Open strSQL, Conn, 1, 3
                            If Not (rs.BOF Or rs.EOF) Then
                            Response.Write(\" \")
                            End If
                                rs.addnew
                                rs(\"bruger\")      = Request.form(\"bruger\")
                                rs(\"emne\")        = Request.form(\"emne\")
                                rs(\"sporgesmaal\") = Request.form(\"sporgesmaal\")
                                rs.update
                                Response.Write \"spørgesmålet er nu blevet oprettet!\"
                                rs.Close
                                End If
Avatar billede xafion Nybegynder
16. juli 2001 - 17:10 #4
Hvad med Dim RS? ( bare et guess )
Avatar billede medions Nybegynder
16. juli 2001 - 17:11 #5
Der opstod en Microsoft VBScript-kørselsfejl fejl \'800a01a8\'

Et objekt er obligatorisk: \'\'

/div/test/forum.asp, linje 53
Avatar billede xafion Nybegynder
16. juli 2001 - 17:13 #6
du mangler at afslutte en string.. 

f.eks.


if something = \"hej

skal være = \"hej\"
Avatar billede medions Nybegynder
16. juli 2001 - 17:15 #7
*G* yep... well, men hvor!? :-)
Avatar billede erikjacobsen Ekspert
16. juli 2001 - 17:15 #8
Du skal oprette dit recordset med en server.createobject
Avatar billede medions Nybegynder
16. juli 2001 - 17:16 #9
hmm.. kan du komme med et eksempel?
Avatar billede erikjacobsen Ekspert
16. juli 2001 - 17:17 #10
set rs=server.createobject(\"ADODB.RecordSet\")

...inden du bruger rs
Avatar billede medions Nybegynder
16. juli 2001 - 17:20 #11
i don\'t get it!
kan du prøve at lave et eksempel med det jeg har nu?

altså hvor du indsættet det?
Avatar billede euroman28 Nybegynder
16. juli 2001 - 17:26 #12
Du har en linie der hedder
rs.Open strSQL, Conn, 1, 3
Den skal hedde
rs.Execute(strSQL)

så burde den del virker.
Avatar billede euroman28 Nybegynder
16. juli 2001 - 17:42 #13
sludder...det skal se sådan ud.

Set rs = Server.CreateObject(\"ADODB.Recordset\")
    connstr = \"Driver={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath (\"db.mdb\")
        rs.Open \"forum\", connstr, 1, 3
                            If Not (rs.BOF Or rs.EOF) Then
                                rs.addnew
                                rs(\"bruger\")      = Request.form(\"bruger\")
                                rs(\"emne\")        = Request.form(\"emne\")
                                rs(\"sporgesmaal\") = Request.form(\"sporgesmaal\")
                                rs.update
                                Response.Write \"spørgesmålet er nu blevet oprettet!\"
                                rs.Close
                            End If
Avatar billede euroman28 Nybegynder
16. juli 2001 - 17:42 #14
Jeg bemærkede ikke i første omgang at du lavede en addNew.
Avatar billede medions Nybegynder
16. juli 2001 - 17:53 #15
hmm... så kommer der ikke noget i DB\'en?!
Avatar billede euroman28 Nybegynder
16. juli 2001 - 17:56 #16
If Not (rs.BOF Or rs.EOF) Then

skal være

If Not (rs.BOF And rs.EOF) Then
Avatar billede euroman28 Nybegynder
16. juli 2001 - 17:57 #17
den overså jeg da jeg rettede
Avatar billede medions Nybegynder
16. juli 2001 - 18:02 #18
nope..! der kommer stadivæk ikke noget i db\'en!
Avatar billede euroman28 Nybegynder
16. juli 2001 - 18:02 #19
den er faktisk underordnet:
If Not (rs.BOF And rs.EOF) Then
End if.

Du skal ikke checke hvor i recordsettet du står når du bare skal lave en addnew.

så din kode kan blive endnu mere enkelt.

Set rs = Server.CreateObject(\"ADODB.Recordset\")
    connstr = \"Driver={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath (\"db.mdb\")
        rs.Open \"forum\", connstr, 1
                                rs.addnew
                                rs(\"bruger\")      = Request.form(\"bruger\")
                                rs(\"emne\")        = Request.form(\"emne\")
                                rs(\"sporgesmaal\") = Request.form(\"sporgesmaal\")
                                rs.update
                                Response.Write \"spørgesmålet er nu blevet oprettet!\"
                                rs.Close


Avatar billede medions Nybegynder
16. juli 2001 - 18:06 #20
så kommer denne fejl bare:
ADODB.Recordset fejl \'800a0cb3\'

Den handling, programmet anmodede om, understøttes ikke af provideren.

/div/test/forum.asp, linje 53



linie 53:                                rs.addnew
Avatar billede euroman28 Nybegynder
16. juli 2001 - 18:08 #21
Har du checket at der er skriverettigheder til DB\'en ?
Avatar billede medions Nybegynder
16. juli 2001 - 18:09 #22
well jeg kører det over min PWS! så det skulle der vidst være!
Avatar billede euroman28 Nybegynder
16. juli 2001 - 18:12 #23
check alligevel på din .mdb fil.
Den får nemlig ikke automatisk skriverettigheder.
Avatar billede euroman28 Nybegynder
16. juli 2001 - 18:13 #24
og din fejl kunne tyde på at du ikke kan skrive til databasen.
Avatar billede medions Nybegynder
16. juli 2001 - 18:13 #25
den står kun på \"arkiv\"
Avatar billede medions Nybegynder
16. juli 2001 - 18:15 #26
hmm... ikke kunne skrive til db\'en? det er jo bare en access db. og den kan man da vel skrive til lige meget hvad, næsten... ik\'? der er da ikke nogle funktioner hvor man kan slå det fra!
eller er der?
Avatar billede euroman28 Nybegynder
16. juli 2001 - 18:17 #27
hvilken o/s er det ?
og hvilken access version ?
Avatar billede euroman28 Nybegynder
16. juli 2001 - 18:18 #28
har du cuttet og pasted min version direkte ind ?
der var mange rettelser..bl.a. skal du bruge ADODB.Recordset & ikke ADODB.connection.
Avatar billede medions Nybegynder
16. juli 2001 - 18:20 #29
det er access\'s den nyeste.. well, ja jeg har cuttet og pastet dine koder ind!

hvad mener du med o/s ?
Avatar billede medions Nybegynder
16. juli 2001 - 18:21 #30
Her er det hele!

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">

<html>
<head>
    <title>Forum</title>
</head>

<body>

<%
mode = Request(\"mode\")
%>

<%
If mode = \"\" Then
Response.Write \"Velkommen til forumet\" & \"<p>\"
Response.Write \"<a href=\'forum.asp?mode=opret\'>\" & \"Opret spørgesmål\" & \"</a>\"
End If
%>

<%
If mode = \"opret\" Then
%>
<form action=\"forum.asp?mode=gem\" method=\"post\">
<table>
<tr>
  <td><input type=\"hidden\" name=\"bruger\" value=\"<%= session(\"brugernavn\") %>\"></td>
</tr>
<tr>
  <td>Bruger:</td><td><%= session(\"brugernavn\")%></td>
</tr>
<tr>
  <td>Emne</td>
  <td><input type=\"text\" name=\"emne\"></td>
</tr>
<tr>
  <td>Spørgesmål</td>
  <td><textarea name=\"sporgesmaal\"></textarea></td>
</tr>
<tr>
  <td><input type=\"submit\" value=\"send\"></td>
</tr>
</table>
</form>
<% End If %>

<%
If mode = \"gem\" Then
dim rs
Set rs = Server.CreateObject(\"ADODB.Recordset\")
    connstr = \"Driver={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath (\"db.mdb\")
        rs.Open \"forum\", connstr, 1
                                rs.addnew
                                rs(\"bruger\")      = Request.form(\"bruger\")
                                rs(\"emne\")        = Request.form(\"emne\")
                                rs(\"sporgesmaal\") = Request.form(\"sporgesmaal\")
                                rs.update
                                Response.Write \"spørgesmålet er nu blevet oprettet!\"
                                rs.Close
End If
%>
</body>
</html>
Avatar billede euroman28 Nybegynder
16. juli 2001 - 18:25 #31
jeg bruger samme script til en access2000 db, der virker det fint.

den eneste forskel er at min open ser således ud.
  rs.Open \"forum\", connstr, 1, 2, &H0002

jeg er ikke helt klar over hvad paramenterne betyder.
Avatar billede medions Nybegynder
16. juli 2001 - 18:29 #32
aner jeg heller ikke, -har det selv fra en bog!

men kunne jeg ikke få din mail adresse og så maile hele scriptet til dig, så du kunne se det hele, og self rette det til det rigtige! -så får du de 50 point! ?
Avatar billede euroman28 Nybegynder
16. juli 2001 - 18:52 #33
Mit sidste foreslag var at ændre linien
  rs.Open \"forum\", connstr, 1, 2, &H0002

hvis ikke det virker er det ikke script-delen der er gal, så jeg har ikke flere ideer.
Det virker som sagt her.
Avatar billede erikjacobsen Ekspert
16. juli 2001 - 18:57 #34
Mon ikke vi bare skulle

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath (\"db.mdb\")
strSQL = \"SELECT * From forum\"
rs.Open strSQL, Conn, 1, 3
If Not (rs.BOF Or rs.EOF) Then
  ....osv....

altså bruge den connection, og ikke bare en connectionstring
Avatar billede euroman28 Nybegynder
16. juli 2001 - 19:15 #35
måske det virker..det er bare meget omstændigt.
Han skal jo bare addnew, så hvorfor bruge SELECT, når han bare kan åbne tabellen.
Avatar billede euroman28 Nybegynder
16. juli 2001 - 19:16 #36
Avatar billede medions Nybegynder
16. juli 2001 - 22:27 #37
Jeg syntes jeg har fået de mest korekte svar fra \"euroman28\" så derfor får han æren af de 50 point!

-fandt ud af en anden løsning!
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