webForumDet fria alternativet
Logga in / Bli medlem

Lista senaste posterna

Databaser & SQL

10 svar · 476 visningar · startad av corona

Medlem sedan feb. 200470 inlägg
Trådstart#1

Jag håller på med ett nyhetsbrev som jag även vill publicera på en hemsida.
All information lagras i en accessdatabas.
Nu undrar jag hur man gör för att visa de senaste nyheterna (posterna). Har surfat runt på WF men hittar bara hur man gör för att hämta hem t ex de 5 senaste posterna.
Jag har ett nyhetsbrev som publicerades den 24/11 2005 (som ska synas) och ett som är gjort för 4 månader sedan. Jag vill bara se det senaste.
Har provat med:

Hamta = "SELECT * FROM newsArkiv WHERE Datum < now() ORDER BY ID ASC"

Men då listas alla.
Hur ska jag göra?

//Annette

Medlem sedan juni 200032 967 inlägg
#2
Hamta = "SELECT TOP 5 * FROM newsArkiv WHERE Datum < now() ORDER BY ID DESC"
Medlem sedan dec. 20025 483 inlägg
#3
select top N *

Där N är antalet poster.

Medlem sedan feb. 200470 inlägg
#4

Ja, men om antalet nyheter är olika i antal dvs antal poster kan variera. Hur gör man då? För om jag sätter TOP 5 då visar den bara 5 poster fast det är 7 poster och nästa gång kanske det finns 6 poster (t ex nästa nyhetsbrev).

//Annette

Medlem sedan juni 200032 967 inlägg
#5

Huh?

Vad menar du? Om det är 7 poster får du väl använda top 7? Eller vad vill du använda för urval, dvs hur vill du välja ut vilka poster som ska visas?

Medlem sedan feb. 200470 inlägg
#6

Vad jag vill är att man alltid ska kunna läsa det senaste nyhetsbrevet på webben också. Nyhetsbrevet kan innehålla t ex 3 nyheter (3 poster) ena gången men nästa gång den kanske innehåller 7 nyheter (7 poster). Därför kan jag inte sätta TOP till ett fast värde. Jag hoppas du nu förstår mig.
Frågan är om jag ska skapa en räknare om det inte går att plocka ut de senaste nyheterna.

Medlem sedan juni 200032 967 inlägg
#7

Men...

Hur ska du veta hur många poster som ska hämtas ut? Har du det i en variabel i ex. ASP-kod, eller ska databasen gissa, eller ska det joinas in en annan tabell, eller vad?

Medlem sedan dec. 200012 464 inlägg
#8

Vill du

hämta alla som är nyare än ett visst datum?
hämta det senaste av varje typ av nyhet?
något annat?
Medlem sedan feb. 200470 inlägg
#9

Jag löste det så här:
Jag skapade en till tabell som tillhandla håller datumet när nyhetsbrevet skickas.

Så min kod vart så här:

Dim HamtaDatum
Set RecSet = Server.CreateObject("ADODB.Recordset")
HamtaDatum = "SELECT TOP 1 * FROM infoDatum ORDER BY ID DESC"
RecSet.Open HamtaDatum, DB, adOpenForwardOnly, adLockReadOnly
	
NyhetsDatum = RecSet("NyhetsDatum")
RecSet.Close
Set RecSet = Nothing
		
Set RecSet = Server.CreateObject("ADODB.Recordset")
 Hamta = "SELECT * FROM newsArkiv WHERE Datum = #" & NyhetsDatum & "#  ORDER BY ID ASC"
 RecSet.Open Hamta, DB, adOpenForwardOnly, adLockReadOnly

Det finns säkert ett bättre sätt.
Ibland vill man lösa allt enkelt eller så slår man knut på sig själv. :D
Tur att WF finns och att det finns de som kan hjälpa en på traven.
Önskar alla här en trevlig helg! :bire

//Annette

Medlem sedan dec. 200012 464 inlägg
#10

Jo, det räcker med en fråga.

Hamta = "SELECT * FROM newsArkiv WHERE Datum >= " & _
"(select max(Nyhetsdatum) from infoDatum) order by id asc"
Medlem sedan feb. 200470 inlägg
#11

Ok, tack!
Va, bra att det går att lösa med en fråga!

//Annette

1305 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
460 ms — deklarationer (db)
0 ms — hämta statistik (cache)
842 ms — hämta tråd, inlägg och bilagor (db)
460 ms — ändringar (db)