---
title: "Filtrera i utskrift från databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/125733-filtrera-i-utskrift-från-databas"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "peppar"
published: "2005-04-04T19:46:36.000Z"
updated: "2005-04-05T13:00:55.000Z"
replies: 8
views: 353
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/125733-filtrera-i-utskrift-från-databas"
---

# Filtrera i utskrift från databas

## #1 — peppar, 2005-04-04T19:46Z

Har stött på patrull. Jag har en databas med posterna: 

```
newDatumpubliceras, datum (ex: 2004-04-04 20:20:20)
newDatumUtgar, datum (ex: 2004-04-05- 20:20:20)
newVisaPaSida, text (ex: default, nyheter)
```

 Nu vill jag gå igenom alla posterna och skriva ut dom som är relevanta enligt t.ex denna filtreringsmetod: skriv ut om värdet i fältet newDatumPubliceras INTE är större än newDatumUtgar plus om "default" finns i värdet från fältet newVisaPasida. Så här ser koden ut nu men jag är rädd att den skriver ut alla poster som har "default" i fältet newVisaPaSida men bryr sig inte om att filtrera enligt datum:

```
<%
'#-- Hämta alla fält i nyhetstabellen
sql	=	"select * from nyheter order by newId asc"
set rs = conndb1.execute(sql)
'#-- Leta igenom alla poster och sortera ut alla texter/nyheter som skall visas på förstasidan
do until rs.eof
if cdate(rs("newDatumPubliceras")) < cdate(rs("newDatumUtgar")) then

'##-- Finns det något som skall skrivas ut på förstasidan?
	newVisaPaSida = rs("newVisaPaSida")
	arrVisa = Split(newVisaPaSida, "," )
	for i = 0 to Ubound(arrVisa)
		if arrVisa(i) = "default" then  %>
			<h3><%response.write rs("newRubrik")%></h3>
			<p><h5><% response.write rs("newIngress1")%></h5></p>
		
			<% 	response.write textSomSkallSkrivasUt
		else
			'#-- Finns det ej något att skriva ut på första sidan.
			response.write "inget att skriva ut"
		end if
		next
	else
'##-- Har bäst föredatumet gått ut så skriv inte ut någon artikel
response.write "inget att skriva ut"
end if

rs.movenext
loop%>
```

Permalänk: https://www.webforum.nu/p/125733

## #2 — Jesper T, 2005-04-04T19:54Z

Känns som en kass lösning.
Skapa en tabell som talar om vilka nyheter som skall visas på respektive sida i stället.
Och sedan så ställer du en lite mer nyanserad sql-fråga.
Vad är det för MSDB?

Permalänk: https://www.webforum.nu/p/1584314

## #3 — peppar, 2005-04-04T19:59Z

> **Jesper T skrev:**
>
> Skapa en tabell som talar om vilka nyheter som skall visas på respektive sida i stället.
> Och sedan så ställer du en lite mer nyanserad sql-fråga.

 Hur kan det se ut? Eller jagmenar... Hur kan man relatera tabellerna?

> **JesperT skrev:**
>
> Vad är det för MSDB?

 MSDB? Access 2000

Permalänk: https://www.webforum.nu/p/1584318

## #4 — Jesper T, 2005-04-04T20:09Z

Visst, måste du ha den där modellen så skulle du kunna göra något såndant hära i sql-satsen:

```
page = "default"
sql	=	"SELECT * FROM nyheter WHERE now() BETWEEN COALESCE(newDatumPubliceras, now()) AND COALESCE(newDatumUtgar, now()) AND newVisaPaSida LIKE '%"& page &"%' ORDER BY newId"
```

Annars så är det bästa att du skapar en tabell som heter ex. nyheter_sidor

**id \| nyhetsid \| sida**
1 \| 1 \| default
2 \| 1 \| search
3 \| 2 \| default

osv.
Sedan så skapar du en fråga som ser ut ungefär så här:

```
SELECT * FROM nyheter n 
INNER JOIN nyheter_sidor ns ON n.id=ns.nyhetsid 
WHERE ns.sida = 'default' 
AND now() BETWEEN COALESCE(n.newDatumPubliceras, now()) 
AND COALESCE(n.newDatumUtgar, now()) 
ORDER BY n.newId
```

Permalänk: https://www.webforum.nu/p/1584323

## #5 — peppar, 2005-04-04T20:20Z

Nej, nej. Jag måste inte alls ha min modell. Den är nog som du säger rätt så kass för ändamålet.
Jag skall expoerimentera lite med din variant... //tack, för hjälpen (så länge :) )

Permalänk: https://www.webforum.nu/p/1584334

## #6 — peppar, 2005-04-05T09:21Z

Jag får inte frågan att fungera... Med frågan enlgt JesperT´s förslag får jag 

```
 Feltyp:
(0x80004005)
Odefinierat fel 
/Default.asp, line 16
```

Skriver jag ut SQLen ser det ut såhär:

```
SELECT * FROM nyheter n INNER JOIN nyheter_sida ns ON n.id=ns.visId WHERE ns.visSida= 'default' AND now() BETWEEN COALESCE(n.newDatumPubliceras, now()) AND COALESCE(n.newDatumUtgar, now()) ORDER BY n.newId
```

Permalänk: https://www.webforum.nu/p/1584489

## #7 — Jesper T, 2005-04-05T12:43Z

Access verkar inte hajja COALESCE()

```
SELECT * FROM nyheter n INNER JOIN nyheter_sida ns ON n.id=ns.visId WHERE ns.visSida= 'default' AND now() BETWEEN n.newDatumPubliceras AND n.newDatumUtgar ORDER BY n.newId
```

 :)

Permalänk: https://www.webforum.nu/p/1587564

## #8 — peppar, 2005-04-05T12:56Z

Då fungerar frågan i varjefall, men då får jag 

```
Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.
```

i tabellen nyheter_sida har jag en post som pekar på ett id i tabellen nyheter men får fortfarande detta fel...?

Permalänk: https://www.webforum.nu/p/1587567

## #9 — Jesper T, 2005-04-05T13:00Z

Det där felet beror på att du försöker lista poster som inte finns.

```
sql="Din sql-fråga..."
set rs = conndb1.execute(sql)

Do until Not rs.eof
    Response.write rs(0) &" | "& rs(1) &"<br>" 'Dina poster som skall visas
    rs.movenext
Loop
rs.close
```

Permalänk: https://www.webforum.nu/p/1587568

---

Tråden på webben: https://www.webforum.nu/amne/asp/125733-filtrera-i-utskrift-från-databas
