Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Lista inlägg sorterade efter månadern

Postades av 2004-10-01 22:07:16 - Johan Svensson, i forum asp - allmänt, Tråden har 31 Kommentarer och lästs av 1111 personer

Hej.

Jag håller på med en slag kalender där jag vill att besökaren skall kunna välja ett årtal och för att sedan få alla månader listade som rubriker och under varje månad skall varje event som finns i databasen listas under månaden då den äger rum.

vi kan säga att jag har dessa inläggen i databasen:

Datum Event
------------------------------------
2003-10-03 Andreas fyller år!!!
2004-01-03 Anna och Per gifter sig
2004-03-05 Stormöte med klubben
2004-12-07 VM i snöbollskrig
2004-12-02 Den stora skoterträffen

Resultatet om besökaren valt år 2004 blir alltså:

År 2004

JANUARI
2004-01-03 - Anna och Per gifter sig

FEBRUARI
*inga händelser*

MARS
2004-03-05 - Stormöte med klubben

APRIL
*inga händelser*

MAJ
*inga händelser*

JUNI
*inga händelser*

JULI
*inga händelser*

AUGUSTI
*inga händelser*

SEPTEMBER
*inga händelser*

OKTOBER
*inga händelser*

NOVEMBER
*inga händelser*

DECEMBER
2004-12-02 - Den stora skoterträffen
2004-12-07 - VM i snöbollskrig


Jag har verkligen ingen aning hur jag löser detta.






Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-02 00:05:03 - Per Persson

Pseudokod för en lösning (kan ASP för dåligt):
<code>
månad := null

Foreach händelse

If händelse.månad <> månad
Then
Skriv ut månadsrubrik
månad := händelse.månad
End If

Skriv ut händelse

End Foreach
</code>


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-02 09:16:25 - Ann Kapborg

Hej!

När händelsen lagras kanske du skulle ha månadsnamnet i klartext i en kolumn?
Ta ut månaden genom datepart.
Kör en select case

Case 1
strManad = "januari"
Case 2
strManad = "februari"
etc.

Lagra sedan strManad i en egen kolumn.

Du kan börja med en sql-string som grupperar den kolumnen och sedan för varje värde: (For Each)
hämtar händelser (månad för månad med sql där du byter ut variabeln för månad)
With recordset 'Börja med att gå till post1
Move.First
händelser och köra en While not recordset.EOF
där du skriver ut händelserna.
strHandelse = recordset("händelse")
ResponseWrite('strHandelse') - 'inte riktig säker på fnuttarna här hmm
Move.Next
(Wend)

Nästa månad (Next)

Hoppas detta inte är rotvälska för dig för jag brukar själv slå upp syntaxerna när jag inte använt dem på ett tag :-)

/Ann


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-02 10:41:57 - Johan Svensson

Skulle du kunna skriva ut lite mer hur koden skulle kunna se ut. Förstår tillexempel inte alls hur:

hämtar händelser (månad för månad med sql där du byter ut variabeln för månad

...skall kodas.

Hittade denna sida: http://forums.aspfree.com/showthread.php?t=37574&goto=nextnewest
...vet inte om den kan vara till hjälp.


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-02 11:37:41 - Stefan Brännström

Välj ut händelserna för aktuellt år sorterade på datum i stigande ordning, typ:
<code>
Session.LCID = 1053 ' Svenska datum
jan1 = cDate(årtal & "-01-01")
dec31 = cDate(årtal & "-12-31")
sqlstr = "SELECT * FROM databas WHERE datum>=" &_
jan1 & " AND datum<=" &_
dec31 & " ORDER BY datum ASC"

' ps. beroende på databas och datatyp, kolla hur du jämför datumet
</code>
Gör en loop som loopar igenom händelserna och skriver ut dom:
<code>
Response.Write("År&nbsp;" & årtal & "<br/>")
curMonth = 0 ' aktuell månad (nollad)
Do Until rs.EOF
dbMonth = Month(cDate(rs("datum"))) ' databasmånad
If curMonth<dbMonth Then ' Ny månad
If (dbMonth - curMonth)>1 Then ' Händelsefria månader
For i = curMonth To dbMonth-1
Response.Write("<br/>" & uCase(MonthName(i)) & "<br/>*inga&nbsp;händelser*<br/>")
Next
End If
curMonth = dbMonth
Response.Write("<br/>" & uCase(MonthName(curMonth)) & "<br/>")
End If
Response.Write(rs("datum") & "&nbsp;-&nbsp;" & rs("händelse") & "<br/>") ' Skriv ut händelse
rs.MoveNext
Loop

If curMonth<12 then ' Händelsefria månader i slutet av året
For i = curMonth+1 To 12
Response.Write("<br/>" & uCase(MonthName(i)) & "<br/>*inga&nbsp;händelser*<br/>") '
Next
End If
</code>
Har skrivit detta utan att testa... så det kan vara fel i koden... men du kanske förstår hur jag har tänkt i alla fall...


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-02 16:23:11 - Johan Svensson

Nu har jag testat men jag får det inte riktigt att fungera. Trots att jag har poster som borde bli listade så står "error!!!" (alltså att det inte fanns några poster alls som passade SQL-satsen).

Tror att det har med strul med datum... brukar vara så. I databasen är datumet i formen ÅÅÅÅ-MM-DD.

Vet inte hur jag skall få det att fungera.

Kanske hjälper om jag berättar att jag använder MySQL-databas.

Så här ser koden ut:

<code>
<%
ar=2004
Session.LCID = 1053 ' Svenska datum
jan1 = cDate(ar & "-01-01")
dec31 = cDate(ar & "-12-31")

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL="SELECT * FROM calender WHERE eventdate>=" &_
jan1 & " AND eventdate<=" &_
dec31 & " ORDER BY eventdate ASC"

strDSN = "nordpol"
rs.Open strSQL, strDSN
If Not rs.EOF Then




Response.Write("År&nbsp;" & ar & "<br/>")
curMonth = 0 ' aktuell månad (nollad)
Do Until rs.EOF
dbMonth = Month(cDate(rs("eventdate"))) ' databasmånad
If curMonth<dbMonth Then ' Ny månad
If (dbMonth - curMonth)>1 Then ' Händelsefria månader
For i = curMonth To dbMonth-1
Response.Write("<br/>" & uCase(MonthName(i)) & "<br/>*inga&nbsp;händelser*<br/>")
Next
End If
curMonth = dbMonth
Response.Write("<br/>" & uCase(MonthName(curMonth)) & "<br/>")
End If
Response.Write(rs("eventdate") & "&nbsp;-&nbsp;" & rs("titel") & "<br/>") ' Skriv ut händelse
rs.MoveNext
Loop

If curMonth<12 then ' Händelsefria månader i slutet av året
For i = curMonth+1 To 12
Response.Write("<br/>" & uCase(MonthName(i)) & "<br/>*inga&nbsp;händelser*<br/>") '
Next
End If
else
Response.Write "error!!!"
rs.close
Set rs=nothing
end if
%></code>


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-02 22:12:55 - Stefan Brännström

Har aldrig använt MySQL, men testa
<code>
strSQL="SELECT * FROM calender WHERE eventdate>=#" &_
jan1 & "# AND eventdate<=#" &_
dec31 & "# ORDER BY eventdate ASC"
</code>
eller
<code>
strSQL="SELECT * FROM calender WHERE eventdate>='" &_
jan1 & "' AND eventdate<='" &_
dec31 & "' ORDER BY eventdate ASC"
</code>
eller
<code>
strSQL="SELECT * FROM calender WHERE eventdate>='#" &_
jan1 & "#' AND eventdate<='#" &_
dec31 & "#' ORDER BY eventdate ASC"
</code>


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-02 22:23:15 - Per Persson

Den mittersta är den korrekta i MySQL.


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-02 23:01:48 - Per Persson

<code>
<%
ar=2004
Session.LCID = 1053 ' Svenska datum

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT *, MONTH(eventdate) AS manad FROM calender " &_
"WHERE YEAR(eventdate) = " & ar & " " &_
"ORDER BY eventdate ASC"

strDSN = "nordpol"
rs.Open strSQL, strDSN

Response.Write("År " & ar & "<br/>")

' Loopa över månader
For manad = 1 To 12

' Skriv ut månadsnamn
Response.Write uCase(MonthName(manad)) & "<br>"

' Om inga händelse denna månad
If Not rs.EOF Or rs("manad") > manad Then
Response.Write "* inga händelser *<br>"
Else
Do
Response.Write rs("eventdate") & " - " & rs("titel") & "<br>"
rs.Next
Loop While Not rs.EOF
End If
Next

rs.close
Set rs=nothing
%>
</code>


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 11:41:22 - Johan Svensson

Känns som jag var tvungen att ändra lite.

Ändrade:
<code>
' Om inga händelse denna månad
If Not rs.EOF Or rs("manad") > manad Then
</code>
till:
<code>
' Om inga händelse denna månad
If rs.EOF Or CINT(rs("manad")) > CINT(manad) Then
</code>

Men får då följande felmeddelande:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A01B6)
Objektet stöder inte egenskapen eller metoden.: 'Next'
/nordpol/test.asp, line 38


Här är all kod:

<code>
<%
ar=2004
Session.LCID = 1053 ' Svenska datum

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT *, MONTH(eventdate) AS manad FROM calender " &_
"WHERE YEAR(eventdate) = " & ar & " " &_
"ORDER BY eventdate ASC"

strDSN = "nordpol"
rs.Open strSQL, strDSN

Response.Write("År " & ar & "<br/>")
' Loopa över månader
For manad = 1 To 12

' Skriv ut månadsnamn
Response.Write uCase(MonthName(manad)) & "<br>"

' Om inga händelse denna månad
If rs.EOF Or CINT(rs("manad")) > CINT(manad) Then

Response.Write "* inga händelser *<br>"


Else
Do
Response.Write rs("eventdate") & " - " & rs("titel") & "<br>"
rs.Next
Loop While Not rs.EOF
End If
Next

rs.close
Set rs=nothing
%>
</code>


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 11:49:51 - Stefan Brännström

Felet är <b>rs.Next</b>. Byt till rs.MoveNext
Sen bör du lägga villkoret för loopen i början av Do-loopen

<code>
Do Until rs.EOF
Response.Write rs("eventdate") & " - " & rs("titel") & "<br>"
rs.MoveNext
Loop
</code>


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 12:23:02 - Johan Svensson

Får nu:
Feltyp:
(0x80020009)
Felaktig variabeltyp.
/nordpol/test.asp, line 30

...när jag kör:
<code>
If rs.EOF Or not CINT(rs("manad") > CINT(manad) Then
</code>

Men när jag kör:
<code>
If rs.EOF Or not rs("manad") > manad Then
</code>

...får jag:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer
/nordpol/test.asp, line 30



Så hur löser jag detta?


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 12:25:59 - Ann Kapborg

Vad hämtar du manad ifrån?
/Ann


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 12:34:45 - Stefan Brännström

Testa slänga dit parenteser runt 2:a jämförelsen... annars blir det <b>not CINT(rs("manad"))</b> vilket inte är en boolsk jämförelse.
<code>
If rs.EOF Or not (CINT(rs("manad")) > CINT(manad)) Then
</code>
...fast frågan är varför du har Not där överhuvudtaget... och inte bara vänder >-tecknet..?

//EDIT
Såg att du hade glömt stänga en parentes med...


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 12:37:38 - Johan Svensson

rs("manad") hämtar jag ifrån tabellen eventdate med hjälp av "MONTH(eventdate) AS manad". eventdate inehåller datum typ 2004-06-23, "MONTH(eventdate)" ger talet "6".


Bara "manad" ger jag ett värde mellan 1 och 12 med hjälp av "For manad = 1 To 12"


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 12:39:50 - Per Persson

Behöver du verkligen använda CInt på manad? Den är ju redan ett heltal.

Och varför har du slängt dit Not? Det hade jag inte i mitt skript. Det skall vara så som jag skrev.


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 12:41:29 - Johan Svensson

Var lite slarvig där felmeddelandena kom när jag hade just:
If rs.EOF Or (CINT(rs("manad")) > CINT(manad)) Then


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 12:44:55 - Johan Svensson

Frågafrån Per Persson:
Behöver du verkligen använda CInt på manad? Den är ju redan ett heltal.

Försök till svar:
När jag körde:
<code>
If rs.EOF Or not rs("manad") > manad Then
</code>Fick jag:
<code>
Feltyp:
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer
/nordpol/test.asp, line 30
</code>


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 15:13:32 - Per Persson

Det beror (som Stefan skrev) på att du kör Not på rs("manad") som inte är ett booleskt värde. Typmässigt korrekt är Not(rs("manad") > manad), men Not skall överhuvudtaget inte vara med där.


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 15:27:27 - Per Persson

Jag hittade en logisk bugg *skäms*.
Pröva
<code>
<%
ar = 2004
Session.LCID = 1053 ' Svenska datum

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT *, MONTH(eventdate) AS manad FROM calender " &_
"WHERE YEAR(eventdate) = " & ar & " " &_
"ORDER BY eventdate ASC"

strDSN = "nordpol"
rs.Open strSQL, strDSN


Response.Write("År " & ar & "<br/>")

' Loopa över månader
For manad = 1 To 12

' Skriv ut månadsnamn
Response.Write UCase(MonthName(manad)) & "<br>"

' Om inga händelse denna månad
If rs.EOF Or rs("manad") > manad Then
Response.Write "* inga händelser *<br>"
Else
While Not rs.EOF And rs("manad") = manad
Response.Write rs("eventdate") & " - " & rs("titel") & "<br>"
rs.MoveNext
Wend
End If
Next

rs.close
Set rs=nothing
%>
</code>


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 18:24:40 - Johan Svensson

Nu testar jag på webbhotellet istället för på min dator, litar inte på min installation & konfig av MySQL.

Testade den nya koden och fick följande mfelmeddelande:

Error Type:
ADODB.Recordset.1 (0x80020009)
Either BOF or EOF is True, or the current record has been deleted; the operation requested by the application requires a current record.
/johans/test.asp, line 36


På rad 36 står:
While Not rs.EOF And rs("manad") = manad


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 18:28:12 - Ann Kapborg

har du testat om det fungerar när du inte har några händelser?
Är inte helt säker på syntaxen där, skulle väl nästla in andra villkoret för att prova.

/Ann


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 18:31:27 - Johan Svensson

Testade utan poster i databasen då blev felmeddelandet:

Error Type:
ADODB.Recordset.1 (0x80020009)
Either BOF or EOF is True, or the current record has been deleted; the operation requested by the application requires a current record.
/johans/test.asp, line 33


På rad 33 står:
If rs.EOF Or rs("manad") > manad Then


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 19:04:16 - Per Persson

Är de logiska operatorerna inte "lata" i VBScript, dvs beräknar de högerledet även om det egentligen inte behövs?

Edit: Tydligen inte... *suck*


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 19:07:46 - Ann Kapborg

Om du nästlar då?
Dvs gör en egen villkorssats för månaden.

Var ett tag se'n jag höll på med VB-script så jag är inte säker på syntaxen för att ställa upp två villkor efter varandra.


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 19:17:18 - Per Persson

Pröva
<code>
' Om inga händelse denna månad
If rs.EOF Then
Response.Write "* inga händelser *<br>"
ElseIf rs("manad") > manad Then
Response.Write "* inga händelser *<br>"
Else
Do While Not rs.EOF
If rs("manad") > manad Then
Exit Do
End If
Response.Write rs("eventdate") & " - " & rs("titel") & "<br>"
rs.MoveNext
Loop
End If
</code>


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 19:38:35 - Johan Svensson

Tack! Det funkade, på webbhotellet i alla fall och det är ju det som är det viktiga!

Det ända som inte fungerar är i vilket format datumet skrivs ut på sidan.
Webbhotell-servern verkar inte gilla:
<code>
Session.LCID = 1053 ' Svenska datum
</code>
Får detta felmeddelandet:
Error Type:
Session object, ASP 0219 (0x80004005)
The specified LCID is not available.
/johans/test.asp, line 4

Kan det ha med att föreningens webbhotell är B-one som använder sig av "Sun ONE Active Server Pages" för att kunna erbjuda ASP.

Testar jag utan "Session.LCID = 1053 ' Svenska datum" så skrivs datumet ut så här:
10/3/2004
och så vill jag ju inte ha det. Har kommit fram till att jag vill att det skall skrivas ut så här:
3/10. Det räcker ju faktiskt, vilket år och vilken månad det är står ju på andra platser. Hur gör jag detta?



Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 19:41:10 - Ann Kapborg

hej det är jag med mina workarounds igen. Ta ut datum och månad och gör en kombinerad sträng :-)
dag & "/" & månad.

/Ann


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 20:00:17 - Johan Svensson

Testade med:
<CODE>
strSQL = "SELECT *, DAY(eventdate) AS dag, MONTH(eventdate) AS manad FROM calendar " &_
"WHERE YEAR(eventdate) = " & ar & " " &_
"ORDER BY eventdate ASC"
</CODE>

...Men det fungerade inte. Vad är fel?


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 20:31:21 - Johan Svensson

Fixade det med:
<code>
Response.Write Day(rs("eventdate"))& "/" & rs("manad") & " - " & rs("titel") & "<br>"
</CODE>

TACK FÖR HJÄLPEN!!!
Trodde ett tag att det aldrig skulle lösa sig.


Svara

Sv: Lista inlägg sorterade efter månadern

Postades av 2004-10-03 20:50:54 - Per Persson

Vilken version av MySQL har du? Funktionen DAY() finns fr.o.m. version 4.1.1, men är ett alias för DAYOFMONTH().

Annars kan du använda DATE_FORMAT() för att formatera datumet redan i MySQL:
<code>
strSQL = "SELECT titel, DATE_FORMAT(eventdate, '%e/%c') AS datum, MONTH(eventdate) AS manad FROM calendar " &_
"WHERE YEAR(eventdate) = " & ar & " " &_
"ORDER BY eventdate ASC"
</code>


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 786
27 960
271 761
703
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies