Jag har ett problem som gör mig galen snart. Håller på att sätta upp en liten enkel Access-databas som ska hålla reda på hur många webbesökare mitt företag får genom de banners vi har på ett par olika sajter. Klick på någon banner kommer att skicka besökaren till en asp-sida där ett unikt id i querystringen håller reda på varifrån de kommer och loggar dem per datum, sen redirectas besökarna till webbsajtens huvudsida. Allt är väldigt enkelt upplagt. I vilken metod ligger denna asp kod? Jag tror att hela metoden körs två gånger när du öppnar ett nytt fönster...beroende på var denna kod ligger... Denna kod är allt jag använder - plus lite html som skickar besökaren vidare till huvudsidan sedan, men det gör ju varken från eller till. Jag fattar inte vad det är som händer... Du har inte svarat på min fråga om i vilken metod denna kod ligger... Skulle du kunna visa all kod, inklusive html...? Sorry, mitt misstag. Så här ser det ut helt och hållet. Testa att ta bort denna raden för att se om det gör någon skillnad: Nix, det gör ingen skillnad. Jag har testkört utan en aktiv meta refresh, och resultatet blir som jag beskrev ovan. Fattar ingenting.... :-/ Testade med ett rs.edit, men fick det inte att fungera alls (beror säkert på mina ibland något bristande kunskaper och inget annat), men ovanstående kod fungerar ju faktikst.... bortsett från den där lilla irriterande egenskapen att det räknar upp med TVÅ i stället för ETT. Det hjälper inte om du kör en UPDATE direkt istället. Låter långsökt men... typ som detta, länge sedan jag körde asp men jag tror det är rätt syntax. Nix, det hjälper inte, resultatet blir lika som ovan. Suck. Jag blir knäpp på det här snart!! ;-/ Tycker att allt ser så rätt ut, men lik förbaskat så fungerar det inte som det ska. Knepigt det där Visst är det knepigt. Ha, jag tror jag har löst problemet!!!Uppdatera recordset - blir dubbelt!
Asp-koden ser ut så här:
Dim BannerID, DagensDatum
BannerID = Request.QueryString("sitebanner_id")
DagensDatum = Date
Set strConnect = Server.CreateObject("ADODB.Connection")
strConnect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("adcounter.mdb") & ";"
Set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT " & BannerID & " FROM statistik WHERE datum = #" & DagensDatum & "# "
rs.Open strSQL, strConnect, 3, 3
rs(BannerID) = rs(BannerID) + 1
rs.update
rs.close()
Set rs = Nothing
strConnect.Close()
Set strConnect = Nothing
Ni ser att jag tar värdet för rätt banner och rätt datum och plussar på med ETT. Problemet jag har är att värdet uppdateras med TVÅ i stället, och jag begriper inte varför! Eller rättare sagt – när man öppnar ett nytt webbläsarfönster och klistrar in rätt url för att testköra så räknas värdet upp med TVÅ, men om man gör reload på sidan i samma fönster så uppdateras värdet med ETT som det var tänkt. Men så fort man öppnar ett nytt fönster så blir det plus TVÅ igen. Och nya fönster lär det ju bli i verkligheten sedan…
Kan någon vara så snäll och förklara varför det blir som det blir, och vad jag ska ändra för att få det att fungera som jag vill. Det känns som om det borde finnas en *väldigt* enkel förklaring… jag bara inte hittar den.
Tacksam för hjälp! Sv: Uppdatera recordset - blir dubbelt!
Sv:Uppdatera recordset - blir dubbelt!
Sv: Uppdatera recordset - blir dubbelt!
Sv:Uppdatera recordset - blir dubbelt!
<code>
<%
Dim BannerID, DagensDatum
BannerID = Request.QueryString("sitebanner_id")
DagensDatum = Date
Set strConnect = Server.CreateObject("ADODB.Connection")
strConnect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("adcounter.mdb") & ";User Id=admin;pwd=;"
Set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT " & BannerID & " FROM statistik WHERE datum = #" & DagensDatum & "# "
rs.Open strSQL, strConnect, 3, 3
rs(BannerID) = rs(BannerID) + 1
rs.update
rs.close()
Set rs = Nothing
strConnect.Close()
Set strConnect = Nothing
%>
<html>
<head><title>titel</title>
<META http-equiv="refresh" content="0; URL=http://www.blablabla.se/">
</head>
<body>
</body>
</html>
</code>Sv: Uppdatera recordset - blir dubbelt!
<META http-equiv="refresh" content="0; URL=http://www.blablabla.se/">
Det kan mycket möjligt vara så att sidan först uppdaterar sitt eget innehåll innan man skickas vidare...Sv:Uppdatera recordset - blir dubbelt!
Sv:Uppdatera recordset - blir dubbelt!
/mSv: Uppdatera recordset - blir dubbelt!
strSQL = "UPDATE statistik SET bannerID = bannerID + 1 WHERE datum = #" DagensDatum & "#"
strConnect.execute strSQLSv:Uppdatera recordset - blir dubbelt!
/mSv: Uppdatera recordset - blir dubbelt!
Du skriver att: Men så fort man öppnar ett nytt fönster så blir det plus TVÅ igen.
På vilket sätt öppnas det nya fönstret? Genom att klicka på en länk eller hur ser det ut.
Har du den koden så vi kan få titta på den? Fönstret kanske anropas två gånger eller nåt? Det ser ju inte ut som om det är fel på det aktuella fönstret har vi nog konstaterat alla tre...Sv:Uppdatera recordset - blir dubbelt!
Meningen med det hela är ju att mäta klick på banners som vi har på olika portaler o dyl. Jag hade tänkt att be portalerna länka vår banner till www.blablabla.se/adcounter.asp?sitebanner_id=SajtensNamn, där ”SajtensNamn” är unikt. Denna länk kommer att öppnas i ett nytt fönster, det är väl mer eller mindre standard när besökare länkas ut från en webbsajt av det slaget. Koden i adcounter.asp finns ovan, och den läser av värdet för ”sitebanner_id”, öppnar rätt fält i databasen och räknar upp värdet med ett. Eller två, som det ju faktiskt gör just nu. Inga konstigheter alls.
När jag testkör så öppnar jag nytt Explorerfönster och klistrar in länken (lika med det verkliga scenariot). Då uppdateras databasen med TVÅ. Om jag sen kör reload på sidan uppdateras databasen med ETT. Skillnaden är ju faktiskt bara att det är ett nytt fönster. Märkligt…
Jag har själv funderat på om eventuellt cursortypen kan spela någon roll i den här historien, men då borde det ju inte vara någon skillnad på om det är en reload eller ej som genererar en uppdatering av databasen. Nån ide om detta? Annars är det ju bara själva accessdatabasen kvar som felkälla, men jag har aldrig råkat ut för något liknande förut och är inte någon stjärna på access direkt, så jag vet inte hur jag ska börja felsöka heller. Suck. Jag trodde det här skulle vara en lätt sak att få ihop…. :-(
Mycket tacksam för all hjälp hittills!
/mSv: Uppdatera recordset - blir dubbelt!
När jag skrev svaret till dig Jenny började jag fundera på om det skulle göra någon skillnad om det faktiskt var en riktig länkning som genererade ett nytt Explorerfönster, inte ”bara” en inklistrad länk som när jag testkört. Så jag lade upp en sida med länkningar till alla olika ”sitebanner_id”, klickade på varje länk, nya fönster öpnnades och voila! Databasen uppdaterades med ETT och inget annat!! Både vid nya fönster och vid reloads. Alltså måste det vara någon liten skillnad på hur fönstret genererades!? Låter ohyggligt bakvänt i mina öron, men för all del, jag har ju faktiskt testkört i Explorer… :-)
Blev också nyfiken på om det var någon skillnad mellan webbläsare, och mycket riktigt: med Netscape, Opera och Firefox fungerade min asp-kod precis som det var tänkt, oavsett om det var en riktig länkning eller inklistrad länk i nytt fönster. Med Explorer däremot får man de problem jag har beskrivit. Ytterligare en anledning till att göra sig av med Explorer då…. hade jag använt någon annan webbläsare så hade det inte varit några problem över huvud taget ju.
I alla fall, problemet verkar vara löst. Jag tror jag kan leva med att inte veta hur och varför det blev som det blev i Explorer. Tack för hjälpen ändå!
/m