Avatar billede lund_dk Praktikant
07. december 2005 - 13:56 Der er 37 kommentarer og
1 løsning

Dato formater

Et lille spørgsmål ang datoer.

I min access database har jeg sat den til at indsætte now() når en post oprettes. Dvs. den gemmer det i access som: DD-MM-YYYY TT:MM:SS

Jeg har så også et datoformat fra en kalender som ser således ud: DD/MM/YYYY

I min kalender skal jeg flette min database ind, det vil sige hvis en dato passer med en post i databasen, skal den udskrive posten i min kalender.

Jeg har gjort således, men der udskrives ikke noget fra databasen. Og går ud fra det er et problem af dato formaterne ikke er helt ens, så spørgsmålet er så hvordan jeg får de 2 datoer til at snakke sammen.


KODEN:

strSkema = "select * from skema where dato = " & usedate & " order by opgave"
                    Set RSskema = conn.Execute(strSkema)
                    While Not RSskema.EOF
                   
                    response.write rsSkema("opgave")
                    response.write rsSkema("dato")
                   
                    RSskema.MoveNext
                    Wend
                    Set RSskema=Nothing
Avatar billede Slettet bruger
07. december 2005 - 14:02 #1
Hej

Du bliver nok nød til at omformatere "usedate" i scriptet forinde...
Prøv at skrive det her inden scriptet:
usedate = Replace(date(usedate), "-", "/")

\Dan
Avatar billede Slettet bruger
07. december 2005 - 14:05 #2
Dette forudsætter selvfølgelig at du har sat "usedate" til datatypen "Dato og klokkeslæt" i den første database...
Avatar billede lund_dk Praktikant
07. december 2005 - 14:06 #3
Får fejlen:

Fejltype:
Microsoft VBScript runtime (0x800A01C2)
Wrong number of arguments or invalid property assignment: 'date'
/q/intra/main1.asp, line 79


linie 79 er:
usedate = Replace(date(usedate), "-", "/")
Avatar billede lund_dk Praktikant
07. december 2005 - 14:08 #4
usedate kommer ikke fra databasen, den kommer fra min ASP kalender

Men posten i min database er sat til dato og klokkeslæt
Avatar billede lund_dk Praktikant
07. december 2005 - 14:09 #5
Poster lige hele koden:


<%
Function weekNr(dtmDate)
    weekNr = DatePart("ww", dtmDate, vbMonday, vbFirstFourDays)
    If weekNr > 52 Then
        If DatePart("ww", int(dtmDate) + 7 , vbMonday, vbFirstFourDays) = 2 Then weekNr = 1
    End If
End Function

function Weekday2(dtmDate)
    datenr = 0
    if Weekday(dtmDate) = 1 then
        datenr = 7
    else
        datenr = Weekday(dtmDate)-1
    end if
    Weekday2 = datenr
end function

Function WeekStart(ugenr, aar)
    WeekStart = DateAdd( "ww", ugenr, "01-01-" & aar )
    if NOT weekNr(WeekStart) = ugenr then
        if weekNr(WeekStart) > ugenr then
            WeekStart = DateAdd( "ww", ugenr-(weekNr(WeekStart)-ugenr), WeekStart)
        else 'weekNr(WeekStart) < ugenr
            WeekStart = DateAdd( "ww", ugenr+(weekNr(WeekStart)-ugenr), WeekStart)
        end if
    end if
   
    MyWeekday = Weekday2(WeekStart)
    if NOT MyWeekday = 1 then
        WeekStart = Dateadd("d",1-MyWeekday,WeekStart)
    end if
End Function

if Request.Querystring("ugenr") & "x" = "x" then
    myweek = weekNr(Day(Now) & "-" & Month(Now) & "-" & Year(Now))
else
    myweek = int(Request.Querystring("ugenr"))
end if

if Request.Querystring("aar") & "x" = "x" then
    myYear = Year(Now)
else
    myYear = int(Request.Querystring("aar"))
end if

startdate = WeekStart(myweek,myYear)
%>

<!--#include file="head.asp" -->
</head>

<body>
<div class="DivFrame" >
<table border="0" cellpadding="0" cellspacing="0" width="100%">

        <tr>
            <td colspan="7" height="24" class="Celheader"><%=myYear%>, Week: <%=myweek%></td>
            </tr>
        <tr>
            <td class="tblhead" align="center">Mandag</td>
            <td class="tblhead" align="center">Tirsdag</td>
            <td class="tblhead" align="center">Onsdag</td>
            <td class="tblhead" align="center">Torsdag</td>
            <td class="tblhead" align="center">Fredag</td>
            <td class="tblhead" align="center">Lørdag</td>
            <td class="tblhead" align="center">Søndag</td>
            </tr>
        </tr>
        </table>

        <table border="0" cellpadding="0" cellspacing="1" width="100%" bgcolor="#C0C0C0">
        <tr>
            <%
                for i = 0 to 6
                    usedate = DateAdd("d",i,startdate)
                    'usedate = replace(usedate, "-", "/")
                    usedate = Replace(date(usedate), "-", "/")

                    %>
                    <td class="CelCal" valign="top"><b><%=day(usedate)%>.</b>
                    <br><%=usedate%><br>
                   
                    <%
                    strSkema = "select * from skema where day(dato) = " & usedate & " order by opgave"
                    Set RSskema = conn.Execute(strSkema)
                    While Not RSskema.EOF
                   
                    response.write rsSkema("opgave")
                    response.write rsSkema("dato")
                   
                    RSskema.MoveNext
                    Wend
                    Set RSskema=Nothing
                    %>
                   
                    </td>
                    <%
                next
            %>
            </tr>
        </tr>
        </table>

</div>



</body>

</html>
Avatar billede hansdam Nybegynder
07. december 2005 - 14:10 #6
strSkema = "select * from skema where CDate(dato) = " & CDate(usedate) & " order by opgave"

Prøv dette
Avatar billede lund_dk Praktikant
07. december 2005 - 14:11 #7
virker heller ikke :(
Avatar billede lund_dk Praktikant
07. december 2005 - 14:11 #8
usedate = Replace(date(usedate), "-", "/")
giver ovenstående fejl..

og uden, der udskrives kalenderen, men posterne i databasen gør ikke
Avatar billede Slettet bruger
07. december 2005 - 14:13 #9
Din select-sætning forneden skal vel ikke se sådan her ud:

strSkema = "select * from skema where dato = " & usedate & " order by opgave"
- men vel snarere sådan her:

usedate = Replace(date(usedate), "-", "/")
strSkema = "select * from skema where dato='" & usedate & "' order by opgave"

I øvrigt kan jeg også se at du replacer "-" med "/" to gange lige efter hinanden... det er der vel ingen grund til?

\Dan
Avatar billede lund_dk Praktikant
07. december 2005 - 14:15 #10
den ene er jo sat inaktiv med '

har prøvet det sidste du er kommet med her, den giver stadig samme fejl på:

usedate = Replace(date(usedate), "-", "/")
Avatar billede Slettet bruger
07. december 2005 - 14:17 #11
Jeps...

Også efter du har ændret "select" sætningen?

Du skal have "'" udenom som i eksemplet ovenfor når kriteriet ikke kun indeholder tal...

\Dan

P.S. Eller kan jeg ikke lige gennemskue den...
Avatar billede lund_dk Praktikant
07. december 2005 - 14:19 #12
Ja også efter sætningen er ændret :(
Avatar billede hansdam Nybegynder
07. december 2005 - 14:25 #13
Prøv denne:
strSkema = "select * from skema where Left(dato,2) & Mid(dato,4,2) & Mid(dato,7,4) = " & Left(usedate,2) & Mid(usedate,4,2) & Mid(usedate,7,4) & " order by opgave"

Du har jo minutter i databasen, og ikke i datoen fra kalenderen... Det har jeg prøvet at få væk med denne...
Avatar billede lund_dk Praktikant
07. december 2005 - 14:39 #14
hansdam: det virker perfekt lokalt på min IIS,men på min webserver, så får jeg fejlen
Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/ole/main1.asp, line 84


83: strSkema = "select * from skema where Left(dato,2) & Mid(dato,4,2) & Mid(dato,7,4) = " & Left(usedate,2) & Mid(usedate,4,2) & Mid(usedate,7,4) & " order by opgave"
84: Set RSskema = conn.Execute(strSkema)
Avatar billede hansdam Nybegynder
07. december 2005 - 15:05 #15
hmm... prøv:
strSkema = "select * from skema where int(Left(dato,2) & Mid(dato,4,2) & Mid(dato,7,4)) = int(Left(usedate,2) & Mid(usedate,4,2) & Mid(usedate,7,4)) order by opgave"
Avatar billede lund_dk Praktikant
07. december 2005 - 15:12 #16
Er samme problem :(
Avatar billede hansdam Nybegynder
07. december 2005 - 16:28 #17
Denne så?
strSkema = "select * from skema where CDate(Left(dato,10)) = CDate(usedate) order by opgave"
Avatar billede lund_dk Praktikant
07. december 2005 - 17:54 #18
Desværre ikke..
Avatar billede lund_dk Praktikant
07. december 2005 - 17:56 #19
Lad os tage i udgangspunkt i denne her:
strSkema = "select * from skema where Left(dato,2) & Mid(dato,4,2) & Mid(dato,7,4) = " & Left(usedate,2) & Mid(usedate,4,2) & Mid(usedate,7,4) & " order by opgave"

Den virker jo fint på min lokal IIS server, hvilket jo bare er IIS på win XP DK.

Mit website ligger på en windows 2003 server,UK.
Avatar billede hansdam Nybegynder
07. december 2005 - 18:02 #20
Hvilken datatype er database feltet "dato"?
Avatar billede lund_dk Praktikant
07. december 2005 - 18:06 #21
Det er "dato og klokkslet" type.
Avatar billede hansdam Nybegynder
07. december 2005 - 19:08 #22
Endelig tror jeg den er knækket... Prøv denne:
strSkema = "select * from skema where DateValue(dato) = '" & DateValue(usedate) & "' order by opgave"
Avatar billede lund_dk Praktikant
07. december 2005 - 19:15 #23
Nu kommer der i det mindste ikke nogen fejl, MEN
der udskrives nu heller ikke noget fra databasen :/

har prøvet at lave en response.write af strengen, og får dette
select * from skema where DateValue(dato) = '06/12/2005' order by opgave
Så her har vi stadig / og ikke - som der er i databasen. Må være her fejlen ligger ?
Avatar billede hansdam Nybegynder
07. december 2005 - 19:19 #24
Prøv denne:
strSkema = "select * from skema where CDate(DateValue(dato)) = '" & CDate(DateValue(usedate)) & "' order by opgave"
Avatar billede lund_dk Praktikant
07. december 2005 - 19:22 #25
sammesom før

select * from skema where CDate(DateValue(dato)) = '07/12/2005' order by opgave
Avatar billede hansdam Nybegynder
07. december 2005 - 19:23 #26
Så prøv at sætte en replace ind...

usedate = Replace(usedate,"/","-")
strSkema = "select * from skema where CDate(DateValue(dato)) = '" & CDate(DateValue(usedate)) & "' order by opgave"
Avatar billede lund_dk Praktikant
07. december 2005 - 19:28 #27
mystisk, det giver ikke nogen ændringer
select * from skema where CDate(DateValue(dato)) = '07/12/2005' order by opgave
Avatar billede hansdam Nybegynder
07. december 2005 - 19:30 #28
hmm jeg er ved at løbe tør for ideer... Prøv at sætte denne ind øverst i koden:
Session.LCID = 1030
Avatar billede lund_dk Praktikant
07. december 2005 - 19:35 #29
Aha, er dér den ligger. Doh!
Jeg har bare det engelske format 2057, da siden skal være engelsk. Men så er det vel formatet fra databasen der skal ændres?
Avatar billede hansdam Nybegynder
07. december 2005 - 19:37 #30
yeps - prøv det
Avatar billede lund_dk Praktikant
07. december 2005 - 19:57 #31
For hulden da jeg hader de fucking datoer - er sku en side jeg halter en del på.
Nå, men nu har jeg prøvet:

dbDato = Replace(dbDato,"-","/")
strSkema = "select * from skema where CDate(DateValue(dbDato(dato))) = '" & CDate(DateValue(usedate)) & "' order by opgave"

men virker ikke
Avatar billede hansdam Nybegynder
07. december 2005 - 20:10 #32
Så prøver vi igen...

strSkema = "select * from skema where DateValue(dato) = #" & Day(usedate) & "-" & Month(usedate) & "-" & Year(usedate) & "# order by opgave"
Avatar billede lund_dk Praktikant
08. december 2005 - 08:07 #33
Hehe..

ingen fejl, men heller ingen output
response.write strSkema siger:
select * from skema where DateValue(dato) = #8-12-2005# order by opgave
Skal der mon
Avatar billede lund_dk Praktikant
08. december 2005 - 08:08 #34
Glem det der "skal der mon" hehe.

Nå, men prøvede at skrue daten frem til 16. og her virker det fint.Måske vi skal have den til at skrive 08 frem for bare 8 ?
Avatar billede lund_dk Praktikant
08. december 2005 - 08:10 #35
Nææh,er der heller ikke, sætter jeg datoen til d. 10, så udskriver den ikke min post, mon den på en måde bytter om på dato og måned, altså på en eller anden måde opfatter den 10. som 10. måned?
Avatar billede hansdam Nybegynder
08. december 2005 - 08:14 #36
hmmm du kan jo prøve at bytte dem om, så der står:
strSkema = "select * from skema where DateValue(dato) = #" & Month(usedate) & "-" & Day(usedate) & "-" & Year(usedate) & "# order by opgave"
Avatar billede lund_dk Praktikant
08. december 2005 - 08:17 #37
Der var den! Hehe, du har satme gjort en god indsats, du fortjener en dobbelt julegave :)
Smider du et svar? Og hvis du gerne vil have lidt flere point for det, såsiger du bare til.
Avatar billede hansdam Nybegynder
08. december 2005 - 08:22 #38
Godt du fik det til at virke :)
1*points er nok for mig :)
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