|
| 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
>
>
| |
|
|