Toon posts:

[ASP] ADODB: Probleem met ongeldige Recordset? *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Vraagje,

ik wil een loginpagina maken waarbij ik gebruik maak van een gebruikersnaam, wachtwoord en een userlevel (via database gebruiker voert dit niet in)

nu krijg ik de volgende foutmelding:

Soort fout:
ADODB.Recordset (0x800A0BB9)
De argumenten zijn van het verkeerde type, vallen buiten het toegestane bereik of zijn in conflict met elkaar.

Ik gebruik Dreamweaver MX i.c.m. access 2000 database op een windows 2000 platform met IIS. Voor meer info graag gerichte vragen want ik weet niet wat je nog meer voor een info nodig hebt.

kan iemand mij op weg helpen om deze fout er uit te halen??

THNX!!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

offtopic:
Even je topictitle aangepast. Probeer volgende keer zelf even je probleem samen te vatten in je topictitle ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
thnx

Verwijderd

Om mee te beginnen zou je de code kunnen plaatsen waar het fout gaat?
:?

Verwijderd

Topicstarter
[edit: Even zo'n lap code neerplakken heeft erg weinig zin. Probeer er uit te halen wat interessant is. Lappen HTML bijvoorbeeld niet.]

[ Voor 99% gewijzigd door drm op 26-03-2003 16:52 ]


Verwijderd

Topicstarter
zucht, mijn ervaring met het maken van een login pagina is dat dit meteen werkt onder dreamweaver. ik zou dus bij god niet weten wat er wel of niet relevant is. Ik ben bezig met een ASP cursus maar daar heb ik nu nog niet zo veel aan. dus graag ff rekening houden met mijn n00b nivo!!!

herkansing code:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
#include virtual="/Connections/ffginfonet.asp"
<%
Dim login
Dim login_numRows

Set login = Server.CreateObject("ADODB.Recordset")
login.ActiveConnection = MM_ffginfonet_STRING
login.Source = "SELECT * FROM login"
login.CursorType = 0
login.CursorLocation = 2
login.LockType = 1
login.Open()

login_numRows = 0
%>
<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("textfield"))
If MM_valUsername <> "" Then
MM_fldUserAuthorization="userlevel"
MM_redirectLoginSuccess="adminpage.asp"
MM_redirectLoginFailed="loginerror.asp"
MM_flag="ADODB.Recordset"
set MM_rsUser = Server.CreateObject(MM_flag)
MM_rsUser.ActiveConnection = MM_ffginfonet_STRING
MM_rsUser.Source = "SELECT gebruikersnaam, wachtwoord"
If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
MM_rsUser.Source = MM_rsUser.Source & " FROM login WHERE gebruikersnaam='" & Replace(MM_valUsername,"'","''") &"' AND wachtwoord='" & Replace(Request.Form("textfield2"),"'","''") & "'"
MM_rsUser.CursorType = 0
MM_rsUser.CursorLocation = 2
MM_rsUser.LockType = 3
MM_rsUser.Open
If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then
' username and password match - this is a valid user
Session("MM_Username") = MM_valUsername
If (MM_fldUserAuthorization <> "") Then
Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)
Else
Session("MM_UserAuthorization") = ""
End If
if CStr(Request.QueryString("accessdenied")) <> "" And false Then
MM_redirectLoginSuccess = Request.QueryString("accessdenied")
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginSuccess)
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginFailed)
End If
%>

drm is dit meer wat je bedoelt??

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Wordt er geen regelnummer weergegeven van waar de fout zit?
(Dit maakt het namelijk een stuk makkelijker snel te zien waar de fout zit.
Trouwens je code is nogal rommelig.
Daarnaast is het ook niet onverstandig een SQL-Tutorial te bekijken.

[ Voor 15% gewijzigd door DeverauX op 26-03-2003 19:32 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • .GoO
  • Registratie: September 2001
  • Laatst online: 22-08 23:04
Ik raad je aan om zelf gewoon met ASP aan de gang te gaan, want je hebt nu geen idee wat die code doet.. Een login scriptje is echt heel basic en na een paar 'lessen' of tutorials al te maken..

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Als eerste, kan je code-tags gebruiken? Maakt het allemaal heel wat overzichtelijker.. :)

Indenten en eventueel een aantal comments toevoegen vergroot ook de leesbaarheid van je code enorm.

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
#include virtual="/Connections/ffginfonet.asp"
<%
Dim login
Dim login_numRows

Set login = Server.CreateObject("ADODB.Recordset")
login.ActiveConnection = MM_ffginfonet_STRING
login.Source = "SELECT * FROM login"
login.CursorType = 0
login.CursorLocation = 2
login.LockType = 1
login.Open()

login_numRows = 0
%>
<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("textfield"))
If MM_valUsername <> "" Then
MM_fldUserAuthorization="userlevel"
MM_redirectLoginSuccess="adminpage.asp"
MM_redirectLoginFailed="loginerror.asp"
MM_flag="ADODB.Recordset"
set MM_rsUser = Server.CreateObject(MM_flag)
MM_rsUser.ActiveConnection = MM_ffginfonet_STRING
MM_rsUser.Source = "SELECT gebruikersnaam, wachtwoord"
If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
MM_rsUser.Source = MM_rsUser.Source & " FROM login WHERE gebruikersnaam='" & Replace(MM_valUsername,"'","''") &"' AND wachtwoord='" & Replace(Request.Form("textfield2"),"'","''") & "'"
MM_rsUser.CursorType = 0
MM_rsUser.CursorLocation = 2
MM_rsUser.LockType = 3
MM_rsUser.Open
If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then 
' username and password match - this is a valid user
Session("MM_Username") = MM_valUsername
If (MM_fldUserAuthorization <> "") Then
Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)
Else
Session("MM_UserAuthorization") = ""
End If
if CStr(Request.QueryString("accessdenied")) <> "" And false Then
MM_redirectLoginSuccess = Request.QueryString("accessdenied")
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginSuccess)
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginFailed)
End If
%>


Het stuk MM_rsUser.Source vind ik veel te ondoorzichtelijk worden... Wordt dus debuggen, oftewel, voor het executen eerst het uit te voeren SQL-statement op het scherm toveren dmv Response.Write.
Verder: waarom zou je niet altijd userlevel mee willen nemen? De 'extra overhead' van een extra kolom(welke echt gruwelijk weinig is, absoluut gezien), weegt imho niet op tegen de overhead van de If-then constructie.

Als we toch bezig zijn.. Waarom ga je pas in de SQL de replace-functie gebruiken en niet al bij het vullen van de variabelen? Een andere tip: mix niet alles door elkaar heen; Declare je variabelen in een blok, maar niet door je hele code heen (ivm de overzichtelijkheid)

[ Voor 32% gewijzigd door gorgi_19 op 27-03-2003 00:15 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1