Avatar billede henrik2000 Nybegynder
06. december 2001 - 12:33 Der er 13 kommentarer og
1 løsning

funktion til visning af datoer i dropdown

Hvordan laver man en funktion der viser startdato (måned og år) i en dropdownboks,
og slutdato (mm/yyyy) i en anden?

jeg har f.eks. 2 almindelige dropdownbokse der ser således ud:

<select name=\"Startdato\">           
<option value=\"dato\">Startdato</option>
</select>

<select name=\"Slutdato\">           
<option value=\"dato\">Slutdato</option>
</select>

jeg vil så gerne vise formatet mm/yyyy i dropdownboksen,
udfra et interval jeg selv definerer.
Det vil sige jeg skal kunne ændre startdatoen og slutdatoen efter
behov i funktionen på en nem måde.

Så hvis startdatoen er i dag, så kan man p.t. kun vælge:
12/2001 i dropdownboksene, men i næste måned vil man kunne vælge
mellem 12/2001 og 01/2002 i dem begge os.v., således at der ryger en
ny mm/yyy hver måned der går.
Avatar billede bobbedude Nybegynder
06. december 2001 - 12:49 #1
jeg ved ikke det hele men du kan vise datoen sådan her:

<%=FormatDateTime(Date, 2)%>

Er din server installeret med US system kan du putte dette i toppen af din side.

<%Session.LCID = 1030%>
Avatar billede nute Nybegynder
06. december 2001 - 12:50 #2
<html>
<%
Sub generateList( startMonth, StartYear, stopMonth, stopYear )
  for i = startYear to stopYear
      for j = startMonth to stopMonth
          if( j < 10 ) then
              val = \"0\" & j
            else
              val = j
            end if
            response.write \"<option value=\"\"\" & val & \"/\" & i & \"\"\">\" & val & \"/\" &  i & \"</option>\"
        next
    next
   
end sub
%>
<body>
<form name=\"frm\">
<select name=\"startDato\">
<%
Call generateList( 1, 2000, 12, 2001 )
%>
</select><br>
<select name=\"sluttDato\">
<%
Call generateList( 1, 2002, 12, 2003 )
%>
</select>
</form>
</body>
Avatar billede henrik2000 Nybegynder
06. december 2001 - 13:00 #3
ok - tak. Men hvad så hvis man nu har datoen i en tabel med getdate(), og man vil vise den mindste dato fra databasen samt den største i de 2 dropdownbokse???

Avatar billede nute Nybegynder
06. december 2001 - 13:07 #4
i denne linje:

Call generateList( 1, 2000, 12, 2001 )

sender du med start måned/år og slutt måned/år. du kan sende med nøyaktig de parameter du vil...fx:

startDato = CInt( Month( rs(\"startDato\") ) )
sluttDato = CInt( Month( rs(\"sluttDato\") ) )

Call generateList( startDato, 2000, sluttDato, 2001 )

eller

startAar = CInt( Year( rs(\"startDato\") ) )
sluttAar = CInt( Year( rs(\"sluttDato\") ) )
Call generateList( 1, startAar, 12, sluttAar )

/nute
Avatar billede henrik2000 Nybegynder
06. december 2001 - 13:33 #5
ok - jeg fik pyntet lidt på den. Den henter nu fra databasen (Se koden)
Mange tak for hjælpen!

<%
               
                dtLogStart = objConn.Execute(\"SELECT MIN(LOG_DataEventTime) as dtStart FROM LOG_Data\")(\"dtStart\")
                dtLogEnd = Now()
               
                generateDateList Month(dtLogStart), Year(dtLogStart), Month(dtLogEnd), Year(dtLogEnd),\"\",\"\"
                %>


Sub generateDateList( startMonth, StartYear, stopMonth, stopYear, SelectedMonth, SelectedYear )
  for i = startYear to stopYear
      for j = startMonth to stopMonth
          if( j < 10 ) then
              val = \"0\" & j
            else
              val = j
            end if
            response.write \"<option value=\"\"\" & val & \"/\" & i & \"\"\" \"
            If SelectedMonth = j and Selectedyear = i then Response.Write \"Selected\"
            Response.Write \" >\" & val & \"/\" &  i & \"</option>\"
           
        next
    next
   
end sub
Avatar billede nute Nybegynder
06. december 2001 - 13:36 #6
fino :)

selv takk...
Avatar billede henrik2000 Nybegynder
07. december 2001 - 13:19 #7
hej igen!
Jeg kan ikke få dropdownboksen til at holde fast i den dato man vælger, den hopper tilbage igen istedet for at blive på \"selected\":

Jeg har en dropdownboks med dette her kode der virker, det skulle være det samme som ovenstående, ikke?


<option value=\"<%=objRs(\"LOG_EventID\")%>\"
<%if CStr(iLOG_EventID) = CStr(objRs(\"LOG_EventID\"))
then Response.Write \"selected\"%>>
<%=objRs(\"LOG_EventName\")%></option>

Det er altså selectedMonth og selectedYear jeg spørger til.


Avatar billede henrik2000 Nybegynder
07. december 2001 - 14:05 #8
Og hvordan laver man så egentlig en SQL-streng der søger udfra de 2 datoer man vælger i dropdownboksen? jeg har lavet resten af SQL-strengen, men mangler lige at få datoerne med!

Avatar billede nute Nybegynder
07. december 2001 - 14:15 #9
hmmm...jeg er ikke sikker på om jeg forstår hva du mener med \"den hopper tilbage igen istedet for at blive på \"selected\":\". Har du et link til et site hvor jeg kan se det ?

med hensyn til dato søk...du kan legge til (tror jeg)...

WHERE datoKolonne > startDato AND datoKolonne < sluttDato
Avatar billede henrik2000 Nybegynder
07. december 2001 - 14:24 #10
Når man vælger en dato i dropdownboksen, så bliver den ikke stående på den \"rigtige\" (ligesom i option value selected)...

Og ang. SQL:
mit problem er at jeg har getdate i databasen, men i dropdownboksen viser jeg kun mm/yyyy, altså ikke hel getdate-formatet.

Så når man vælger 12/2001 og 12/2001 i de 2 dropdowns, skal den vise alle rækker fra december 2001 (i databasen står der jo f.eks. 07-12-01 09:35:18)



Avatar billede nute Nybegynder
07. december 2001 - 15:20 #11
at din valgte dato ikke blir stående på den du har valgt, kan ikke ha noe med min kode å gjøre. men det er litt vanskelig å få et inntrykk når jeg ikke har et link jeg kan se problemet på...

angående din SQL, så kan jeg vel forestille meg at det er muligheter for å formattere i ASP koden...men igjen...det er vanskelig å visualualisere uten kode eller database...
Avatar billede henrik2000 Nybegynder
09. december 2001 - 19:45 #12
Her kommer hele koden - jeg har desværre ikke lige et link der p.t. er tilgængelig.

SQL-sætningen virker fint, bortset fra mit problem. Den viser det den skal vise, uafhængig af datoerne. Så jeg vil gerne ændre i sql-sætningen, så den kun viser indholdet indenfor det valgte datoområde, altså så den søger inkl. dato også.

Tabellen med datoerne hedder \"LOG_Data\", og datofeltet i den hedder \"LOG_DataEventTime\".

Derudover var der jo \"selected\"-problemet. Når man vælger en dato i dropdown, skal den jo blive stående på den så man kan se hvad man har søgt på (\"option selected\")

    <H5>Log</h5>
    <%
    STARTconn
   
    Select Case request(\"action\")
        Case \"Find\"
            SearchFrm request(\"LOG_ModulID\"),request(\"LOG_EventID\"),request(\"dtStart\"),request(\"dtEnd\")           
            ShowResult BuildSQL (request(\"LOG_ModulID\"),request(\"LOG_EventID\"),request(\"dtStart\"),request(\"dtEnd\"))           
        Case else
            SearchFrm \"\",\"\",\"\",\"\"
    End Select
   
    ENDconn   
    %>   

</BODY>
</HTML>
<%
-------------------------
Sub SearchFrm (iLOG_ModulID,iLOG_EventID,dtStart,dtEnd)

%>

<TABLE cellPadding=\"0\" cellSpacing=\"2\">
<FORM ACTION=\"<%=Request.ServerVariables(\"SCRIPT_NAME\")%>\">
    <TR>
        <TD rowspan=\"2\"><%   
       
            set objRs = objConn.Execute(\"SELECT * FROM LOG_Modul ORDER BY LOG_ModulName\")
            If not objRs.EOF Then
       
                %>
                <select name=\"LOG_ModulID\">
                    <option value=\"%\">*Modul</option><%
       
                do while not objRs.eof
       
                    %>
                    <option value=\"<%=objRs(\"LOG_ModulID\")%>\" <%
                    if CStr(iLOG_ModulID) = CStr(objRs(\"LOG_ModulID\")) then    Response.Write \"selected\"
                    %>><%=objRs(\"LOG_ModulName\")%></option><%
                                        objRs.movenext
                loop
                %></select><%
            end if   
            %>
        </TD>
        <TD rowspan=\"2\">
       
        <%   
            set objRs = objConn.Execute(\"SELECT * FROM LOG_Event ORDER BY LOG_EventName\")
            If not objRs.EOF Then
       
                %><select name=\"LOG_EventID\">
                <option value=\"%\">*Event</option>
                <%
       
                do while not objRs.eof
       
                    %><option value=\"<%=objRs(\"LOG_EventID\")%>\" <%
                    if CStr(iLOG_EventID) = CStr(objRs(\"LOG_EventID\")) then    Response.Write \"selected\"
                    %>><%=objRs(\"LOG_EventName\")%></option><%
                       
                    objRs.movenext
                loop
                %></select><%
            end if
            %>
        </TD>
        <TD rowspan=\"2\">
            <select name=\"dtStart\">
                <%
               
                dtLogStart = objConn.Execute(\"SELECT MIN(LOG_DataEventTime) as dtStart FROM LOG_Data\")(\"dtStart\")
                dtLogEnd = Now()
               
                generateDateList Month(dtLogStart), Year(dtLogStart), Month(dtLogEnd), Year(dtLogEnd),\"\",\"\"
                %>
            </select>

        </TD>
        <TD rowspan=\"2\">
            <select name=\"dtEnd\">
                <%
                generateDateList Month(dtLogStart), Year(dtLogStart), Month(dtLogEnd), Year(dtLogEnd),\"\",\"\"
                %>
            </select>
        </TD>
        <TD rowspan=\"2\"><input type=\"submit\" name=\"action\" value=\"Find\"></TD>
    </TR>
</FORM>
</TABLE>
<br><br>
<%


End Sub
     
\'-------------------------------------------------
sub generateDateList( startMonth, StartYear, stopMonth, stopYear, SelectedMonth, SelectedYear )
  for iyear = startYear to stopYear
      for imonth = startMonth to stopMonth
          if( imonth < 10 ) then
              val = \"0\" & imonth
            else
              val = imonth
            end if
           
            response.write \"<option value=\"\"\" & val & \"/\" & iyear & \"\"\" \"
            If SelectedMonth = imonth  and Selectedyear = iyear then Response.Write \"Selected\"
           
            Response.Write \" >\" & val & \"/\" &  iyear & \"</option>\"
         
         
         
                         
           
        next
    next
   
end sub


\'-------------------------------------------------
Sub ShowResult(szSQL)

    set objRs = objConn.execute(szSQL)

        If objRs.EOF = true then
        Response.Write (\"Du fandt ingen poster ved søgning - prøv igen.\")
        else
        Response.Write \"<table width=\"\"50%\"\" border=\"\"1\"\">\"
       
        Response.Write \"<tr><td><b>User</b></td><td><b>Event</b></td><td><b>Logtidspunkt</b></td>\"
       
        Do while not objRs.EOF
       
        Response.Write \"<tr><td>\" & objRs(\"User_Username\") & \"</td>\"
        Response.Write \"<td>\" & objRs(\"LOG_DataDesc\") & \"</td>\"
        Response.Write \"<td>\" & objRs(\"LOG_DataEventTime\") & \"</td></tr>\"
       
        \'Response.Write request(\"dtStart\") & \" \" & request(\"dtEnd\") & \"<br>\"
        objRS.MoveNext
    Loop
    end if
Response.Write \"</table>\"
end sub

\'------------------------------------------------
Function BuildSQL (LOG_ModulID,LOG_EventID,dtStart,dtEnd)
    \'szSQL=\"SELECT * from LOG_Data,SSS_User\"
   
szSQL=\"SELECT LOG_Data.LOG_DataEventTime, LOG_Data.LOG_DataID, LOG_Data.LOG_ModulID, LOG_Data.LOG_EventID, LOG_Data.LOG_DataDesc, SSS_User.User_ID, SSS_User.User_Username, LOG_Data.User_ID, LOG_Event.LOG_EventName, LOG_Event.LOG_EventID FROM LOG_Data INNER JOIN SSS_User ON LOG_Data.User_ID = SSS_User.User_ID INNER JOIN LOG_Event ON LOG_Data.LOG_EventID = LOG_Event.LOG_EventID WHERE (LOG_Data.LOG_ModulID LIKE \'\" & LOG_ModulID & \"\') AND (LOG_Event.LOG_EventID LIKE \'\" & LOG_EventID & \"\')\"
BuildSQL = szSQL
End Function
%>
Avatar billede nute Nybegynder
09. december 2001 - 19:47 #13
tja...siden jeg ikek har databasen tilgjengelig så er jo denne kode rimelig ubrukelig...jeg kan jo ikke teste den...

hvis du har mulighet, så send meg de nødvendige filer pr. mail (adressen ligger under min profil)...
Avatar billede henrik2000 Nybegynder
09. december 2001 - 19:59 #14
Det gør jeg lige...
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