webForumDet fria alternativet

Sortera efter månad

ASP

31 svar · 658 visningar · startad av hallmert

Medlem sedan dec. 2004182 inlägg
Frågan#1

Hallå där!

Sitter och håller på med en personlig webblogg. Nu hade jag tänk att på sidan ha en liten hörna med ett "arkiv". Där hade jag tänkt mig en uppstapling, typ:
-------------------------------------
Inlägg denna månaden:
6 december - Hej hopp
4 december - Blää
1 december - Greger är söt

Tidigare månader:
November 2004
Oktober 2004
September 2004
-------------------------------------

Hur gör jag för att skriva ut alla inläggen den månaden som det är nu? Dvs. alla inläggen skrivna i december.

Och fråga två, hur gör jag för att göra länkar till arkiv där de tre senaste månadernas inlägg finns. I November-sidan ska alla inlägg från november ligga etc. Ni förstår nog hur jag menar.

Vore jättetacksam för svar.

Datumen som skrivs in i databasen blir så som det blir med MS Access, har ett fält som heter "datum", och den använder "Datum/Tid" som typ i inställningarna i Access.

Tack på förhand!

Medlem sedan dec. 200012 464 inlägg
#2

Alla inlägg från nuvarande månad

select * 
from inlägg
where month(Datum) = month(date())
and year(Datum) = year(date())

Tre senaste månaderna

select  top 3 month(datum) m,year(datum) y
from inlägg
where (year(datum) = year(date()) 
and month(datum) < month(date()))
or year(datum) < year(date())
group by month(datum),year(datum)
order by year(datum)desc,month(datum) desc
Medlem sedan dec. 2004182 inlägg
#3

LarsG skrev:

Tre senaste månaderna

select  top 3 month(datum) m,year(datum) y
from inlägg
where (year(datum) = year(date()) 
and month(datum) < month(date()))
or year(datum) < year(date())
group by month(datum),year(datum)
order by year(datum)desc,month(datum) desc

Koden för aktuella månaden fungerade, men detta gick inte. Jag får följande fel:

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'month(datum) m'.
/sidor/blog/Default.asp, line 14

Förstår inte riktigt vad som är fel! :-/

Tack på förhand!
/Patrik

Medlem sedan nov. 20017 144 inlägg
#4

mellanrum här: order by year(datum)░desc, month(datum) desc

Medlem sedan dec. 2004182 inlägg
#5

Tack Jesper!

Medlem sedan dec. 2004182 inlägg
#6

Jag förstår dock inte hur jag ska göra!

<%
Set MinCon = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")

MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/db.mdb")
SQL = select top 3 month(datum) m,year(datum) y from blogg where (year(datum) = year(date()) and month(datum) < month(date())) or year(datum) < year(date()) group by month(datum),year(datum) order by year(datum) desc,month(datum) desc"
rs.Open SQL, MinCon

Do While Not rs.EOF
%>

<%
rs.MoveNext
Loop
%>

Det här är kod jag har. Hur ska jag nu göra för att få fram dem i en lista? Hur ska jag skriva ut det?
Ska jag använda <% = rs("datum") %> ?

Tack! /Patrik

Medlem sedan juni 200032 967 inlägg
#7

Till att börja med: du har glömt ett inledande citationstecken när du skapar variabeln SQL.

mvh

Medlem sedan dec. 2004182 inlägg
#8

Såg det, och har löst det. Hur ska jag nu skriva ut, med RS-koden jag skrev? Jag provade det och fick följande fel:

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'month(datum) m'.
/sidor/blog/Default.asp, line 15

Medlem sedan juni 200032 967 inlägg
#9

Innan vi kan skriva ut grejerna så måste vi se till att SQL-frågan fungerar. Felmeddelandet får du eftersom det är något fel på SQL-frågan.

Prova att byta ut dina alias m och y i SQL-frågan till något annat.

Medlem sedan nov. 20017 144 inlägg
#10

Till att börja med: Använd [kod]-taggar

Medlem sedan dec. 2004182 inlägg
#11

Sorry! Är hyffsat ny här :)

Har du något förslag på vad jag ska byta ut det till då?

Medlem sedan nov. 20017 144 inlägg
#12

Hur ska jag skriva ut det?

Do While Not rs.EOF
Response.Write rs(0) & " "& rs(1)
rs.MoveNext
Medlem sedan juni 200032 967 inlägg
#13

Tja, vad som helst annat. Typ foo och bar? Jag tycker nämligen att SQL-frågan ser rätt ut, så jag förstår inte riktigt vad som skulle kunna vara fel annars.

mvh

Medlem sedan nov. 20017 144 inlägg
#14

Du har väl inget som ligger i variabeln "datum".

Dim datum
datum = now()
'eller
datum = "2004-01-14"
'innan sql-satsen
Medlem sedan dec. 2004182 inlägg
#15
<%
	Set MinCon = Server.CreateObject("ADODB.Connection")
	Set rs = Server.CreateObject("ADODB.RecordSet")
	
	MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/db.mdb")
	datum = now()
	SQL = "select top 3 month(datum) m,year(datum) y from blogg where (year(datum) = year(date()) and month(datum) < month(date())) or year(datum) < year(date()) group by month(datum),year(datum) order by year(datum) desc,month(datum) desc"
	rs.Open SQL, MinCon
	
	Do While Not rs.EOF
	Response.Write rs(0) & " "& rs(1)
	Loop
%>

Såhär ser det ut nu, och felmeddelandet blir:

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'month(datum) m'.
/sidor/blog/Default.asp, line 16

Medlem sedan juni 200032 967 inlägg
#16

Och med aliasbyte?

Medlem sedan dec. 2004182 inlägg
#17

Såhär:

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'month(datum) foo'.
/sidor/blog/Default.asp, line 17

Medlem sedan juni 200032 967 inlägg
#18

Könstigt. Om du är sugen kan du zippa ihop databasen och skicka den till mig (anders@cyber.nu) så kan jag testa och se om jag kan få ihop något. :)

Medlem sedan dec. 2004182 inlägg
#19

Mailat och klart, tack på förhand Anders! :)

Medlem sedan juni 200032 967 inlägg
#20

Hej!

Testat och kört. Det verkar trots allt vara alias:en det är fel på. Du kan ju testa att ta bort dem helt. När du anger index så behöver du ju inte några namn. Alltså:

<%
	Set MinCon = Server.CreateObject("ADODB.Connection")
	Set rs = Server.CreateObject("ADODB.RecordSet")
	
	MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/db.mdb")
	datum = now()
	SQL = "select top 3 month(datum), year(datum) from blogg where (year(datum) = year(date()) and month(datum) < month(date())) or year(datum) < year(date()) group by month(datum),year(datum) order by year(datum) desc,month(datum) desc"
	rs.Open SQL, MinCon
	
	Do While Not rs.EOF
	Response.Write rs(0) & " "& rs(1)
	Loop
%>

Om du vill skriva ut månadens namn i stället för månadsnumret kan du i ASP-koden använda funktionen MonthName().

Mvh

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)