webForumDet fria alternativet

icke fungerande nyhetsarkiv

ASP

12 svar · 253 visningar · startad av CatZ

Medlem sedan jan. 20022 440 inlägg
Frågan#1

Det skriver bara ut senaste månaden och inte alla senaste som jag vill..... här kommer iaf koden

		SQL = "SELECT DISTINCT NrDatum FROM Nyheter"_
		& " WHERE NOT ((datepart('m', NrDatum) = " & datepart("m", date) & ")"_
		& " AND (datepart('yyyy', NrDatum) = " & datepart("yyyy", date) &"))" _
		& " ORDER BY NrDatum DESC"
		set rs = dbCom.Execute(SQL)	

		Dim Ar, Manad
		Ar = datepart("yyyy", rs("NrDatum"))
		Manad = datepart("m", rs("NrDatum"))
	
		xTmp ="" 
		Do while not rs.EOF 
		If xTmp <> Manad Then 
			response.write "<table width=100% border=0 cellpadding=3 cellspacing=0 class=table>" _
			& "<tr class=td2><td>" _
			& "<a href=nyheter.asp?ar=" & Ar & "&manad=" & Manad & ">" _
			& getMonthLong(datepart("m", rs("NrDatum"))) & ", "_
			& datepart("yyyy", rs("NrDatum")) & "</a>" _
			& "</td></tr>"
			xTmp = Manad 
		End If 
		rs.MoveNext 
		Loop

Någon som fattar vad som är fel?

Medlem sedan juni 20019 519 inlägg
#2

redigerad:
Glöm det jag sa :e

Medlem sedan dec. 200012 464 inlägg
#3
Ar = datepart("yyyy", rs("NrDatum"))
Manad = datepart("m", rs("NrDatum"))

lägg dessa innaför loopen.

Medlem sedan jan. 20022 440 inlägg
#4

Tack LarsG, nu har jag ändrat om lite men nu skriver den ut Augusti månad två gånger...? Såhär ser koden ut nu:

		SQL = "SELECT DISTINCT NrDatum FROM Nyheter"_
		& " WHERE NOT ((datepart('m', NrDatum) = " & datepart("m", date) & ")"_
		& " AND (datepart('yyyy', NrDatum) = " & datepart("yyyy", date) &"))" _
		& " ORDER BY NrDatum DESC"
		set rs = dbCom.Execute(SQL)

		Do while not rs.EOF 
			xTmp =""
			Ar = datepart("yyyy", rs("NrDatum"))
			Manad = datepart("m", rs("NrDatum"))
		If xTmp <> Manad Then 
			Response.Write "<a href=nyheter.asp?ar=" & Ar & "&manad=" & Manad & ">" _
			& getMonthLong(datepart("m", rs("NrDatum"))) & ", "_
			& datepart("yyyy", rs("NrDatum")) & "</a><br>"
			xTmp = Manad 
		End If 
		
		rs.MoveNext 
		Loop
Medlem sedan dec. 200012 464 inlägg
#5
[b]xTmp =""[/b]

Do while not rs.EOF 
			
			Ar = datepart("yyyy", rs("NrDatum"))
			Manad = datepart("m", rs("NrDatum"))
		If xTmp <> Manad Then 
			Response.Write "<a href=nyheter.asp?ar=" & Ar & "&manad=" & Manad & ">" _
			& getMonthLong(datepart("m", rs("NrDatum"))) & ", "_
			& datepart("yyyy", rs("NrDatum")) & "</a><br>"
			xTmp = Manad 
		End If 
		
		rs.MoveNext 
		Loop

Kan du inte göra

select distinct datepart('m',nrdatum),datepart('y',nrdatum)

så slipper du den där hanteringen?

Medlem sedan jan. 20022 440 inlägg
#6

Det kan jag säkert, men hur gör jag då?

När jag försöker mig på ditt exempel så kan jag inte komma åt några rs("fält") poster...

/red, skrev fel inlägg i förra posten, jag får samma problem med xTmp utanför loopen.

Medlem sedan dec. 200012 464 inlägg
#7
select distinct datepart('m',nrdatum)as m,datepart('y',nrdatum) as y

så kan du använda rs("m") och rs("y"). Det går också med rs(0) och rs(1)

Medlem sedan jan. 20022 440 inlägg
#8

aha när jag väljer select distinct måste jag skriva alla värden, så då kan jag göra

select distinct datepart('m',nrdatum)as m,datepart('y',nrdatum) as y, NrDatum

Om jag behöver använda hela datumet oxo ?

Medlem sedan dec. 200012 464 inlägg
#9
select distinct datepart('m',nrdatum)as m,datepart('y',nrdatum) as y, NrDatum

om du gör så så har du ingen nytta av distinct (eftersom den gäller för alla kolumner) så att det hjälper inte.

Jag föreslog att du skulle kunna använda distinct just på grund av att du bara använder år och månad i din ASP-kod.

Medlem sedan jan. 20022 440 inlägg
#10

Jadå det kan jag också, var mest nyfiken på om det gick att göra så som jag frågade. Mitt problem är nu då att jag inte får ORDER BY delen att fungera. Skulle villja göra ORDER BY y DESC, m DESC men får då

Feltyp:
Microsoft JET Database Engine (0x80004005)
ORDER BY-instruktionen (y) stämmer inte med DISTINCT.

& " ORDER BY y DESC, m DESC"
Medlem sedan dec. 200012 464 inlägg
#11

Det där är lite speciellt i Jet SQL.

Du får skriva

order by 2 desc, 1 desc

2:an står för andra kolumnen i select-listan dvs året.

I stort sett alla andra DBMS tillåter att man skriver som du gjorde.

Medlem sedan jan. 20022 440 inlägg
#12

*suck* Någon gång i framtiden ska jag byta till SQL istället... har inte riktigt råd dock.

Tack för hjälpen LarsG nu fungerar det utmärkt!

Medlem sedan juni 200032 967 inlägg
#13

*suck* Någon gång i framtiden ska jag byta till SQL istället... har inte riktigt råd dock.

Du menar Microsoft SQL Server?

Det finns flera schyssta dbms som är "gratis", exempelvis MySQL. Kanske något att snegla på om tillfälle ges. :)

Mvh,

249 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)