/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Kan ikke læse Access fra global.asa
Fra : Steen


Dato : 31-08-02 21:56

Hej NG

Jeg vil gerne skrive noget til en Access2000-database, når en session
afsluttes. Denne fremgangsmåde VIRKER i selve asp-filen:

-----
set conn = Server.CreateObject("ADODB.Connection")
dsn = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pw=;"
dsn = dsn & "DBQ=" & Server.MapPath ("../../access/database.mdb")
conn.open dsn

sql = "UPDATE brugere SET login=false WHERE brugernavn='" &
session("brugernavn") &"'"
set rs = conn.execute(sql)

session.abandon
-----

Men nu vil jeg gerne have, at brugeren registreres som logget ud, selv når
han ikke logger ud manuelt, men når sessionen udløber. Derfor satte jeg
følgende ind i global.asa:

-----
sub Session_OnEnd

set conn = Server.CreateObject("ADODB.Connection")
dsn = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pw=;"
dsn = dsn & "DBQ=" & Server.MapPath ("../../access/database.mdb")
conn.open dsn

sql = "UPDATE brugere SET login=false WHERE brugernavn='" &
session("brugernavn") &"'"
set rs = conn.execute(sql)
end sub
-----

....men det virkede ikke. Jeg gætter på, at det er fordi min asp-fil ikke
ligger i samme katalog som global.asa. Derfor har jeg prøvet med både

Server.MapPath ("underkatalog/access/database.mdb") og
Server.MapPath ("D:/inetpub/wwwroot/underkatalog/access/database.mdb")

men ingen af delene virker. Hvor går det galt?

Mvh Steen



 
 
Jørgen (01-09-2002)
Kommentar
Fra : Jørgen


Dato : 01-09-02 11:07

Steen wrote in dk.edb.internet.webdesign.serverside.asp:
> sub Session_OnEnd
>
> set conn = Server.CreateObject("ADODB.Connection")
> dsn = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pw=;"
> dsn = dsn & "DBQ=" & Server.MapPath ("../../access/database.mdb")
> conn.open dsn
>
> sql = "UPDATE brugere SET login=false WHERE brugernavn='" &
> session("brugernavn") &"'"
> set rs = conn.execute(sql)
> end sub
> -----
Den går ikke, du kan ikke bruge Server.MapPath sammen med den fysiske adresse
> Server.MapPath ("D:/inetpub/wwwroot/underkatalog/access/database.mdb")

Prøv i stedet
dsn = dsn & "DBQ=" & "D:/inetpub/wwwroot/underkatalog/access/database.mdb"

Vær opmærksom på, at Server.MapPath finder stien fra den kaldende side og
ikke fra global.asa
MVH
Jørgen

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Tobias Hinnerup (01-09-2002)
Kommentar
Fra : Tobias Hinnerup


Dato : 01-09-02 11:13


"Jørgen" <j.muller@mail.tele.dk> wrote in message
news:aksorm$sl2$1@sunsite.dk...
> Steen wrote in dk.edb.internet.webdesign.serverside.asp:
> > sub Session_OnEnd
> >
> > set conn = Server.CreateObject("ADODB.Connection")
> > dsn = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pw=;"
> > dsn = dsn & "DBQ=" & Server.MapPath ("../../access/database.mdb")
> > conn.open dsn
> >
> > sql = "UPDATE brugere SET login=false WHERE brugernavn='" &
> > session("brugernavn") &"'"
> > set rs = conn.execute(sql)
> > end sub
> > -----
> Den går ikke, du kan ikke bruge Server.MapPath sammen med den fysiske
adresse
> > Server.MapPath ("D:/inetpub/wwwroot/underkatalog/access/database.mdb")
>
> Prøv i stedet
> dsn = dsn & "DBQ=" & "D:/inetpub/wwwroot/underkatalog/access/database.mdb"
>
> Vær opmærksom på, at Server.MapPath finder stien fra den kaldende side og
> ikke fra global.asa

Brug evt. Server.MapPath ("/underkatalog/access/database.mdb"), der vil gøre
mere uafhængig af den fysiske placering af sitet.

/Tobias



Jesper Stocholm (01-09-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 01-09-02 11:22

Steen wrote in dk.edb.internet.webdesign.serverside.asp:

> Jeg vil gerne skrive noget til en Access2000-database, når en session
> afsluttes. Denne fremgangsmåde VIRKER i selve asp-filen:
[snip]
> Men nu vil jeg gerne have, at brugeren registreres som logget ud, selv når
> han ikke logger ud manuelt, men når sessionen udløber. Derfor satte jeg
> følgende ind i global.asa:
>
> -----
> sub Session_OnEnd
[snip]
> sql = "UPDATE brugere SET login=false WHERE brugernavn='" &
> session("brugernavn") &"'"

Jeg tror, at du vil få et problem med dette. Når event'en Session_OnEnd
afvikles, så er din bruges session jo netop forbi - og derfor vil hendes
session-variabler også være væk. Derfor giver det ikke mening at prøve at
overføre din session-variabel til din SQL-sætning ... da den jo netop er væk.

Til andre: sig lige til, hvis jeg tager fejl. Jeg mener blot, at det har
været oppe før, og konklusionen var, at ud fra et design-mæssigt synspunkt i
ASP, så kan det her ønskede ikke lade sig gøre.

/Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Steen (01-09-2002)
Kommentar
Fra : Steen


Dato : 01-09-02 12:52

"Jesper Stocholm" <spam200209@stocholm.dk> wrote:

> Jeg tror, at du vil få et problem med dette. Når event'en Session_OnEnd
> afvikles, så er din bruges session jo netop forbi - og derfor vil hendes
> session-variabler også være væk. Derfor giver det ikke mening at prøve at
> overføre din session-variabel til din SQL-sætning ... da den jo netop er
væk.

Nu har jeg prøvet både Jørgens og Tobias' forslag, og ingen af delene
virker. Hvis det virkelig passer, hvad Jesper skriver ovenfor, så er man jo
ilde ude, når en bruger skal registreres som offline, når hans session
udløber. Er vi ikke enige om, at det fedeste ville være, hvis Session_OnEnd
køres umiddelbart _inden_ sessionen afsluttes?!

....og hvis det virkelig _er_ tilfældet - hvordan i alverden skal man så
registrere en bruger som offline, når hans session udløber?

Mvh Steen



Jesper Stocholm (01-09-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 01-09-02 14:15

Steen wrote in dk.edb.internet.webdesign.serverside.asp:
> "Jesper Stocholm" <spam200209@stocholm.dk> wrote:
>
> > Jeg tror, at du vil få et problem med dette. Når event'en Session_OnEnd
> > afvikles, så er din bruges session jo netop forbi - og derfor vil hendes
> > session-variabler også være væk. Derfor giver det ikke mening at prøve
at
> > overføre din session-variabel til din SQL-sætning ... da den jo netop er
> > væk.
>
> Nu har jeg prøvet både Jørgens og Tobias' forslag, og ingen af delene
> virker. Hvis det virkelig passer, hvad Jesper skriver ovenfor, så er man
jo
> ilde ude, når en bruger skal registreres som offline, når hans session
> udløber. Er vi ikke enige om, at det fedeste ville være, hvis
Session_OnEnd
> køres umiddelbart _inden_ sessionen afsluttes?!

joeh ... men så ville event'en jo nok hedde "Session_BeforeEnd



> ....og hvis det virkelig _er_ tilfældet - hvordan i alverden skal man så
> registrere en bruger som offline, når hans session udløber?

som sagt ... så er jeg lidt i tvivl selv, hvoorvidt jeg har ret. De gange
det har været debatteret herinde, så er løsningen hver gang blevet noget
hack-værk, hvor der i en application-variabel vedligeholdes et array med de
brugere, der er online. Du kan evt selv på http://groups.google.com prøve i
denne grupppe at søge på fx ordet Session_onEnd eller lignende for at finde
de tidligere tråde.

/Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Steen (01-09-2002)
Kommentar
Fra : Steen


Dato : 01-09-02 19:53

"Jesper Stocholm" <spam200209@stocholm.dk> wrote:

> som sagt ... så er jeg lidt i tvivl selv, hvoorvidt jeg har ret. De gange
> det har været debatteret herinde, så er løsningen hver gang blevet noget
> hack-værk, hvor der i en application-variabel vedligeholdes et array med
de
> brugere, der er online. Du kan evt selv på http://groups.google.com prøve
i
> denne grupppe at søge på fx ordet Session_onEnd eller lignende for at
finde
> de tidligere tråde.

Jeg har kigget mig lidt omkring, og det ser ud til, at du har ret: når
Session_OnEnd køres i global.asa ER alle session-variable allerede slettet.

Det er naturligvis nemt nok at holde styr på _antallet_ af brugere online -
det kunne f.eks. blot være en application-variabel, som talte op i
session_onStart og ned i session_onEnd.

Men at holde styr på HVILKE brugere, der er online... Er vi enige om, at det
simpelthen er umuligt?!

Sådan som ASP er udformet, kan man jo ikke vide, om en session timer ud, før
den timer ud - og så er det allerede for sent!

Mvh Steen



Jesper Stocholm (01-09-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 01-09-02 22:05

Steen wrote in news:aktnle$9cu$1@sunsite.dk:

> "Jesper Stocholm" <spam200209@stocholm.dk> wrote:
> Jeg har kigget mig lidt omkring, og det ser ud til, at du har ret: når
> Session_OnEnd køres i global.asa ER alle session-variable allerede
> slettet.

Jeg tror, at det er "behavior by design" fra MS's side.

> Det er naturligvis nemt nok at holde styr på _antallet_ af brugere
> online - det kunne f.eks. blot være en application-variabel, som talte
> op i session_onStart og ned i session_onEnd.

præcist ...

> Men at holde styr på HVILKE brugere, der er online... Er vi enige om,
> at det simpelthen er umuligt?!
>
> Sådan som ASP er udformet, kan man jo ikke vide, om en session timer
> ud, før den timer ud - og så er det allerede for sent!

jeg tror ikke, at det er _umuligt_ i ordets egentlige betydning ... men det
er nok ikke helt let - specielt ikke, hvis du insisterer på at klare alt i
Global.asa . De eksempler jeg har set med det har været iblandet noget
javascript-hejs, der undersøger om man går væk fra det ønskede domæne. I
dette tilfælde åbnes et vindue, der afvikler en ASP-side, der opdaterer en
tabel i en database.

Det irriterende spørgsmål er naturligvis: Er denne funktion så vigtig for
dig, at du vil bruge så lang tid på det ... eller er du blot blevet fanget
i den suppedas, hvor man bliver stædig ?



--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Rune B (02-09-2002)
Kommentar
Fra : Rune B


Dato : 02-09-02 18:52


"Jesper Stocholm" <spam200209@stocholm.dk> wrote in message
news:akt3ro$dvk$1@sunsite.dk...

[..]
> som sagt ... så er jeg lidt i tvivl selv, hvoorvidt jeg har ret. De gange
> det har været debatteret herinde, så er løsningen hver gang blevet noget
> hack-værk, hvor der i en application-variabel vedligeholdes et array med de
> brugere, der er online. Du kan evt selv på http://groups.google.com prøve i
> denne grupppe at søge på fx ordet Session_onEnd eller lignende for at finde
> de tidligere tråde.

Både / og:

Kan du forklare mig hvorfor dette virker ?
session("userName") burde jo være tom ikk?, men den lille RePlace-procedure
fungerer nu alligevel fint...

Fra Global.asa:

Sub session_onend
application.lock
application("Userlist") = Replace(application("Userlist"), " $" &
session("userName") & "$", "")
application.unlock
End Sub


Rune



Jesper Stocholm (02-09-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 02-09-02 19:12

Rune B wrote in news:3d73a548$0$159$edfadb0f@dspool01.news.tele.dk:

>
> "Jesper Stocholm" <spam200209@stocholm.dk> wrote in message
> news:akt3ro$dvk$1@sunsite.dk...

> Både / og:
>
> Kan du forklare mig hvorfor dette virker ?
> session("userName") burde jo være tom ikk?, men den lille
> RePlace-procedure fungerer nu alligevel fint...
>
> Sub session_onend
> application.lock
> application("Userlist") = Replace(application("Userlist"), " $" &
> session("userName") & "$", "")
> application.unlock
> End Sub

nej ... det kan jeg ikke forklare ...



--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Rune B (02-09-2002)
Kommentar
Fra : Rune B


Dato : 02-09-02 23:01


"Jesper Stocholm" <jespers@stocholm.invalid> wrote in message
[..]
> > Kan du forklare mig hvorfor dette virker ?
> > session("userName") burde jo være tom ikk?, men den lille
> > RePlace-procedure fungerer nu alligevel fint...
> >
> > Sub session_onend
> > application.lock
> > application("Userlist") = Replace(application("Userlist"), " $" &
> > session("userName") & "$", "")
> > application.unlock
> > End Sub
>
> nej ... det kan jeg ikke forklare ...
>

Fra "Global.asa" referencen:

" The Session_OnEnd event occurs when a session is abandoned or times out. Of
the server built-in objects, only the Application, Server, and Session objects
are available. "
OG

"You cannot call the MapPath method in the Session_OnEnd script."

Hvilket nok er forklaringen på hvorfor han ikke kan få hul til sin AccesBase
.....

Rune




Chrisser (02-09-2002)
Kommentar
Fra : Chrisser


Dato : 02-09-02 08:41


"Jesper Stocholm" <spam200209@stocholm.dk> skrev i en meddelelse
news:akspok$4vm$1@sunsite.dk...
>
> Jeg tror, at du vil få et problem med dette. Når event'en Session_OnEnd
> afvikles, så er din bruges session jo netop forbi - og derfor vil hendes
> session-variabler også være væk. Derfor giver det ikke mening at prøve at
> overføre din session-variabel til din SQL-sætning ... da den jo netop er
væk.
>
> Til andre: sig lige til, hvis jeg tager fejl. Jeg mener blot, at det har
> været oppe før, og konklusionen var, at ud fra et design-mæssigt synspunkt
i
> ASP, så kan det her ønskede ikke lade sig gøre.
>
> /Jesper Stocholm
> http://stocholm.dk
>

I min ASP bog står der at man i Session_OnEnd "måske gerne vil gemme
midlertidige sessionvariabler ned i en database eller regulere
Application-level", - desværre er der ingen eksempler på der første !
- men det har lige været oppe, der ver en der heller ikke kunne få det til
at fungere....så jeg ved snart ikke
MVH
Chrisser



Adrian Hjelmslund (03-09-2002)
Kommentar
Fra : Adrian Hjelmslund


Dato : 03-09-02 00:44

Virker din code i session_onstart ?
Mvh
Adrian Hjelmslund

"Steen" <nospam@nospam.dk> wrote in message
news:3d712d36$0$160$edfadb0f@dspool01.news.tele.dk...
> Hej NG
>
> Jeg vil gerne skrive noget til en Access2000-database, når en session
> afsluttes. Denne fremgangsmåde VIRKER i selve asp-filen:
>
> -----
> set conn = Server.CreateObject("ADODB.Connection")
> dsn = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pw=;"
> dsn = dsn & "DBQ=" & Server.MapPath ("../../access/database.mdb")
> conn.open dsn
>
> sql = "UPDATE brugere SET login=false WHERE brugernavn='" &
> session("brugernavn") &"'"
> set rs = conn.execute(sql)
>
> session.abandon
> -----
>
> Men nu vil jeg gerne have, at brugeren registreres som logget ud, selv når
> han ikke logger ud manuelt, men når sessionen udløber. Derfor satte jeg
> følgende ind i global.asa:
>
> -----
> sub Session_OnEnd
>
> set conn = Server.CreateObject("ADODB.Connection")
> dsn = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pw=;"
> dsn = dsn & "DBQ=" & Server.MapPath ("../../access/database.mdb")
> conn.open dsn
>
> sql = "UPDATE brugere SET login=false WHERE brugernavn='" &
> session("brugernavn") &"'"
> set rs = conn.execute(sql)
> end sub
> -----
>
> ...men det virkede ikke. Jeg gætter på, at det er fordi min asp-fil ikke
> ligger i samme katalog som global.asa. Derfor har jeg prøvet med både
>
> Server.MapPath ("underkatalog/access/database.mdb") og
> Server.MapPath ("D:/inetpub/wwwroot/underkatalog/access/database.mdb")
>
> men ingen af delene virker. Hvor går det galt?
>
> Mvh Steen
>
>



Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408841
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste