Avatar billede freud Nybegynder
18. oktober 2004 - 12:19 Der er 29 kommentarer og
1 løsning

vis måned og år

Har en select box med følgende indhold:

<option value="1">Januar</option>
<option value="2">Februar</option>
<option value="3">Marts</option>
<option value="4">April</option>
<option value="5">Maj</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">December</option>


Skal bruge noget kode som gør følgende

- første <option> skal indeholde nuværene mdr og år

som. feks. <option value="12-2004">Oktober - 20004</option>

- de følgende <option> 's skal gå et år frem dvs. til oktober 2005

- <option value> skal jeg bruge til udtræk fra min kalender
Avatar billede fennec Nybegynder
18. oktober 2004 - 12:38 #1
Prøv denne (ikke testet):

<select>
<%
for f=0 to 11
  response.write "<option value='"& month(dateadd("m",f,date())) &"-"& year(dateadd("m",f,date())) &"'>"& monthName(month(dateadd("m",f,date()))) &" - "& year(dateadd("m",f,date()))
next
%>
</select>
Avatar billede freud Nybegynder
18. oktober 2004 - 12:45 #2
- fennec

virker lige som det skal

måske du kan hjælpe med mit næste problem

hvordan tilrettet min sql så ?

If Request.Form("tmpdato") <> "" Then
    tmpdato = Request.Form("tmpdato")
Else   
    tmpdato = Month(date())
End If


strSQL = "SELECT * FROM Kalender WHERE Month(KalenderSlutdato) = " & tmpdato & " ORDER BY KalenderStartdato ASC"
Avatar billede fennec Nybegynder
18. oktober 2004 - 12:49 #3
Det kan jeg sikkert godt hjælpe med :o)
Men jeg mangler lidt info. Hvad er det du vil trække ud af databasen??
Avatar billede freud Nybegynder
18. oktober 2004 - 12:51 #4
- fennec

her får du lige hele koden:

<table width="160" border="0" cellpadding="2" cellspacing="2">
            <tr align="left" valign="top">
              <td width="1" rowspan="2" class="Vsider">&nbsp;</td>
              <td width="2">&nbsp;</td>
              <td><img src="../pix/kalender.gif" width="138" height="29"></td>
            </tr>
            <tr align="left" valign="top">
              <td width="2">&nbsp;</td>
              <td>
                <% Menu = Request.querystring("Menu")
        Umenu = Request.querystring("Umenu") %>
                <form action="../indhold/indhold.asp?Menu=<%= Menu %>&Umenu=<%= Umenu %>" method="post" name="form1" target="iframe">
                  <select name="tmpdato" class="text_box" id="tmpdato" style="width:130;">
                    <option>- V&aelig;lg m&aring;ned -</option>
                    <%
                    for f=0 to 12
                          response.write "<option value='"& month(dateadd("m",f,date())) &"-"& year(dateadd("m",f,date())) &"'>"& monthName(month(dateadd("m",f,date()))) &" - "& year(dateadd("m",f,date()))
                    next
                    %>
                  </select>
                  <br><br>
                  <input name="vis" type="submit" value="Vis valgte" class="text_box">
                </form><strong>
<%
If Request.Form("tmpdato") <> "" Then
    tmpdato = Request.Form("tmpdato")
Else   
    tmpdato = Month(date())
End If

'Select case tmpdato
'case 1: Navn = "Januar"
'case 2: Navn = "Februar"
'case 3: Navn = "Marts"
'case 4: Navn = "Apris"
'case 5: Navn = "Maj"
'case 6: Navn = "Juni"
'case 7: Navn = "Juli"
'case 8: Navn = "August"
'case 9: Navn = "September"
'case 10: Navn = "Oktober"
'case 11: Navn = "November"
'case 12: Navn = "December"
'end select

'response.write Navn%></strong><br>
<br>
                <%
                strSQL = "SELECT * FROM Kalender WHERE Month(KalenderSlutdato) = " & tmpdato & " ORDER BY KalenderStartdato ASC"
                set rs = Conn.execute(strSQL)
        %>
                <%
            'hvis der ingen poster er i db
            if rs.EOF then
                response.Write("")

            else

            Do Until rs.EOF
%>
               
    <% KalenderTitel = rs("KalenderTitel") %>
    <a href="kalenderinfo.asp?KID=<%= rs("KalenderID") %>" class="menu" target="iframe" title="Læs mere om: <%= KalenderTitel %>">
    <b><font size="-2"><%= KalenderTitel %></font></b><br>
    <font size="-2"><%= rs("KalenderSted") %><br>
   
   
    <% If rs("KalenderStartdato") = rs("KalenderSlutdato") Then %>
   
    <%
    TmpDato = rs("KalenderStartdato")
        response.write FormatDateTime(TmpDato, vbLongDate)
    %>
    <% Else %>
    <% End If %>
    </font></a><br><br>
    <%
        RS.MoveNext
        Loop
    %>
   
                <% end if %>
                <% LukDB %>
              </td>
            </tr>
          </table>
Avatar billede fennec Nybegynder
18. oktober 2004 - 13:02 #5
Det er altså events/aktiviteter du vil trække ud??

Alle de events som har start eller slut dato inden for den valgte måned??
Avatar billede freud Nybegynder
18. oktober 2004 - 13:23 #6
- fennec

Det er altså events/aktiviteter du vil trække ud??
- ja

Alle de events som har start eller slut dato inden for den valgte måned??
- ja, men en event kan godt strække sig over flere mdr.


Men der er jo sql'en som skal manepuleres.......

strSQL = "SELECT * FROM Kalender WHERE Month(KalenderSlutdato) = " & tmpdato & " ORDER BY KalenderStartdato ASC"

det er jo denne del Month(KalenderSlutdato) som skal være lig med <option value>,
kan man lave det noget i stil med Month(year(KalenderSlutdato) ?

ved godt ovenstående virker
Avatar billede fennec Nybegynder
18. oktober 2004 - 13:36 #7
Fint nok. Så laver vi lige selecten til en dato (den første i hver måned)

<select>
<%
for f=0 to 11
  TmpDato = dateserial(year(dateadd("m",f,date())),month(dateadd("m",f,date())),1)
  response.write "<option value='"& TmpDato &"'>"& monthName(month(TmpDato)) &" - "& year(TmpDato)
next
%>
</select>

Også kan du bruge denne sql:
strSQL = "SELECT * FROM Kalender WHERE KalenderStartdato < '"& dateadd("m",1,tmpdato) &"' and KalenderSlutdato > '" & tmpdato & "' ORDER BY KalenderStartdato ASC"

Den vælger alle hvor Startdato mindre end den sidste dato i måneden og Slutdato er størrer end den første i måneden. Desuden skal datoformatet sikkert afstemmes det som databasen bruger. Hvilken database er det??
Avatar billede freud Nybegynder
18. oktober 2004 - 13:58 #8
- feccen

det er en access db.
Avatar billede fennec Nybegynder
18. oktober 2004 - 14:06 #9
Så skal der bruges # i stedet for '. Og Access bruger mm-dd-yyyy formatet. Formatat ændres med denne funktione:

Function ConvertToSqlDate(dato)
dim SQLYear,SQLMonth,SQLDay
  SQLYear = Year(dato)
  SQLMonth = Month(dato)
  SQLDay = Day(dato)
  if SQLDay<10 then
    SQLDay = 0&SQLDay
  end if
  if SQLMonth<10 then
    SQLMonth = 0&SQLMonth
  end if
  ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear
End Function
...
...
strSQL = "SELECT * FROM Kalender WHERE KalenderStartdato < #"& ConvertToSqlDate(dateadd("m",1,tmpdato)) &"# and KalenderSlutdato > #" & ConvertToSqlDate(tmpdato) & "# ORDER BY KalenderStartdato ASC"
Avatar billede freud Nybegynder
18. oktober 2004 - 14:08 #10
får følgende sql udtræk ......... der må der være en fejl

SELECT * FROM Kalender WHERE KalenderStartdato < '09-02-1900' and KalenderSlutdato > '10' ORDER BY KalenderStartdato ASC
Avatar billede fennec Nybegynder
18. oktober 2004 - 14:11 #11
Smid lige dette i toppen af siden. Så kører ASP med dansk datoformat.

session.lcid = 1030
Avatar billede freud Nybegynder
18. oktober 2004 - 14:12 #12
nyt sql udtræk

SELECT * FROM Kalender WHERE KalenderStartdato < #01-01-2005# and KalenderSlutdato > #12-01-2004# ORDER BY KalenderStartdato ASC
Avatar billede fennec Nybegynder
18. oktober 2004 - 14:19 #13
Det skulle være rigtigt. Så burde den finde alle i december måned (12-01-2004 <-> 01-01-2005)
Avatar billede freud Nybegynder
18. oktober 2004 - 14:21 #14
- fennec

den udskriver bare ikke noget , selv om der er 5 indlæg i dec mdr.
Avatar billede fennec Nybegynder
18. oktober 2004 - 14:26 #15
Prøv at ændre denne:
ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear

til dette:
ConvertToSqlDate = SQLYear&"-"&SQLMonth&"-"&SQLDay
Avatar billede freud Nybegynder
18. oktober 2004 - 15:16 #16
Avatar billede freud Nybegynder
18. oktober 2004 - 15:17 #17
her kan du se alle indlæg i kalenderen

http://www.skjernkulturcenter.dk/test/index.asp
Avatar billede fennec Nybegynder
18. oktober 2004 - 15:37 #18
Hvis jeg vælger december få jeg 5 resultater. Er det ikke rigtigt??
Avatar billede freud Nybegynder
18. oktober 2004 - 15:42 #19
nej der er ingen indlæg i december

her kan du se alle indlæg i kalenderen

http://www.skjernkulturcenter.dk/test/index.asp
Avatar billede freud Nybegynder
18. oktober 2004 - 15:51 #20
drop lige et svar, så du kan få dine velfortjente points :-)

må finde en anden måde af lave udtræk på , måske noget med et felt i db'en kun
undeholder mdr og år
Avatar billede fennec Nybegynder
18. oktober 2004 - 15:56 #21
Du kan godt få et svar, men jeg vil nu hellere hjælpe med at finde en løsning.

Hvilken datatype er KalenderStartdato og KalenderSlutdato i database?? Er det tekst eller "dato og klokkeslet"?
Avatar billede freud Nybegynder
18. oktober 2004 - 16:04 #22
du kan hente en kopi af kalender db her

http://www.skjernkulturcenter.dk/test/kalender.mdb
Avatar billede freud Nybegynder
18. oktober 2004 - 16:08 #23
- fennec

det ville være helt kanon hvis du kan finde en løsning
Avatar billede fennec Nybegynder
18. oktober 2004 - 16:11 #24
Skal nok kikke på det i morgen, men nu tager jeg fri :o)
Avatar billede fennec Nybegynder
19. oktober 2004 - 08:25 #25
Denne skal virke:
ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear

Så får du sætninger som ser sådan ud, og da de kan køre i Access (får de rigtige resultater), kan de også køre i ASP:

(alle i oktober)
SELECT * from kalender where kalenderStartdato <#11-01-2004# and kalenderSlutdato > #10-01-2004# ORDER BY KalenderStartdato ASC

(alle i december)
SELECT * FROM Kalender WHERE KalenderStartdato < #01-01-2005# and KalenderSlutdato > #12-01-2004# ORDER BY KalenderStartdato ASC

Men du skal lige have ændret denne:
If Request.Form("tmpdato") <> "" Then
    tmpdato = Request.Form("tmpdato")
Else   
    tmpdato = Month(date())
End If

til:
If Request.Form("tmpdato") <> "" Then
    tmpdato = Request.Form("tmpdato")
Else   
    tmpdato = datesetial(year(date()),Month(date()),1)
End If
Avatar billede freud Nybegynder
19. oktober 2004 - 09:41 #26
får denne fejl

Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typer stemmer ikke overens: 'datesetial'

det er det her som det er galt med

If Request.Form("tmpdato") <> "" Then
    tmpdato = Request.Form("tmpdato")
Else   
    tmpdato = datesetial(year(date()),Month(date()),1)
End If
Avatar billede fennec Nybegynder
19. oktober 2004 - 09:44 #27
Det var en tyrk fejl fra min side :o)

dateserial(...)
Avatar billede freud Nybegynder
19. oktober 2004 - 21:00 #28
- fennec

kanon kanon , nu virker det sku helt perfekt ........  :-)

Tusinde tak for hjælp
Avatar billede freud Nybegynder
19. oktober 2004 - 21:02 #29
poster lige hele koden hvis nogen evt kan bruge den:

<table width="160" height="95%" border="0" cellpadding="2" cellspacing="2">
            <tr align="left" valign="top">
              <td width="1" rowspan="2" class="Vsider">&nbsp;</td>
              <td width="2">&nbsp;</td>
              <td height="29"><img src="../pix/kalender.gif" width="138" height="29"></td>
            </tr>
            <tr align="left" valign="top">
              <td width="2">&nbsp;</td>
              <td>
                <%    
                    Menu = Request.querystring("Menu")
                    Umenu = Request.querystring("Umenu")
                %>
                <form action="../indhold/indhold.asp?Menu=<%= Menu %>&Umenu=<%= Umenu %>" method="post" name="form1" target="iframe">
                  <select name="tmpdato" class="text_box" id="tmpdato" style="width:130;">
                    <option>- V&aelig;lg m&aring;ned -</option>
                    <%
                        for f=0 to 11
                          TmpDato = dateserial(year(dateadd("m",f,date())),month(dateadd("m",f,date())),1)
                          response.write "<option value='"& TmpDato &"'>"& monthName(month(TmpDato)) &" - "& year(TmpDato)
                        next
                    %>
                </select>
                  <br><br>
                  <input name="vis" type="submit" value="Vis valgte" class="text_box">
                </form>
<%
If Request.Form("tmpdato") <> "" Then
    tmpdato = Request.Form("tmpdato")
Else   
    tmpdato = dateserial(year(date()),Month(date()),1)
End If
%><br>
<br>
    <%
        Function ConvertToSqlDate(dato)
        dim SQLYear,SQLMonth,SQLDay
          SQLYear = Year(dato)
          SQLMonth = Month(dato)
          SQLDay = Day(dato)
          if SQLDay<10 then
            SQLDay = 0&SQLDay
          end if
          if SQLMonth<10 then
            SQLMonth = 0&SQLMonth
          end if
          ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear
        End Function
       
        strSQL = "SELECT * FROM Kalender WHERE KalenderStartdato < #"& ConvertToSqlDate(dateadd("m",1,tmpdato)) &"# and KalenderSlutdato > #" & ConvertToSqlDate(tmpdato) & "# ORDER BY KalenderStartdato ASC"
        set rs = Conn.execute(strSQL)
    %>
        <br><br>               
    <%
        'hvis der ingen poster er i db
        if rs.EOF then
            response.Write("")

        else

        Do Until rs.EOF
    %>
               
    <% KalenderTitel = rs("KalenderTitel") %>
    <a href="kalenderinfo.asp?KID=<%= rs("KalenderID") %>" class="menu" target="iframe" title="Læs mere om: <%= KalenderTitel %>">
    <b><font size="-2"><%= KalenderTitel %></font></b><br>
    <font size="-2"><%= rs("KalenderSted") %><br><br><br>
    <%= rs("KalenderStartdato") %><br><br>
    <%= rs("KalenderSlutdato") %><br><br>
    </font></a><br><br>
   
    <%
        RS.MoveNext
        Loop
    %>
   
    <% end if %>
    <% LukDB %>
              </td>
            </tr>
          </table>
Avatar billede fennec Nybegynder
20. oktober 2004 - 09:06 #30
Godt at høre at det virker.
.o) <-- One Eyed Jack
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester