Avatar billede hundevennen Nybegynder
04. december 2007 - 10:56 Der er 10 kommentarer og
1 løsning

DBDate funktions problemer

Jeg bruger denne funktion  (fennecs), samt sqlsætning:

dim orec, SQL, ID, k, strConnect

    function DBDate(fDate)
    dim fDay, fMon, fYear
    fDay = right("0"& day(fDate),2)
    fMon = right("0"& month(fDate),2)
    fYear = year(fDate)
    DBDate = fmon&"-"&fday&"-"&fyear
    end function
   
        aarstal = request.form("aarstal")
        maanedsnr = request.form("maanedsnr")
        'response.write aarstal
        'response.write maanedsnr
        'response.end
               
        dfra = Month(dfra) & "-" & day(dfra) & "-" & year(dfra)
        dtil = Month(dtil) & "-" & day(dtil) & "-" & year(dtil)
        aar = aarstal  ' her sættes aktuelt år
        maaned = maanedsnr 'her ændres måned til det man ønsker
        datoMonthStart = dateserial(aar,maaned,maanedsnr)'her ændre til ønskede måned
        datoMonthEnd = dateserial(aar,maaned + 1,0)
        'response.write aar
        'response.end
openconnection

strtext = "select * from til where dfra<=#"& DBDate(datoMonthEnd) &"# and dtil>=#"& DBDate(datoMonthStart) &"#  order by dfra desc"

Problemet er, at der tilsyneladende sker noget når datoen(DBDate)
indeholder 01 - 09, - de records der indeholder datoer 01 - 09 kommer ikke med i recordsettet  - der sker hvis begge datoer END og START har 0 i datoen men ikke hvis f.eks START har 0 og END er højere end 10?????
Avatar billede fennec Nybegynder
04. december 2007 - 11:13 #1
Du formatere selv dine datoer inden du smider dem igennem DBDate. Det brtyder at du faktisk laver 2xformatering. Du skal bare fjerne din egen formatering, også evt typecaste dem til en dato:

dfra = cDate(dfra)
dtil = cDate(dtil)
Avatar billede fennec Nybegynder
04. december 2007 - 11:15 #2
øhhh. Vent lige lidt. Du bruger jo slet ikke dfra og dtil i denne kode... Bliver de brugt længere nede??
Avatar billede hundevennen Nybegynder
04. december 2007 - 11:34 #3
Nej de bliver ikke brugt længere nede - efter den kode der står øverst kommer det recordset den henter, men du får lige hele siden:

<!-- #include file=utils.asp -->
<html>
<head>
<link REL="Stylesheet" HREF="intranettet.css" TYPE="text/css" media="screen">
</head>
<body>
<%

dim orec, SQL, ID, k, strConnect

    function DBDate(fDate)
    dim fDay, fMon, fYear
    fDay = right("0"& day(fDate),2)
    fMon = right("0"& month(fDate),2)
    fYear = year(fDate)
    DBDate = fmon&"-"&fday&"-"&fyear
    end function
   
        aarstal = request.form("aarstal")
        maanedsnr = request.form("maanedsnr")
        'response.write aarstal
        'response.write maanedsnr
        'response.end
               
        dfra = Month(dfra) & "-" & day(dfra) & "-" & year(dfra)
        dtil = Month(dtil) & "-" & day(dtil) & "-" & year(dtil)
        aar = aarstal  ' her sættes aktuelt år
        maaned = maanedsnr 'her ændres måned til det man ønsker
        datoMonthStart = dateserial(aar,maaned,maanedsnr)'her ændre til ønskede måned
        datoMonthEnd = dateserial(aar,maaned + 1,0)
        'response.write aar
        'response.end
openconnection

strtext = "select * from til where dfra<=#"& DBDate(datoMonthEnd) &"# and dtil>=#"& DBDate(datoMonthStart) &"#  order by dfra desc"


getdata strtext       
           
            if dbset.eof then
           
            response.write "<br><font size=+1>Der er ingen opdateringer i "& maanedsnr &". måned. </font>"
            else
           
      response.write "<div class=tabel2>"
      response.write "<table border=1 cellpadding=0 cellspacing=0 width=900>"
      response.write "<tr><th colspan=9><font color='#0000FF'>Tilladelser i København i "& maanedsnr &". måned. </font></th></tr>"
      Response.Write "<tr><th align=center>Journr.</th><th width=70>Dato fra</th><th width=70>Dato til</th><th  width=70>Tid</th><th>Hvad</th><th>Hvor</th><th>Kreds</th><th>Tild.</th><th>Kat.</th><th>&nbsp;</th></tr>"
           
            Do while not dbset.eof
           
            if color = 0 then
                Response.write "<tr bgcolor=#FFFFFF>"
                color = 1
            else
                Response.write "<tr bgcolor=#E8E8E8>"
                color = 0
            end if
           
            response.write "<td width=140>&nbsp;<FONT face=Verdana size=1>" & trim(dbset(1)) & "</td><td >&nbsp;<FONT face=Verdana size=1>" & trim(dbset(2)) & "</td><td>&nbsp;<FONT face=Verdana size=1>" & trim(dbset(3)) & "</td><td>&nbsp;<FONT face=Verdana size=1>" & trim(dbset(4)) & "</td><td>&nbsp;<FONT face=Verdana size=1>" & trim(dbset(5)) & "</td><td>&nbsp;<FONT face=Verdana size=1>" & trim(dbset(6)) & "</td><td>&nbsp;<FONT face=Verdana size=1>" & trim(dbset(7)) & "</td><td>&nbsp;<FONT face=Verdana size=1>" & trim(dbset(10)) & "</td><td>&nbsp;<FONT face=Verdana size=1>" & trim(dbset(8)) & "</td><td width=20> <a href=""../tilladelser/tilladelser/" & trim(dbset(9)) & """>se</a></td>"
   

            Response.write "</tr>"
   
            dbset.movenext
            loop
            response.write "</table>"   
closeconnection
end if

%>
Det bliver værre og værre - når på søgeformen søger f.eks 2008 og 05 tager den ikke dem med der hedder 01 - 09, men hvis jeg ændre til 04 altså april 2008 så vil den godt?????????????????
Avatar billede hundevennen Nybegynder
04. december 2007 - 11:36 #4
du får lige koden til søgeformen her:

<html>
<head>
<link REL="Stylesheet" HREF="intranettet.css" TYPE="text/css" media="screen">
</head>
<body>

<body>
<table class="soegmdr" cellspacing="0" cellpadding="0" border="0" width="137">
<tr><td>
<table  cellspacing="0" cellpadding="0" border="0" width="137">
<form name=sampleform action="soegTil.asp" method=post>
<tr>
    <td align="center" bgcolor=#336799  colspan="2"><font color="#FFFFFF"><b>Søg tilladelser</b></font></td>
</tr>
<tr>
    <td>
Årstal:
  </td>
  <td><select name="aarstal">
    <!--<option >&nbsp;</option>-->
    <option value="07" >2007</option>
    <option value="08" >2008</option>
    <option value="09">2009</option>
    <option value="10">2010</option>
    <option value="11">2011</option>
   
</select>           
</td>
</tr>
<tr><td>&nbsp;</td></tr>
<tr>
    <td>
  Måned:
    </td>
  <td><select name="maanedsnr" id="kreds">
<!--    <option >&nbsp;</option>-->
    <option value="01">jan</option>
    <option value="02">feb</option>
    <option value="03" >mar</option>
    <option value="04" >apr</option>
    <option value="05">maj</option>
    <option value="06">jun</option>
    <option value="07">jul</option>
    <option value="08">aug</option>
    <option value="09">sep</option>
    <option value="10">okt</option>
    <option value="11">nov</option>
    <option value="12">dec</option>
</select>   
</td>
</table><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type=submit value=SØG name=SØG style="width:60px;">
</form>
</td></tr>
</table>


</body>
</html>
Avatar billede fennec Nybegynder
04. december 2007 - 11:39 #5
Prøv lige at udskrive "strtext" så vi kan se hvordan den ser ud:
strtext = "select * from til where dfra<=#"& DBDate(datoMonthEnd) &"# and dtil>=#"& DBDate(datoMonthStart) &"#  order by dfra desc"
response.write "SQL: "& strtext
Avatar billede hundevennen Nybegynder
04. december 2007 - 12:09 #6
søgning på år 2008 og april måned:
SQL: select * from til where dfra<=#04-30-2008# and dtil>=#04-04-2008# order by dfra desc
og for maj måned:
SQL: select * from til where dfra<=#05-31-2008# and dtil>=#05-05-2008# order by dfra desc
I april søgningen er der records den 6 april og de bliver vist
I maj søgning skal der være records vist da der er en den 5, men den kommer ikke frem

i sqlsætningen dtil er der noget galt med dtildatoen
Avatar billede hundevennen Nybegynder
04. december 2007 - 12:18 #7
dtil skal jo være 31-04-2008, - ik?
Avatar billede hundevennen Nybegynder
04. december 2007 - 12:21 #8
det er er denne der er noget galt med:

datoMonthStart = dateserial(aar,maaned,maanedsnr)'her ændre til ønskede måned
Avatar billede fennec Nybegynder
04. december 2007 - 12:36 #9
Jeps. Fejlen er i datoMonthStart.
Formatet på dateserial er dateserial(årstal,mååned,dag)

Du skal selvfølgelig ikke indsætte måned 2 gange, men isteder "1", da det er den første i måned du er intreseret i:
datoMonthStart = dateserial(aar,maaned,1)
Avatar billede hundevennen Nybegynder
04. december 2007 - 13:05 #10
nemlig - det tog lidt tid at gennemskue det, med din sædvanlige inspiration - så svar lige :-)
Avatar billede fennec Nybegynder
04. december 2007 - 13:13 #11
.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