04. februar 2002 - 20:17Der er
13 kommentarer og 1 løsning
Vælge på baggrund af udregning
Jeg har en Accessdatabase, der holder styr på, hvor mange gange, der er klikket på mine sider på min hjemmeside. Hvert klik bliver registreret. Nu er alle siderne imidlertid ikke uploadet på samme tid, så nogen sider har større mulighed for at få klik. Da jeg gerne vil have en liste over de mest populære sider, vil jeg sortere siderne på baggrund af en udregning i min sql-sætning. I stedet for at sortere efter totale antal klik, skal den sortere efter klik pr. dag.
Jeg har forsøgt med flg. sql-variationer uden held:
'SQL = "SELECT top 5 * FROM tblHitCount where page <> '/index.asp' and page <> '/tricks/default.asp' Order by [Reset_Counter] / DATEDIFF(dd, [Reset_Date], " &date& ") DESC" SQL = "SELECT top 5 * FROM tblHitCount where page <> '/index.asp' and page <> '/tricks/default.asp' Order by [Reset_Counter] / ((Fix("&date&") - Fix([Reset_Date]))+1) DESC" SQL = "SELECT top 5 page,reset_counter,reset_Date, "&date&"-[reset_date]+1 AS dage, [reset_counter]/[dage] AS ugehits FROM tblHitCount where page <> '/index.asp' and page <> '/tricks/default.asp' Order by [Ugehits] DESC"
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
prøv med ændringer: DATEDIFF("d",... og &now()& altså med kun eet d OG i anførselstegn (i ASP bliver det så DATEDIFF(""d"", ... og now() istedetfor date
SQL = "SELECT top 5 * FROM tblHitCount where page <> '/index.asp' and page <> '/tricks/default.asp' Order by [Reset_Counter] / DATEDIFF(""d"", [Reset_Date], "&now&") DESC"
får jeg flg. fejlmeddelelse:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '[Reset_Counter] / DATEDIFF([d], [Reset_Date], 2/8/2002 8:19:17 AM)'.
Hvis jeg bruger date i stedet for now får jeg følg.:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Stadig: [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '[Reset_Counter] / DATEDIFF([d], [Reset_Date], 2/8/2002 9:33:56 AM)'.
Med flg.: SQL = "SELECT top 5 * FROM tblHitCount where page <> '/index.asp' and page <> '/tricks/default.asp' Order by [Reset_Counter] / DATEDIFF(""d"", [Reset_Date], "&now()&") DESC"
Altså jeg kan godt uden for sql-sætningen lave udregningen med flg. kode: dato = rs("Reset_Date") forskel= datediff("ww", dato, date) if forskel = 0 then forskel = 1 end if counter = rs("Reset_Counter") ugehits = counter/forskel ugehits = FormatNumber(ugehits,0)
- og det virker heller ikke, hvis SQL = "SELECT top 5 * FROM tblHitCount Order by DATEDIFF(""ww"", [Reset_Date], "&date()&")"
- den kan godt SQL = "SELECT top 5 * FROM tblHitCount Order by [Reset_Date]"
Så jeg går ud fra, at Reset_Date er et gyldigt date-felt (det er det i hvert fald stillet til i databasen).
"ORDER BY [reset_counter]/DateDiff("d",[reset_date],Date());" virker i min access.
hvis det ikke vil, så er det "ORDER BY [reset_counter]/DateDiff("d";[reset_date];Date());"
afhængig af sprogversion af access kan der være forskelle i syntaksen, så der er "," istedetfor ";" til adskillelse af parametre i funktioner (her: DATEDIFF). kan det være dette?
Hvis jeg skal teste drilagtige SQL'er, så laver jeg dem i en query i access, og klipper SQL'en herfra.
nu er jeg i meterdyb sne i Norge, men kigger lige lidt mail, og her er næste fejl-findings-step: EFTER SQL-sætningen, så skriv "Response.write SQL" og evt. en linie mere "Response.end", og klip resultatet hertil i en kommentar :-) Måske ser du selv noget, som ikke er, som det burde være...
Prøv følgende: Start Access Klik "Forespørgsel" DobbeltKlik Opret en forespørgsel i designvisning" Klik "Luk" Klik på "SQL" under menuen "filer" Erstat "Select;" med følgende 3 linier:
SELECT TOP 15 * FROM tblHitCount ORDER BY [reset_counter]/DateDiff("d",[reset_date],Date());
Klik på det røde udråbstegn i toolbaren Se resultat - er der de 15 mest besøgte sider? (jeg får det stadig ikke til IKKE at virke...)
Jeg kan godt få det til at virke i ASP nu - tak for det. Jeg kan imidlertid stadig ikke få min SQL i ASP til at makke ret. Jeg har dog løst problemet ved bare at vælge fra forspørgslen lavet i Access-databasen, så det hele fungerer som det skal nu. Tak for hjælpen - og tålmodigheden.
Synes godt om
Ny brugerNybegynder
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.