ASP - Terminausgabe

LosLegator

Grünschnabel
Hallo liebe Gemeinde,

ich habe folgendes Problem. Ich hab eine Acccess-Datembank mit Termine.
Die Felder Primärschlüssel, Datum und Infos sind in der Datenbank. Die Ausgabe klappt auch einbahnfrei. Die Codes zum Öffnen der Datenbank hab ich mal weggelassen.

Code:
<table border=1 width="460">
    <tr>
        <th bgcolor="#b9b9b9" class="Text" align="center" width="160">Datum</th>
        <th bgcolor="#b9b9b9" class="Text" align="center" width="300" >Infos</th>
    </tr>
<%

Do while not rs.EOF
  Response.Write("<tr>")
  Response.Write("<td>" & rs.Fields("Anfangsdatum").Value& "</td>")
  Response.Write("<td>" & rs.Fields("Infos").Value& "</td>")
  Response.Write("</tr>")
  rs.MoveNext
Loop

rs.Close
set rs = nothing
%>
</table>


Es wird eine Tabelle nach folgendem Muster ausgegeben.
--------------------
| Datum |Infos|
--------------------
| 1 Eintrag| ....|
-------------------
| 2 Eintrag| ....|
-------------------

Nun will ich in die Datenbank noch ein Feld Monat einbinden, und beim ausgeben sollen die Termine die in einem Monat liegen auch abgetrennt werden, außerdem ist die Schwierigkeit, das es in einigen Monaten keine Termine gibt.


--------------------
| Datum |Infos|
--------------------
| Januar |
--------------------
| 1 Eintrag| ....|
-------------------
| März |
-------------------
| 2 Eintrag| ....|
-------------------

Wie muss ich meine Ausabe ändern um dieses zu eirreichen, habe es schon mit einigen Schleifen probiert bin aber kläglich gescheitert.

Greetz und Danke im Voraus.
 
Zuletzt bearbeitet:
Hallo LosLegator,

wenn ich Dich richtig verstanden habe versuche es mal in etwa so.


FOR x = 1 TO 12 ' Für die Monate des Jahres
'DB Abfrage. Hier kannst Du abfragen ob beim entsprechenden Monat etwas vorhanden ist.
IF Monat leer THEN
'nix vorhanden
ELSE
DO WHILE NOT rs.EOF
'Hier Deine
--------------------
| Januar |
--------------------
| 1 Eintrag| ....|
-------------------
END IF
rs.MOVENEXT
LOOP
NEXT


Bei Fragen melden.

Gruß

Torsten
 
Hi

eine weitere Möglichkeit

aus dem Anfangsdatum Monat und Jahr heraussplitten

bsp.

monat = month(rs("anfangsdatum"))
jahr = year(rs("anfangsdatum"))

dann fragst Du dies in der Whileschleife ab

<%
while not rs.eof
dim monat, jahr
dim myvar

monat = month(rs("anfangsdatum"))
jahr = year(rs("anfangsdatum"))

if myvar ="" or myvar <> monat & jahr then
Response.write "<b>" & monthname(monat) & " " & jahr & "</b><br>" & vbcrlf
myvar = monat & jahr
end if
Response.write rs("infos") & "<br>" & vbcrlf
rs.movenext
wend
rs.close
set rs=nothing
%>

Da in der Abfrage in der Schleife Monat und Jahr im Anfangsdatum in der Variablen myvar miteinanderverglichen und ggf. nur einmal gesetzt werden, MUSS in der SQL Anfangsdatum im order by gesetzt werden.

also

select * from tabelle order by anfangsdatum

output wäre dann

Juni 2004
Eintrag1
Eintrag2
eintrag3
August 2004
Eintrag4
Eintrag5

etc.
 
Zuletzt bearbeitet:
Hallo ihr beiden.

Erst mal vielen vielen Dank für eure Hilfe. Ich habe beide Sachen probiert und sie führen mich zum Erfolg. Ich habe es in meine Tabellen-Ausgabestruktur eingebettet und es sieht sehr gut aus.

Danke für die Schnelle Hilfe.

Greetz LosLegator

P.S.

Hier nochmal der TabellenCode.

Code:
<table border=1 width="460">
    <tr>
        <th bgcolor="#b9b9b9" class="Text" align="center" width="160">Datum</th>
        <th bgcolor="#b9b9b9" class="Text" align="center" width="300" >Infos</th>
    </tr>
<%

Do while not rs.EOF
  dim monat, jahr
  dim myvar
  monat = month(rs("anfangsdatum"))
  jahr = year(rs("anfangsdatum")) 
  if myvar ="" or myvar <> monat & jahr then
  Response.write("<td class=Text colspan=2>" & "<b>" & " &nbsp; " & monthname(monat) & "</b><br>" & vbcrlf)
  myvar = monat & jahr
  end if

  Response.Write("<tr>")
  Response.Write("<td>" & rs.Fields("Anfangsdatum").Value& "</td>" & vbcrlf)
  Response.Write("<td>" & rs.Fields("Infos").Value& "</td>" & vbcrlf)
  Response.Write("</tr>")
  rs.MoveNext
Loop

rs.Close
set rs = nothing
%>
</table>
 

Neue Beiträge

Zurück