Hello! dim dsn Tjohoo..nu funkar det!! har en fråga till förresten!! Det är ineffektivt att använda cmd.parameters.refresh(). Då man ofta känner parametrarna är det inneffektivt att be databasen hämta den. Detta är vanligt bland "lata" programmerare.FEL: ADODB.Command (0x800A0BB9)
Testade att göra en loginsida, men jag får ett felmess.
använder IIS5 och access
Global.asa ser ut så här:
<script language="VBScript" RUNAT="Server">
Sub Application_OnStart
Application.lock
Application("conn")="driver={Microsoft Access Driver(*.mdb)}; dbq=c:\Inetpub\wwwroot\db\usr.mdb"
Application.unlock
END SUB
</script>
ADOVBS är inkluderad.
Och koden ser ut så här:
<%
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = Application("conn")
sSQL = "SELECT id FROM tbl_usr WHERE usr = '" & namn & "' AND pass = '" & pass &"' "
cmd.CommandText=sSQL
cmd.CommandType=adcmdText
Set rsChk = cmd.Execute
IF NOT rsChk.EOF THEN
Session("login")=rsChk("id")
Response.Redirect("admin.asp")
ELSE
'Errormessage, link back to loginpage
Response.Write "Felaktig inloggning" &"<br/>"
Response.Write "" &"Tillbaka" &""
End IF
%>
Feltyp:
ADODB.Command (0x800A0BB9)
Parametrarna är felaktiga, ligger utanför tillåtet intervall eller skapar en inbördes konflikt.
Line 19
Det är denna rad:
cmd.ActiveConnection = Application("conn")
Tacksam för all hjälp!
mvh
Tobias
Sv: FEL: ADODB.Command (0x800A0BB9)
global.asa körs inte alltid så att lägga kopplingen till databasen där är inte så smart, lägg den hellre i en egen fil som du includerar.
//Anna-KarinSv: FEL: ADODB.Command (0x800A0BB9)
dim conn
dim reader
dim sql
dsn = "din sträng"
set conn = Server.CreateObject("ADODB.Connection")
set reader = Server.CreateObject("ADODB.Recordset")
conn.Open dsn
reader.cursorlocation = 2
dim cmd
set cmd = server.createobject("ADODB.Command")
cmd.ActiveConnection = conn
sql = "SELECT id FROM tbl_usr WHERE usr = ? AND pass = ?"
cmd.commandtext = sql
cmd.parameters.refresh
cmd.parameters(0).value = namn
cmd.parameters(1).value = pass
set reader = cmd.execute
if reader.eof = false or reader.bof = false then
osv....
end if
reader.close
osv....Sv: FEL: ADODB.Command (0x800A0BB9)
Tack så mycket!
inkluderade en fil istället!Sv: FEL: ADODB.Command (0x800A0BB9)
Session("login")=rsChk("id") startar en session, det funkar på första sidan efter login...men när jag klickar på nästa länk alt. uppdaterar sidan som inloggad så dör sessionen..
sid1.asp
IF NOT rsChk.EOF THEN
'Session sets username & redirect to adminpage
Session("login")=rsChk("id")
Response.Redirect("admin.asp")
ELSE
'Errormessage, link back to loginpage
Response.Write "Felaktig inloggning"
så ser det ut..
hur skriver jag på sid2.asp för att session ska fortsätta??Sv: FEL: ADODB.Command (0x800A0BB9)
För kvalitet lägg istället till parametrar med:
<code>
cmd.parameters.append cmd.CreateParameter(osv...)
</code>
der oxå från användning av DNS då dina anslutning använder OLEDB providern för ODBC. Vilket ger en extra väg för kommunikation mellan databas och kod.
Jag förespråkar istället att man inkluderar en fil med en funktion vilket kapslar öppning av databas eller en fil med konstanter för inställningar så som databas sökväg, connetionstring, osv..
Exempel på inkluderad funktion:
<code>
<%
Const DBFileName = "C:\Databaser\db1.mdb"
Function ConnectionAccess(FileName)
Dim con
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & FileName
Set ConnectionAccess = con
End Function
Function DefaultConnection()
Set DefaultConnection = ConnectionAccess(DBFileName)
End Function
%>
</code>
Vilket sedan används på följande sätt på sidor filen är inkluderad:
<code>
Dim rs
Dim con
Set con = DefaultConnection()
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT tblUsers.* FROM tblUsers", con
Do Until rs.EOF
Response.Write rs("UserName") & "<BR />" & vbCrLf
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
con.Close
Set con = Nothing
</code>