Får följande felmedelande: Varför har du skrivit "Anslut2" över raden "function Press"? Det tyder på att Anslut2 är en funktion, inte en variabel... Hur ser databas.asp ut? Jag tror det är där felet ligger. <% Jag vet vad som är fel. Tackar :-) Du verkar sakna färståelse för objekt och dess livstid samt deras förhållande till variabler och funktioner. Felet är löst nu.Problem med anslutning av Databas (delad funktioner) med felera databas anslutni
<code>
Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: 'Anslut2'
/plugget/user/press/inc/press.asp, line 38
</code>
på rad 38 står följande kod.
<code>
set rst = Anslut2.execute("select id,press from UserAcount where id= " & replace(cLng(repquest.querystring("Uid")),"'","''"))
</code>
Anslut2 hämtas i databas.asp
där jag har 3 funktioner för ansluta databasen.
Orsak: går jag i en undermapp kan inte anslut och anslut 1 användas krävs 1 anslutning där.
De blir anslut 2. Undermapp som inte funkar då blir det anslut3 osv.
Så Anslut2 existerar.
här kommer fullständig kod där problemet uppstår.
<code>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--#include file="../../../inc/databas.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
Anslut2
function Press
'' Visa användarens pressentation
'' samt kontroll. Vid sant 'kontroll av användare existar.
Set rst = Anslut2.execute("select Id,Anv,Press from UserAcounts Where id=" & Replace(Clng(request.querystring("Uid")),"'","''"))
If not rst.eof then
Response.write "<td>" & rst("Press") & "</td>"
' skrivs ut användaren om den hittas i databasen.
' samt skriver ut pressentationen.
' Ålder och kön och om den är Vip och dyligt skrivs de ut.
else
Response.write "Hitta inte användaren kontakta Administratör eller maila admin@pluget.nu med Subjekt Akut ärende! Prova logga in igen eller ladda om sidan."
' skriv ut felmedelande då användaren inte hittades!
' T.ex skriveri n id själv i siffra t.ex 99 och då det inte
' finns 99 användare skrivs felmedleande ut finns 99 kommer
' man till användare 99 press/hule. istället.
set rst = Nothing
end if
end function
' rad 30
function PressUpdate
response.write "Kontroll pågår om du kan uppdatera din press!"
If cLng(Session("Access")) = cLng(request.querystring("Uid")) then
response.write "Uppdatering av sida kan göras!"
set rst = Anslut2.execute("select id,press from UserAcount where id= " & replace(cLng(repquest.querystring("Uid")),"'","''"))
If not rst.eof then
response.write "<form method=""Post"" action=""#PressSave?Reg=Save"">"
response.write "</form>"
else
end if
else
response.write "Du har inte behörighet ett fel uppstod."
response.write "Fel kan ha uppståt att du har varit inaktiv i mer än 30 minuter!"
response.write "Logga in igen och klicka på Hule och välj Uppdatera. Om felet kvarstår efter inloggning!"
response.write "kontakta oss direkt på mail admin@pluget.nu och ange HuleUpdate så felsökning sker."
response.write "Anges inget fel i mailet kan felet ej åtgärdas därför viktigt att ange felkod: HuleUpdate!"
end if
end function
Function UpdateWiev
response.write "</tr><tr>"
response.write "<td>test</td>"
response.write "</tr>"
end function
%>
</body>
</html>
</code>
När jag använder Anslut2 i Press. Funkar det men ska jag använda och anropa PressUpdate så
får jag felmedelande som jag beskriver längst uppe.
Prova även att skapa en funktion till med namnet Anslut3. Men där samma problem som står ovanför.
Vad är då fel. Förstår inte vad jag ska göra för lösa problemet. Någon som har lösningen.
Samt hur man kan göra 1 bra lösning på att ha 1 anslutning och inte flera då anslut inte funkar om jag har en undermappa till huvudsidan.
Hoppas ni förstår problemet. :-)
Samt att skriver jag
Close.Anslut2
Set Anslut = Nothing
Error objet close krävs.
men rem jag dom så funkar close på anslut,anslut1 och anslut3 men inte för Anslut2 inte änds om jag skriver close.Anslut2 direkt på sidan där jag använder den.
Förstår inte vad som är fel. Samt när jag har stängt den kan jag ändå använda Anslu2 på sidan även om den är stängd en gång? Efter som jag hämtar databas.asp där koden står. Men inte close.
DÅ det inte funkar.Sv: Problem med anslutning av Databas (delad funktioner) med felera databas ansl
När du skriver "Close.Anslut2" försöker du köra metoden Anslut2 på objektet Close, det ska vara tvärt om: "Anslut2.Close".
/JohanSv:Problem med anslutning av Databas (delad funktioner) med felera databas ansl
Function Anslut
set Anslut= server.CreateObject("Adodb.Connection")
Anslut.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/databas.mdb")
End function
Function Anslut1
set Anslut1= server.CreateObject("Adodb.Connection")
Anslut1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../db/databas.mdb")
End function
Function Anslut2
set Anslut2= server.CreateObject("Adodb.Connection")
Anslut2.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../../db/databas.mdb")
End function
Function Anslut3
set Anslut3= server.CreateObject("Adodb.Connection")
Anslut3.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../../db/databas.mdb")
End function
<code>
Function AnslutClose
close.Anslut
Set Anslut = Nothing
End function
Function Anslutclose1
close.Anslut1
Set Anslut1 = Nothing
end function
'rad 32
Function AnslutClose3
Close.Anslut3
Set Anslut3 = Nothing
End function
%>
</code> Men med den här får jag inget felmedelande:
Så ser koden ut i databas.asp
men har jag med.
Function AnslutClose2
close.Anslut2
set Anslut = Nothing
end function
så är det bara den här koden som den klagar på.
SÅ därför tycker jag det känns konstigt att om det ska vara Anslut2.close att den inte klaga på dom andra.Sv: Problem med anslutning av Databas (delad funktioner) med felera databas ansl
Till att börja med bör du ändra din inklud fil till:
<%
Function OpenConnection()
Dim Anslut
Set Anslut = server.CreateObject("Adodb.Connection")
Anslut.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/databas.mdb")
Set OpenConnection = Anslut
End function
%>
Sedan din HTML fil:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--#include file="../../../inc/databas.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
'' Visa användarens pressentation
'' samt kontroll. Vid sant 'kontroll av användare existar.
Function Press(Anslut)
Set rst = Anslut.execute("select Id,Anv,Press from UserAcounts Where id=" & Clng(request.querystring("Uid"))
' skrivs ut användaren om den hittas i databasen.
' samt skriver ut pressentationen.
' Ålder och kön och om den är Vip och dyligt skrivs de ut.
If not rst.eof then
Response.write "<td>" & Server.HTMLEncode(rst("Press")) & "</td>"
' skriv ut felmedelande då användaren inte hittades!
' T.ex skriveri n id själv i siffra t.ex 99 och då det inte
' finns 99 användare skrivs felmedleande ut finns 99 kommer
' man till användare 99 press/hule. istället.
Else
Response.write "Hitta inte användaren kontakta Administratör eller maila admin@pluget.nu med Subjekt Akut ärende! Prova logga in igen eller ladda om sidan."
End if
rs.Close
end function
' rad 30
function PressUpdate(Anslut)
Response.write "Kontroll pågår om du kan uppdatera din press!"
If cLng(Session("Access")) = cLng(request.querystring("Uid")) then
Response.write "Uppdatering av sida kan göras!"
set rst = Anslut.execute("select id,press from UserAcount where id= " & cLng(repquest.querystring("Uid")))
If not rst.eof then
Response.write "<form method=""Post"" action=""#PressSave?Reg=Save"">"
Response.write "</form>"
End if
rs.Close
Else
Response.write "Du har inte behörighet ett fel uppstod."
Response.write "Fel kan ha uppståt att du har varit inaktiv i mer än 30 minuter!"
Response.write "Logga in igen och klicka på Hule och välj Uppdatera. Om felet kvarstår efter inloggning!"
Response.write "kontakta oss direkt på mail admin@pluget.nu och ange HuleUpdate så felsökning sker."
Response.write "Anges inget fel i mailet kan felet ej åtgärdas därför viktigt att ange felkod: HuleUpdate!"
End if
End function
Function UpdateWiev
Response.write "</tr><tr>"
Response.write "<td>test</td>"
Response.write "</tr>"
end function
Set Con = OpenConnection()
Response.write "<table>"
Press Con
Response.write "</table>"
Con.Close
%>
</body>
</html>
Sv:Problem med anslutning av Databas (delad funktioner) med felera databas ansl
Så man kan i funktioner hämta saker direkt
via
function namn (annanfunktion,uterligarefunktion)
och på så sätt slippa strull.Sv: Problem med anslutning av Databas (delad funktioner) med felera databas ansl
Om du har en funktion som skapar ett objet och retunerar objektet som dess värde. blir det fe lom du skriver:
<code>
Response.write "<table>"
Press OpenConnection
Response.write "</table>"
OpenConnection.close
</code>
Denna koden är helt FEL!
Detta för att två instanser av connection skapas. Varav det första inte explicit stängs. samt det andra connectionen inte används till något vettigt.
Du bör därför använda variabler:
<code>
Dim x
x = OpenConnection
Response.write "<table>"
Press x
Response.write "</table>"
x.close
</code>
Detta är en snygg lösning.Sv:Problem med anslutning av Databas (delad funktioner) med felera databas ansl
Felet var
<code>
server.mappath("/databasmapp/databasen.mdb")
</code>