Avatar billede eiland Nybegynder
14. oktober 2001 - 13:39 Der er 27 kommentarer og
1 løsning

Gemme en class i et session objekt.

Jeg prøver at gemme en class i et session objekt, men når jeg skal have fat i classen på en ny side får jeg en fejlmeddelelse, hvad skal ændres for at det fungerer.
Jeg har brugt nedenstående kode til at teste med. Når classen kan udskrive sin testværdi, der blev sat på forrige side er jeg tilfreds.
<% Option Explicit
%><!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html> <head><title>Page title</title></head><body><%
class testObj
    private testVaerdi
   
    public sub SetVaerdi(vaerdi)
        testVaerdi = vaerdi
    end sub
    public function hent()
        hent = testVaerdi
    end function
end class

if request.querystring(\"ObjErDer\") then
    response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\").hent & \",-\"
else
    set session(\"objTes\") = new testObj
    session(\"objTes\").SetVaerdi(\"En lille test.\")
    response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",-\"
end if

%>
<br><a href=test.asp?ObjErDer=true>Test</a>


</body>
</html>
Avatar billede zaknafein Praktikant
14. oktober 2001 - 15:09 #1
Ok istedet for at sige
session(\"objTes\").hent
skal du prøve at sætte et object =  først.
altså
clsTestObj = session(\"objTes\")

Og derefter køre clsTestObj.hent()
Avatar billede eiland Nybegynder
14. oktober 2001 - 15:46 #2
Jeg har prøvet med følgende, men det fungerer heller ikke.
<% Option Explicit
%><!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html> <head><title>Page title</title></head><body><%
class testObj
    private testVaerdi
   
    public sub SetVaerdi(vaerdi)
        testVaerdi = vaerdi
    end sub
    public function hent()
        hent = testVaerdi
    end function
end class
dim clsTestObj
if request.querystring(\"ObjErDer\") then
    clsTestObj = session(\"objTes\")
   
    response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\"
\'    response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\").hent & \",-\"
else
    set session(\"objTes\") = new testObj
    session(\"objTes\").SetVaerdi(\"En lille test.\")
    response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",-\"
end if

%>
<br><a href=test.asp?ObjErDer=true>Test</a>


</body>
</html>
Avatar billede sp Nybegynder
14. oktober 2001 - 18:58 #3
Hvad er fejlmeldingen?
Avatar billede eiland Nybegynder
14. oktober 2001 - 21:08 #4
Ved første stump kode

Tekniske oplysninger (for supportteknikere)

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode: \'hent\'
/test.asp, line 19


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Side:
GET /test.asp

Klokkeslæt:
14. oktober 2001, 21:08:56


Yderligere oplysninger:
Microsoft Support

Ved stump kode
Tekniske oplysninger (for supportteknikere)

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: \'\'
/test.asp, line 18


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Side:
GET /test.asp

Klokkeslæt:
14. oktober 2001, 21:06:20


Yderligere oplysninger:
Microsoft Support
Avatar billede eiland Nybegynder
14. oktober 2001 - 21:11 #5
Hvis man i det andet stykke kode erstatter
clsTestObj = session(\"objTes\")
med
Set clsTestObj = session(\"objTes\")
fås samme fejlmeddelse som i den første stump kode
Avatar billede sp Nybegynder
14. oktober 2001 - 21:46 #6
En Session sætter man sådan:

Session(\"navn\")= \"vaerdi\"

Avatar billede eiland Nybegynder
14. oktober 2001 - 22:05 #7
set clsTestObj = new testObj
    clsTestObj.SetVaerdi(\"En lille test.\")
    session(\"objTes\") = clsTestObj  \'<-- Feljmeddelse som neden stående
    response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\"
Tekniske oplysninger (for supportteknikere)

Fejltype:
Session-objekt, ASP 0185 (0x80020003)
En standardegenskab for objektet blev ikke fundet.
/test.asp, line 23


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Side:
GET /test.asp

Klokkeslæt:
14. oktober 2001, 22:04:58


Yderligere oplysninger:
Microsoft Support
Avatar billede sp Nybegynder
14. oktober 2001 - 22:17 #8
Sådan laver man en class.
Dim X
Set X = New classname

Du kan ikke bruge:

X = New classname

Avatar billede sp Nybegynder
14. oktober 2001 - 22:23 #9
Vil du udskrive en session gør du fl.g.

Response.write Session(\"name\")

Avatar billede eiland Nybegynder
14. oktober 2001 - 22:27 #10
<% Option Explicit
%><!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html> <head><title>Page title</title></head><body><%
class testObj
    private testVaerdi
   
    public sub SetVaerdi(vaerdi)
        testVaerdi = vaerdi
    end sub
    public function hent()
        hent = testVaerdi
    end function
end class
dim clsTestObj
if request.querystring(\"ObjErDer\") then
   
    set clsTestObj = session(\"objTes\")
   
    response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\"                  \'<-- Fejl
\'    response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\").hent & \",-\"
else
    set clsTestObj = new testObj
    clsTestObj.SetVaerdi(\"En lille test.\")
    set session(\"objTes\") = clsTestObj  \'<-- Feljmeddelse som neden stående
    response.write \"Klassen indeholder :\" & clsTestObj.hent & \",- <br>\"
    response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",- <br>\"
   
end if

%>
<br><a href=test.asp?ObjErDer=true>Test</a>


</body>
</html>

Giver følgend fejlmelding:

Tekniske oplysninger (for supportteknikere)

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode: \'hent\'
/test.asp, line 19


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Side:
GET /test.asp

Klokkeslæt:
14. oktober 2001, 22:27:16


Yderligere oplysninger:
Microsoft Support
Avatar billede sp Nybegynder
14. oktober 2001 - 22:29 #11
  response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",- <br>\"
Denne plus den anden skal ændres til:

  response.write \"Klassen indeholder :\" & session(\"objTes\")& \",- <br>\"
Avatar billede eiland Nybegynder
14. oktober 2001 - 22:35 #12
if request.querystring(\"ObjErDer\") then
   
    set clsTestObj = session(\"objTes\")
   
\'    response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\"
    response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\") & \",-\" \'<--Fejl .hent skal være der for at vise at functionen hent skal kaldes.
else
    set clsTestObj = new testObj
    clsTestObj.SetVaerdi(\"En lille test.\")
    set session(\"objTes\") = clsTestObj  \'<-- Feljmeddelse som neden stående
    session(\"objTes\").SetVaerdi(\"En lille test.\")
    response.write \"Klassen indeholder :\" & clsTestObj.hent & \",- <br>\"  \'<-- Fungerer fint
    response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",- <br>\" \'<-- Fungerer fint
   
end if


Fejl:


Tekniske oplysninger (for supportteknikere)

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode
/test.asp, line 20


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Avatar billede sp Nybegynder
14. oktober 2001 - 22:38 #13
response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",- <br>\" \'<-- Fungerer fint
Skal ændres til:
 
response.write \"Klassen indeholder :\" & session(\"objTes\")& \",- <br>\" \'<-- Fungerer fint
Så får du indholdet af session(\"objtes\")
 
Avatar billede eiland Nybegynder
14. oktober 2001 - 22:40 #14
indholdet af session(\"objtes\") er en Klasse, ikke en tekststegn eller en integer
Avatar billede sp Nybegynder
14. oktober 2001 - 22:41 #15
session(\"objTes\").SetVaerdi(\"En lille test.\")
Såan sætter man ikke en session

Det gøres som jeg skrev tidligere sådan

Session(\"objTes\") = \"En lille test\"

Du skal huske det er sessions du arbejder med og ikke classer i dette tilfælde.

Avatar billede eiland Nybegynder
14. oktober 2001 - 22:42 #16
Hvis jeg skriv:

else
    set clsTestObj = new testObj
    clsTestObj.SetVaerdi(\"En lille test.\")
    set session(\"objTes\") = clsTestObj  \'<-- Feljmeddelse som neden stående
    session(\"objTes\").SetVaerdi(\"En lille test.\")
    response.write \"Klassen indeholder :\" & clsTestObj.hent & \",- <br>\"  \'<-- Fungerer fint
    response.write \"Klassen indeholder :\" & session(\"objTes\") & \",- <br>\" \'<-- Fejl
   
end if

Får jeg følgende fejl

Tekniske oplysninger (for supportteknikere)

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode
/test.asp, line 27


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Avatar billede sp Nybegynder
14. oktober 2001 - 22:42 #17
Ja en Klasse der har en bestemt værdi?

Avatar billede sp Nybegynder
14. oktober 2001 - 22:43 #18
Hvad er linje 27?
Avatar billede sp Nybegynder
14. oktober 2001 - 22:44 #19
  session(\"objTes\").SetVaerdi(\"En lille test.\")
Skal ændres til

  session(\"objTes\")=\"En lille test.\"
Avatar billede eiland Nybegynder
14. oktober 2001 - 22:44 #20
Jeg skal gemme en class i et session objekt.
Jeg ved godt hvordan man gemmer en tekst stregn.
Avatar billede sp Nybegynder
14. oktober 2001 - 22:46 #21
Ok,

session(\"objTes\")= clsTestObj
Avatar billede eiland Nybegynder
14. oktober 2001 - 22:48 #22
ok og hvad når jeg skal hente det igen?
Avatar billede eiland Nybegynder
14. oktober 2001 - 22:53 #23
når man bruger:
session(\"objTes\")= clsTestObj 

Giver det denne fejlmeddelse


set clsTestObj = new testObj
    clsTestObj.SetVaerdi(\"En lille test.\")
    session(\"objTes\") = clsTestObj  \'<-- Feljmeddelse som neden stående
    response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\"
Tekniske oplysninger (for supportteknikere)

Fejltype:
Session-objekt, ASP 0185 (0x80020003)
En standardegenskab for objektet blev ikke fundet.
/test.asp, line 23
Avatar billede kichian Nybegynder
15. oktober 2001 - 08:18 #24
Den sidste fejlmeddellelse betyder at objektet ikke har en \"default\" property. Dvs at an metode som skal kaldes hvis man kalder objekter uden angivelse af metode.
session(\"objTes\") = clsTestObj  bruges ikke til at sætte session(\"objTes\") lig med dit objekt. Der forventes i stedet en simpel datatype.
Du skal bruge SET session(\"objTes\") = clsTestObj.

session(\"objTes\").SetVaerdi(\"En lille test.\") burde være OK.

Dette fejler :
response.write \"Klassen indeholder :\" & clsTestObj.hent

fordi hent er en funktion og ikke en sub. Skriv i stedet:
response.write \"Klassen indeholder :\" & clsTestObj.hent()

Hvis du på andre sider vil bruge session(\"objTes\"), skal definitionen af dit objekt også defineres her.
Avatar billede eiland Nybegynder
15. oktober 2001 - 08:46 #25
class testObj
    private testVaerdi
    public proeryt
    public sub SetVaerdi(vaerdi)
        testVaerdi = vaerdi
    end sub
    public function hent
        hent = testVaerdi
    end function
end class
dim clsTestObj
Jer har prøvet med følgende:
if request.querystring(\"ObjErDer\") then
    set clsTestObj = session(\"objTes\")
\'    response.write \"Klassen indeholder :\" & clsTestObj.hent() & \",-\" <-----hvis den ikke er udkommenteret giver den samme fejlmeddelse.
    response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\").hent() & \",-\" \'<--Fejl som nedstående
else
    set clsTestObj = new testObj
    clsTestObj.SetVaerdi(\"En lille test.\")
    set session(\"objTes\") = clsTestObj  \'<--
\'    session(\"objTes\").SetVaerdi(\"En lille test.\")
    response.write \"Klassen indeholder :\" & clsTestObj.hent() & \",- <br>\"  \'<-- Fungerer fint
    response.write \"Klassen indeholder :\" & session(\"objTes\").hent() & \",- <br>\" \'<-- Fungerer fint
end if


Giver følgende fejl


Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode: \'hent\'
/test.asp, line 19
Avatar billede kichian Nybegynder
16. oktober 2001 - 10:24 #26
Bør hent ikke defineres som public function hent()

Når du tester for request.querystring(\"ObjErDer\") then
lader det til at objektet ikke er lagt i sessions-objektet eller objektdefinitionen ikke kan findes.
Jeg har lykkedes med at komme objekter i session-objektet, så det undrer mig lidt at det ikke funker her.

Avatar billede eiland Nybegynder
16. oktober 2001 - 10:49 #27
Jeg har prøvet at defineres hent som public function hent()

men det giver samme fejlmeddelse.
Avatar billede eiland Nybegynder
17. februar 2002 - 14:47 #28
lukker
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