PDA

Bekijk Volledige Versie : Microsoft OLE DB Provider for ODBC Drivers fout '80040e10'



lammert
09/08/03, 22:00
Goede avond allemaal,

Ik heb een probleempje. Ik heb een beheer menu (beveiligd met
wachtwoord en gebruikersnaam) voor een site gemaakt. Een functie
controleert alle keren wanneer je de pagina opent of je een wachtwoord
en gebruikersnaam hebt ingevoerd. Maar als ik deze functie uitvoer
krijg ik hieronder staande melding.
Ik hoop dat er mensen zijn die zo slim zijn die dit probleem weten op
te lossen, want dan kan ik weer verder.
Alvast bedankt voor de genomen moeite.

Groetjes,
Lammert
Vinke


Microsoft OLE DB Provider for ODBC Drivers fout '80040e10'

[Microsoft][ODBC Microsoft Access-stuurprogramma] Er zijn te weinig
parameters. Het verwachte aantal is: 1.

D:\WEBSITE\WWW\BEHEER\..\pages\include\common.inc, regel 291

CODE

'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
' Routine: Geautoriseerd()
'
' Purpose: Checks the autorisatiion of a user to use a function
' Takes into account if maintenance is allowed at this
moment
'
' Inputs : Argument : FunCode
' DataType : Variant String
' Description : ID of the function
'
' Argument : UsrNaam
' DataType : Variant String
' Description : Name of the user
'
' Returns: True if user is authorised, false if not
'
' Sample Usage :
' booVal = Geautoriseerd("activiteitenbeheer","janssen")
'
' Author : Dirk Bok, January 8, 2003
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
Function Geautoriseerd(byval FunCode, byval UsrNaam)
Geautoriseerd = false

if ApplicatieInstelling("BeheerOpen") = true or _
usrNaam = ApplicatieInstelling("SuperUserNaam") then

strSQL = "SELECT count(*) FROM tblFuncties as F, tblAutorisatie as A,
tblGebruikers as G " & _
"WHERE F.FunID = A.FunID and A.UsrID = G.UsrID " & _
"AND lcase(F.FunCode) = '" & lcase(FunCode) & "' " & _
"AND G.UsrNaam = '" & UsrNaam & "';"
Set rstCheckAutorisatie = Server.CreateObject("ADODB.Recordset")

De volgende regel is lijn 291
rstCheckAutorisatie.Open strSQL, CONN_STRING_website, adOpenKeyset,
adLockOptimistic, adCmdText
iRecordCount = rstCheckAutorisatie.Fields(0).Value
rstCheckAutorisatie.Close
Set rstCheckAutorisatie = Nothing

if iRecordCount >0 then
Geautoriseerd = true
end if

end if

End Function

Robrecht Jacques
10/08/03, 10:15
lammert wrote:
> Microsoft OLE DB Provider for ODBC Drivers fout '80040e10'
>
> [Microsoft][ODBC Microsoft Access-stuurprogramma] Er zijn te weinig
> parameters. Het verwachte aantal is: 1.
>
> D:\WEBSITE\WWW\BEHEER\..\pages\include\common.inc, regel 291
....
> strSQL = "SELECT count(*) FROM tblFuncties as F, tblAutorisatie as A,
> tblGebruikers as G " & _
> "WHERE F.FunID = A.FunID and A.UsrID = G.UsrID " & _
> "AND lcase(F.FunCode) = '" & lcase(FunCode) & "' " & _
> "AND G.UsrNaam = '" & UsrNaam & "';"
> Set rstCheckAutorisatie = Server.CreateObject("ADODB.Recordset")
>
> De volgende regel is lijn 291
> rstCheckAutorisatie.Open strSQL, CONN_STRING_website, adOpenKeyset,
> adLockOptimistic, adCmdText

Je strSQL is fout. Eén van de woorden is geen SQL, geen veld van je tabel
of een spellingsfout. Daardoor denkt de .Open functie dat die misspelling
een parameter is, maar je geeft er geen op => de error-boodschap.

In de veronderstelling dat je veld- en tabelnamen allemaal goed zijn, zie
ik op het eerste zicht maar twee mogelijke fouten:

* je gebruikt een ODBC-driver die { fn lcase(f.funcode) } nodig heeft ipv
lcase(f.funcode). Eventueel zou je ook 'lower' kunnen gebruiken ipv
'lcase'.

* je usrNaam of funCode bevatten een ' (enkele quote).

Trouwens die laatste fout zou je hoe dan ook best fixen:
function sqlQuote(s as string) as string
sqlQuote = replace(s, "'", "''")
end function
't Zal je maar gebeuren dat iemand "abc ' ; drop table tblFuncties ; drop
table tblAutorisatie ; ..." meegeeft als funCode of usrNaam.

Robrecht