---
title: "Bättre uppbyggnad"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/11363-bättre-uppbyggnad"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "erka"
published: "2001-08-29T08:16:00.000Z"
updated: "2001-08-29T09:48:00.000Z"
replies: 15
views: 289
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/11363-bättre-uppbyggnad"
---

# Bättre uppbyggnad

## #1 — erka, 2001-08-29T08:16Z

Jag sitter å ska göra ett kort nyhetsnotis system och har kommit på ett par funderingar.

Det är tänkt att först ska man visa senaste månadens nyheter sen ska det stå länkar till de andra månadernas nyheter. typ så här

```
Nyhet 1 (denna månad)
Nyhet 2 (denna månad)
Nyhet 3 (denna månad)
osv.

Äldre Nyheter
2001 &#0124; Jan &#0124; Feb &#0124; Mars &#0124; Apr &#0124; Maj &#0124; Juni &#0124; Juli &#0124; Aug
2000 &#0124; Jan &#0124; Feb &#0124; Mars &#0124; Apr &#0124; Maj &#0124; Juni &#0124; Juli &#0124; Aug &#0124; Sept &#0124; Okt &#0124; Nov &#0124; Dec
```

Där tex 2001 jan ska länka till shownotice.asp?Show=Month&Year=2001&Month=01

Som nu är databasen uppbyggd på följande sätt

```
NewsID (räknare)
NewsInsertDate (kort datum)
NewsRemoveDate (kort datum)
NewsInsertName (text)
NewsHeader (text)
NewsContent (pm)
```

frågan är om man ska göra en till tabell med tex åren eller om man kan plocka ut det enklare genom att kolla vilka olika variatoner på 200 det finns i tex NewsInsertDate kolummen. Om man enkelt kan loopa igenom de olika variatonerna på datumen och få fram  den här biten

```
Äldre Nyheter
2001 &#0124; Jan &#0124; Feb &#0124; Mars &#0124; Apr &#0124; Maj &#0124; Juni &#0124; Juli &#0124; Aug
2000 &#0124; Jan &#0124; Feb &#0124; Mars &#0124; Apr &#0124; Maj &#0124; Juni &#0124; Juli &#0124; Aug &#0124; Sept &#0124; Okt &#0124; Nov &#0124; Dec
```

Någon som har några tankar om detta innan jag sätter igång

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

## #2 — LarsG, 2001-08-29T08:27Z

Du behöver inte en extra tabell.

För att få fram år och månad så 

```
select distinct year(NewsInsertDate) as y,
       monthname(month(InsertDate)) as m
  from news
 order by 1 desc,2 asc
```

sen är det bara att loopa igenom detta och hålla reda på när man får ett nytt år.

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

## #3 — erka, 2001-08-29T08:31Z

tack darling !

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

## #4 — erka, 2001-08-29T08:57Z

Det är en access db, kan det var därför jag får felmeddelandet

```
select distinct year(NewsInsertDate) as y, monthname(month(NewsInsertDate)) as m from ShortNews order by 1 desc,2 asc 

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Undefined function 'monthname' in expression. 

/test/notice.asp, line 16
```

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

## #5 — Vide, 2001-08-29T09:03Z

Testa att ta bort monthname-funktionen och använd den när du ta ur posten istället i ASP.

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

## #6 — LarsG, 2001-08-29T09:04Z

Hmm, hade för att den finns i Access (jag såg att du hade det.)

```
select distinct year(NewsInsertDate) as y,
month(InsertDate) as m
from news
order by 1 desc,2 asc
```

så får du sköta översättningen till månadsnamn med VB-script i stället. Monthname finns i VB-script i alla fall.

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

## #7 — erka, 2001-08-29T09:05Z

hur använder jag den direkt i aspn då ? hmmm tack

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

## #8 — LarsG, 2001-08-29T09:10Z

```
session.lcid = 1053
'connect
sql = "select distinct year(NewsInsertDate) as y,month(InsertDate) as m from news order by 1 desc,2 asc "
set rs = connect.execute(sql)

while not rs.eof
response.write monthname(rs("m"),true)
rs.movenext
wend
```

Om du har med true som andra argument till monthname så får du en förkortad version av namnet om du utelämnar den så får du ut hela.

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

## #9 — erka, 2001-08-29T09:10Z

Ok tack för allt...Men dock ett problem

```
Option Explicit
Session.LCID = 1053 

Dim Cn, SQLStmt, ArrRS, y

Set cn = Server.CreateObject("ADODB.Connection")
	cn.Connectionstring ="DSN=shortnews" 
 	cn.Open

SQLStmt ="select distinct year(NewsInsertDate) as y, month(NewsInsertDate) as m from ShortNews order by 1 desc,2 asc"

Response.Write(SQLStmt)

Response.Write"<br>"
ArrRS = Cn.Execute(SQLStmt).getrows()
For y = 0 to ubound(ArrRS,2)
Response.Write""& ArrRS(0,y) &" - "& monthname(month(arrRS(1,y))) &"<br>"
Next
Erase ArrRS
```

ger mig

```
select distinct year(NewsInsertDate) as y, month(NewsInsertDate) as m from ShortNews order by 1 desc,2 asc
2001 - december
2001 - januari
2001 - januari
2001 - januari
2001 - januari
2001 - januari
2001 - januari
2001 - januari
2000 - december
2000 - januari
2000 - januari
2000 - januari
2000 - januari
```

Det skulle det ju inte bli.. :(

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

## #10 — erka, 2001-08-29T09:14Z

Anävnder din larsg å då fungerar det, om man ska hålla koll på vilet år det är och skriva ut den en gång enbart då borde man typ skapa en räknare och om den ändrar sig bryter man till ny rad, men hur fean gör man det smidigast..

Tack än en gång

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

## #11 — erka, 2001-08-29T09:16Z

glöm det kom på det!

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

## #12 — erka, 2001-08-29T09:24Z

Hmm stött på problem, den vill inte skriva ut 2001 som år, vad är fel på min fulkod mån tro ?

```
dim sql, rs, year
sql = "select distinct year(NewsInsertDate) as y,month(NewsInsertDate) as m from ShortNews order by 1 desc,2 asc "
set rs = cn.execute(sql)

while not rs.eof

	If RS("Y") < Year Then 
		Response.write"<br><br><b>"& Rs("y")&"</b><br>"
	End If

Year = Rs("y")
Response.Write"<a href=""ShowNotice.asp?Action=ShowMonth&Month="& RS("m") &"&Year="& RS("y") &""">"
Response.write monthname(rs("m"),true)
Response.Write"</a>"
Response.Write" &#0124; "
rs.movenext
wend
```

Nu skriver den ut

```
jan &#0124; feb &#0124; mar &#0124; apr &#0124; maj &#0124; jun &#0124; jul &#0124; aug &#0124; 

2000
jan &#0124; feb &#0124; mar &#0124; apr &#0124; maj &#0124;
```

ja la nu till 
year = 4444 innan jag loopar, är det en smart lösning för att få fram 2001 som år ?
kom på att year inte var ett bra var namn :)

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

## #13 — LarsG, 2001-08-29T09:32Z

Tja, den fungerar nog några år till så.

```
dim sql, rs, year
sql = "select distinct year(NewsInsertDate) as y,month(NewsInsertDate) as m from ShortNews order by 1 desc,2 asc "
set rs = cn.execute(sql)
year = 0
while not rs.eof

If clng(RS("Y") <> clng(Year) Then 
Response.write"<br><br><b>"& Rs("y")&"</b><br>"
year = rs("y")
End If

Response.Write"<a href=""ShowNotice.asp?Action=ShowMonth&Month="& RS("m") &"&Year="& RS("y") &""">"
Response.write monthname(rs("m"),true)
Response.Write"</a>"
Response.Write" &#0124; "
rs.movenext
wend
```

men det går väl på ett ut. Huvudsaket att det fungerar.

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

## #14 — erka, 2001-08-29T09:42Z

tack larsg å ni andra..

ett problem till som jag inte kan förstå, jag använder denna kod

```
SQLStmt = "SELECT * FROM ShortNews Where NewsInsertDate BETWEEN "&DATEADD("d", -day(date)+1, date)&" AND "&date&"" 

Response.Write(SQLStmt)

Response.Write"<br>"
set rs = cn.execute(SQLStmt)
If RS.EOF Then
Response.Write"-Inga notiser"
Else
ArrRS = Cn.Execute(SQLStmt).getrows()
For y = 0 to ubound(ArrRS,2)
Response.Write""& ArrRS(0,y) &""
Next
Erase ArrRS
End If
```

Jag har 3 poster i db som har newsinsertdate 2001-08-12 men han hittar inte dem, han skriver ut
\-inga notiser

om jag skriver ut sql sattsen blir det

```
SELECT * FROM ShortNews Where NewsInsertDate BETWEEN 2001-08-01 AND 2001-08-29
```

Det ser ju helt riktigt ut... Vad kan vara fel ?

tack

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

## #15 — LarsG, 2001-08-29T09:47Z

```
SQLStmt = "SELECT * FROM ShortNews Where NewsInsertDate BETWEEN #"&DATEADD("d", -day(date)+1, date)&"#  AND #"&date&"#"
```

du jämför med ett numeriskt värde och inte ett datum. (2001-08-1 = 1992)

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

## #16 — erka, 2001-08-29T09:48Z

åhhhhhhh dumma dumma mig, snälla snälla du ! det var ju riktigt klantigt av mig

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/11363-bättre-uppbyggnad
