Tjenare alla ASP Experter!!! Hej Ingemar, Hej Pelle och tack för ditt svar: Vad använder du detta till? Verkar inte fungera??? Jag testade att sätta en 4 på fältet Manad för att se om den nollställde in och out fälterna men det gjorde den inte träffarna in och ut stod fortfarande kvar Vad skall fältet vara då Tal eller Datum/tid just nu är den Tal och det står en 4 i databasen just nu i fältet Manad... Detta ska fungera... Snälla Ingemar, använd skiljetecken så att det går att läsa vad du skriver. Här är en bit av koden för topplistan: Jag gjorde snabbt en testdatabas med samma fält och namn som du har och körde frågan jag skrev åt dig, vilket fungerade fint! Jaså, du använder Access... Om du hade visat något felmeddelande så hade det varit uppenbart mycket tidigare... Det är helt onödigt att göra en massa kontroller om något är något annars är det något annat ;) Fungerade inte heller satte det nu så här Hur ser din "nollställningskod" ut nu då? Felet är att det står "Manad" istället för "month"... Så fick det att fungera det var som du sade Tomas funkade kanon fint > Felet är att det står "Manad" istället för "month"... Göran, Det var jag som ändrade till Manad med tanke på functionen month(now()) så därför andrade jag till manad men det står längre upp att jag ändrade > vad säger att han vill addera på ett i både In och Out samtidigt?Databas och datum
Det är så att jag vill få en databas att nollställas automatiskt varje ny månad...
Jag har testat lite olika sätt att göra det på men kommer inte på hur det skall göras korrekt
jag kan göra det manuellt via detta
SQL = "UPDATE topplista SET [In] = 0, [Out] = 0"
Jag har skapat en kolumn som heter month som är tänkt att den skall spara månadens nummer eller nått åt det hållet och när det är en ny månad skall kolumnerna In och Out sättas in en nolla igen det jag undrar bland annat är skall den vara tal eller datum/tid i kolumnerna och hur man får det att kolla om det är en ny månad
just nu är den tal och jag har försökt med följande men jag är inte säker på om det är korrekt
If month <> month(now) Then
SQL = "UPDATE topplista SET [In] = 0, [Out] = 0, [month] = month(now)"
End If
eller är detta mer korrekt på SQL frågan???
'SQL = "UPDATE topplista SET [In] = 0, [Out] = 0, [month] = < #"&DateAdd("m",-1,Now)&"#")
Jag vet inte riktigt hur jag skall få det att kötas automatiskt som sagt var så nu vänder jag mig till er här ute som kan komma med ett bra exempel på hur jag skall fixa detta vore tacksam om n i har tid att hjälpa mig med denna fråga
Med vänliga hälsningar Ingemar ASv: Databas och datum
Du säger att du vill nollställa ett register då det är ny månad. Eftersom du troligen inte kan bygga något program som gör det just när du vill så föreslår jag att du i din tabell lagrar både datum och resultat.
På det sättet kan du hålla reda på tidigare resultat, tidigare månader och även slippa oroa dig för att du inte nollställer i tid.
Mitt förslag är således att du lagrar mer transaktioner, en för varje månad istället för att rensa tidigare. Sen kan du givetvis gå in manuellt och göra en städning säg varje kvartal om du har dåligt med plats i databasen.
Hoppas detta resonemang hjälper digSv:Databas och datum
Jag har dessa fält i databasen just nu:
id, Email, Url, Banner, Sidnamn, Info, In, Out, Datum, Manad
Manad är det tänkt att där skall man spara månadens nummer t. ex 5.
Det måste gå på något sätt om man kollar vilken månad det är just nu om det är månad 5 och i databasen kolla om det finns en 5 i fältet Manad om det inte gör det så skall min SQL fråga köras och nollställa In och Out fälterna och samtidigt sätta in månadens nummer och sedan avsluta det hela
Tycker att detta borde fungera men jag vet bara inte hur det skall se ut
Bytte namn på fältet Month till Manad med tanke på att det month functionenSv: Databas och datum
Har du flera poster i tabllen? Din fråga uppdaterar ju alla poster som finns i tabellen.
Är det helt befängt att spara datat, som Pelle föreslog?
Ifall du nödvändigtvis vill kasta bort datat så kan du göra det när du uppdaterar In och Out, vad du nu gör med dem. Typ:lngMonth = Month(Date())
SQL = "UPDATE topplista " & _
"SET [In] = (case when Manad = " & lngMonth & " then [In] else 0 end) + 1, " & _
"[Out] = (case when Manad = " & lngMonth & " then [Out] else 0 end) + 1, " & _
"Manad = " & lngMonth
Sv:Databas och datum
Humm jag kommer ingen vart på detta så jag får väl ge mig antar jag tack alla som har svarat på mina frågor...
Jag får fortsätta att nollställa den manuellt via min admin sida (TYVÄR)
MVH Ingemar ASv:Databas och datum
och det är ju månad 5 nu så in och ut skall nollställas samtidigt som det skall in en 5 i fältet ManadSv:Databas och datum
Jag testade också med att sätta följande i din kod
Month(Date())
till
Month(Now())
men det blev ingen skillnad
Kan jag kanske skicka koden till dig så får du se hur den ser ut via din email adress om du vill ge ut den och om du vill hjälpa mig med att kolla på det så du kan se vad jag gör för fel???Sv: Databas och datum
<code>
UPDATE topplista SET [In] = 0, [Out] = 0, [month] = MONTH(NOW()) WHERE [month] <> MONTH(NOW())
</code>
/ThomasSv: Databas och datum
Ifall du enbart vill lagra månaden så är det lämligt att datatypen är ett tal.
Kan du inte klistra in lite av din kod här?Sv:Databas och datum
<code>
<%
Set RecSet = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB
'tidigare test med att nollställa databasen olika tester ligger här tillfälligt
'If Manad <> Month(Date()) Then
'SQL = "UPDATE topplista SET [In] = 0, [Out] = 0, [Manad] = Month(Date())"
'SQL = "UPDATE topplista SET [In] = 0, [Out] = 0, [Manad] = < #"&DateAdd("m",-1,Now)&"#")"
'SQL = "UPDATE topplista SET [In] = 0, [Uot] = 0, [Manad] = < #"&DateAdd("d",-29,Now)&"#")"
'SQL = "UPDATE topplista SET [In] = 0, [Out] = 0, [month] = MONTH(NOW()) WHERE [month] <> MONTH(NOW())"
'End If
Const toppPerSida = 30
If Request.QueryString("page") = "" then
page = 1
Else
page = Request.QueryString("page")
End If
RecSet.CursorLocation = 3
RecSet.CacheSize = toppPerSida
SQL = "Select * From topplista Order By [In] Desc"
RecSet.Open SQL, Conn, 1, 2
lngMonth = Month(Date())
SQL "UPDATE topplista " & _
"SET [In] = (case when Manad = " & lngMonth & " then [In] else 0 end) + 1, " & _
"[Out] = (case when Manad = " & lngMonth & " then [Out] else 0 end) + 1, " & _
"Manad = " & lngMonth
Conn.Execute(SQL)
%>
</code>
Resterande ligger i en settings fil där det står följande
<code>
DB = Server.MapPath("databasen/topplista.mdb") 'Databasens sökväg
</code>
om du vill ha mer av koden så säg bara till Göran.
Och till tomas så har jag redan testat det du gav mig kolla i kodsnutten här så ser du vad jag har testat medSv: Databas och datum
Så, då är frågan, vad är de olika fälten av för datatyp?
In och Out antar jag är Tal, Month då?
<code>
Set RecSet = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB
SQL = "UPDATE topplista SET [In] = 0, [Out] = 0, [month] = MONTH(NOW()) WHERE [month] <> MONTH(NOW())"
Conn.Execute(SQL)
.
.
.
</code>
Testa köra som ovan...
Och se till att In, Out och month fälten är av typen Tal...
/ThomasSv: Databas och datum
Access stöder inte case. Du får använda iif() istället:
SQL "UPDATE topplista " & _
"SET [In] = iif(Manad = " & lngMonth & ",[In],0) + 1, " & _
"[Out] = iif(Manad = " & lngMonth & ",[Out],0) + 1, " & _
"Manad = " & lngMonthSv:Databas och datum
Det min version gör är att den först hämtar ut alla som inte har month = 5 till exempel, och uppdaterar dem så att den lägger In = 0, Out = 0 och month blir då aktuell månad...
/ThomasSv:Databas och datum
<code>
lngMonth = Month(Date())
SQL "UPDATE topplista " & _
"SET [In] = iif(Manad = " & lngMonth & ",[In],0) + 1, " & _
"[Out] = iif(Manad = " & lngMonth & ",[Out],0) + 1, " & _
"Manad = " & lngMonth
</code>
Manad, In och Out är tal
Sedan hade du iif skall det inte vara if???Sv: Databas och datum
Har du testat exakt så som jag skrev?
/ThomasSv: Databas och datum
<code>
lngMonth = Month(Date())
SQL "UPDATE topplista " & _
"SET [In] = iif(month= " & lngMonth & ",[In],0) + 1, " & _
"[Out] = iif(month= " & lngMonth & ",[Out],0) + 1, " & _
"month = " & lngMonth
</code>
Fördelen med denna kod jämfört med min är att den även adderar på in och out med ett varje varv, om det är det du vill åstadkomma...
När ska du uppdatera dina fält?
/ThomasSv: Databas och datum
har nu fixat så att den sätter in månadens nummer när folk reggar sig på sidan också :-)
Tack skall ni ha Både Tomas och Göran och speciellt tack för att ni stod ut med alla mina frågor nu har jag även lärt mig lite på kuppen också..
Åter igen tack
MVH Ingemar AxelssonSv:Databas och datum
Hm... Men fältet hette ju Manad:
"Jag har dessa fält i databasen just nu:
id, Email, Url, Banner, Sidnamn, Info, In, Out, Datum, Manad"
Döpte du om fältet till Month igen, Ingemar?Sv: Databas och datum
i första inlägget säger han att kolumnen heter "month", så om Ingemar skrivit Manad är det nog fel...
Dessutom, ditt exempel adderar på ett varje körning, vad säger att han vill addera på ett i både In och Out samtidigt?
De kommer ju då att alltid vara samma värde, vilket är lite onödigt...
/ThomasSv:Databas och datum
MVH Ingemar ASv:Databas och datum
Vad är det som säger att han ska använda koden rakt av utan att modifiera den efter vad han behöver göra?