Avatar billede teknikeren Nybegynder
03. juni 2002 - 19:01 Der er 11 kommentarer og
1 løsning

Åbne et rs object

Dette spørgsmål er MEGET let men jeg kan bare ikke lige huske hvordan man åbner et rs object...
Her er min kode:

<BODY BGCOLOR = "lightgreen">
<%
dim cn, cnstr
set cn = Server.CreateObject("ADODB.Connection")
cnstr="Provider=Microsoft.Jet.OLEDB.4.0;"
cnstr = cnstr & "Data source=/WINDOWS/Skrivebord/hp/brugere.mdb"
cn.Connectionstring = cnstr
cn.Open

dim strSQL
strSQL = "INSERT INTO brugere ([brugernavn],[password],[fornavn],[efternavn],[email]) VALUES ('" & Request.Form("brugernavn") & "','" & Request.Form("password") & "','" & Request.Form("fornavn") & "','" & Request.Form("efternavn") & "','" & Request.Form("email") & "')"
SET rs = cn.Execute (strSQL)
If rs.BOF Then
Response.Write "<h1 align = center>Bruger optaget!</H1>"
End If

cn.Close
Set cn = Nothing
%>
<META HTTP-EQUIV="Refresh" CONTENT="2;URL=default.asp">
<h1 align = "Center"><h1>Du er nu bruger</h1></h1>

Den skriver:

ADODB.Recordset fejl '800a0e78'

Den handling, programmet anmodede om, er ikke tilladt, hvis objektet er lukket.

/hp/opret data.asp, linje 14

Formålet med dette script er at den skal gå ind i min db og checke om der er nogen af felterne der svarer til det inde i database og derefter skrive "BRUGER OPTAGET!"...
Avatar billede fet321 Nybegynder
03. juni 2002 - 19:05 #1
Set rs = Server.CreateObject("ADODB.Recordset")
Avatar billede fet321 Nybegynder
03. juni 2002 - 19:09 #2
Du skal starte med at lave en sql SELECT

SQL = "SELECT * FROM brugere WHERE [brugernavn]='" & Request.Form("brugernavn") & "';"

IF rs.EOF ' brugernavne findes ikke

' Luk dit recordset og lav din insert

ELSE ' brugernavnet findes allerede

Response.Write "<h1 align = center>Bruger optaget!</H1>"

END IF
Avatar billede teknikeren Nybegynder
03. juni 2002 - 19:58 #3
Skriv venligst hele koden...
Avatar billede fet321 Nybegynder
03. juni 2002 - 20:52 #4
Så gerne
Nu var du så generøs med point i går :)

Der går lige 10 minutter...
Avatar billede teknikeren Nybegynder
03. juni 2002 - 21:04 #5
Nu har jeg koden:

<BODY BGCOLOR = "lightgreen">
<%
SQL = "SELECT * FROM brugere WHERE [brugernavn]='" & Request.Form("brugernavn") & "';"
Set rs = cn.Execute(strSQL)
IF rs.EOF Then' brugernavne findes ikke
rs.Close

dim cn, cnstr
set cn = Server.CreateObject("ADODB.Connection")
cnstr="Provider=Microsoft.Jet.OLEDB.4.0;"
cnstr = cnstr & "Data source=/WINDOWS/Skrivebord/hp/brugere.mdb"
cn.Connectionstring = cnstr
cn.Open

dim strSQL
strSQL = "INSERT INTO brugere ([brugernavn],[password],[fornavn],[efternavn],[email]) VALUES ('" & Request.Form("brugernavn") & "','" & Request.Form("password") & "','" & Request.Form("fornavn") & "','" & Request.Form("efternavn") & "','" & Request.Form("email") & "')"
SET rs = cn.Execute (strSQL)

cn.Close
Set cn = Nothing
%>
<META HTTP-EQUIV="Refresh" CONTENT="2;URL=default.asp">
<h1 align = "Center"><h1>Du er nu bruger</h1></h1>
<%
ELSE ' brugernavnet findes allerede

Response.Write "<h1 align = center>Bruger optaget!</H1>"

END IF
%>
Og den kommer med fejlen:

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

Et objekt er obligatorisk: ''

/hp/opret data.asp, linje 4

og linie 4 må være:


Set rs = cn.Execute(strSQL)
og der kan jeg ikke se nogen fejl...
Avatar billede fet321 Nybegynder
03. juni 2002 - 21:05 #6
Din kode skal se sådan her ud
Jeg har indsat kommentarer i koden, så du kan forstå hvad jeg har lavet.

-

<HTML>
<BODY BGCOLOR = "lightgreen">
<%
dim cn, cnstr, rs, strSQL
set cn = Server.CreateObject("ADODB.Connection")
cnstr="Provider=Microsoft.Jet.OLEDB.4.0;"
cnstr = cnstr & "Data source=/WINDOWS/Skrivebord/hp/brugere.mdb"
cn.Connectionstring = cnstr
cn.Open

strSQL = "SELECT * FROM brugere WHERE [brugernavn]='" & Request.Form("brugernavn") & "';"
SET rs = cn.Execute(strSQL)
' Vi vælger alle rækker i tabellen som er lig med det indtastede brugernavn ind i et recordset

IF (rs.BOF OR rs.EOF) THEN

    ' Der blev ikke fundet nogle records i tabellen
    ' altså findes brugernavnet ikke
    ' Vi kører din sql insert
    SQL = "INSERT INTO brugere ([brugernavn],[password],[fornavn],[efternavn],[email]) VALUES ('" & Request.Form("brugernavn") & "','" & Request.Form("password") & "','" & Request.Form("fornavn") & "','" & Request.Form("efternavn") & "','" & Request.Form("email") & "')"
    cn.Execute(strSQL)
    ' Her er det ikke nødvendigt at bruge et recordset, da vi ikke skal hente noget
   
    Response.Write "<META HTTP-EQUIV=""Refresh"" CONTENT=""2;URL=default.asp"">" & vbCrLf &_
                    "<h1 align = ""Center""><h1>Du er nu bruger</h1></h1>"
   
ELSE
   
    ' brugernavnet findes allerede i tabellen
    Response.Write "<h1 align = center>Bruger optaget!</H1>"

END IF

Set rs = Nothing
cn.Close
Set cn = Nothing

%>
</BODY>
</HTML>
Avatar billede teknikeren Nybegynder
03. juni 2002 - 21:06 #7
Ya man ska' jo oXo tiltrække nogen *GG* :)
Avatar billede fet321 Nybegynder
03. juni 2002 - 21:07 #8
Havde ikke lige set du selv havde postet.
Jeg vil foreslå du bruger min.
Din vil helt sikkert ikke virke ;)
Avatar billede teknikeren Nybegynder
03. juni 2002 - 21:15 #9
Nu er problemet jo bare; nu skriver den ikke til databasen! Hvad kan der nu være galt? Den skriver "Du er nu bruger" men den skriver ikke til databasen; Hvad kan det dog skyldes?
Avatar billede fet321 Nybegynder
03. juni 2002 - 21:24 #10
My bad

Jeg har ændret 2 ting.
Indsat linien <% Option Explicit %> aller først i scriptet. (ville have fanget denne fejl)
Og så har  jeg ændret variablen SQL i starten af din insert til strSQL

Koden ser sådan ud

----------------------

<% Option Explicit %>
<HTML>
<BODY BGCOLOR = "lightgreen">
<%
dim cn, cnstr, rs, strSQL
set cn = Server.CreateObject("ADODB.Connection")
cnstr="Provider=Microsoft.Jet.OLEDB.4.0;"
cnstr = cnstr & "Data source=/WINDOWS/Skrivebord/hp/brugere.mdb"
cn.Connectionstring = cnstr
cn.Open

strSQL = "SELECT * FROM brugere WHERE [brugernavn]='" & Request.Form("brugernavn") & "';"
SET rs = cn.Execute(strSQL)
' Vi vælger alle rækker i tabellen som er lig med det indtastede brugernavn ind i et recordset

IF (rs.BOF OR rs.EOF) THEN

    ' Der blev ikke fundet nogle records i tabellen
    ' altså findes brugernavnet ikke
    ' Vi kører din sql insert
    SQL = "INSERT INTO brugere ([brugernavn],[password],[fornavn],[efternavn],[email]) VALUES ('" & Request.Form("brugernavn") & "','" & Request.Form("password") & "','" & Request.Form("fornavn") & "','" & Request.Form("efternavn") & "','" & Request.Form("email") & "')"
    cn.Execute(SQL)
    ' Her er det ikke nødvendigt at bruge et recordset, da vi ikke skal hente noget
   
    Response.Write "<META HTTP-EQUIV=""Refresh"" CONTENT=""2;URL=default.asp"">" & vbCrLf &_
                    "<h1 align = ""Center""><h1>Du er nu bruger</h1></h1>"
   
ELSE
   
    ' brugernavnet findes allerede i tabellen
    Response.Write "<h1 align = center>Bruger optaget!</H1>"

END IF

Set rs = Nothing
cn.Close
Set cn = Nothing

%>
</BODY>
</HTML>
Avatar billede fet321 Nybegynder
03. juni 2002 - 21:26 #11
Og så glemte jeg endda at rette SQL til strSQL
Så det bliver du lige nødt til at gøre
Avatar billede fet321 Nybegynder
03. juni 2002 - 21:27 #12
Og så skal

cn.Execute(SQL)

også lige rettes til

cn.Execute(strSQL)

...jeg er træt.
Tror ikke der er flere fejl!
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