Avatar billede krel Nybegynder
11. juni 2008 - 22:58 Der er 14 kommentarer

Hjælp til dato med Date

Hej Derude.
Roder med min kalender og det virker (næsten) optimalt MEN i stedet for at have en pil til at bladre mellem månederne tænkte jeg hey jeg bruger da jan feb mar osv. i stedet for - ser da meget federe ud. JA i teorien bror dyt!

Problemet opstår nemlig når man enten når til februar og vil bladre til januar eller i modsatte ende af året når man i november vil videre til december.

Tror selv jeg kan se hvorfor, men har så ingen idé til hvordan jeg så laver mit stunt med måned-navne...

lidt kode:
<%
dtmDate = Request.QueryString("date")
dtmToday = Date
If dtmDate = "" Then
dtmDate = Date
Else
dtmDate = CDate(dtmDate)
End if
intYear = Year(dtmDate)
strMonth = MonthName(Month(dtmDate))
intDayOfMonth = Day(dtmDate)
dtmFirstDate = DateAdd("d", (-intDayOfMonth)+1, dtmDate)
intFirstDay = Weekday(dtmFirstDate, vbMonday)
strprev = Left((MonthName(Month(dtmDate)-1)), 3)
strnext = Left((MonthName(Month(dtmDate)+1)), 3)
%>

ved at jeg her trække på selve måned-navnet og der er jo ikke nogen måned før/efter januar/februar

men hva gør jeg så??

  • eksempel: http://www.tourdefoxdecarvalho.dk/version3/kalender/kalender.asp

  • HJÆÆÆÆÆÆLLLP troede lige jeg var så snedig - men NEJ!

    mvh.
    Kristian
    Avatar billede w13 Novice
    12. juni 2008 - 09:08 #1
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    [Microsoft][ODBC Microsoft Access Driver] Missing ), ], or Item in query expression 'Month(datostempel = Month()'.

    /version3/kalender/kalender.asp, line 150

    ?
    Avatar billede krel Nybegynder
    12. juni 2008 - 23:19 #2
    en sql jeg skal bruge til noget andet men kan ikke se hvad det har med det andet at gøre????

    Set rs=Conn.Execute("select * from [kalender] where Month(datostempel)= "& Month(CDate(request.querystring("date"))))

    ?
    Avatar billede krel Nybegynder
    14. juni 2008 - 22:50 #3
    ?? igen bud på hvordan jeg ellers kan lave en forrige / næste funktion med de første 3 bogstaver af navnet på henholdsvis forrige og næste måned..

    eksempel denne måned (juni)

    maj JUNI 2008 jul    (denne her jeg ønsker)

    i stedet for

    << JUNI 2008 >>
    Avatar billede w13 Novice
    15. juni 2008 - 15:58 #4
    Har du ikke måneden (juni) i talform et sted? Det gør det jo noget lettere.
    Avatar billede krel Nybegynder
    15. juni 2008 - 19:00 #5
    tjo jeg har faktisk lavet det på en anden måde men det fylder bare en del måske det kan kotes ned?? har 12x nedenstående (for hver måned)

    if Month(CDate(request.querystring("date"))) = 1 then
    strprev = "dec"
    strnext = "feb"
    end if
    Avatar billede w13 Novice
    15. juni 2008 - 20:25 #6
    Du bør arbejde med det i talform hele vejen igennem.

    Når du skal bruge månednavnet som 3 bogstaver, så brug:

    iMonth=3
    MonthName(iMonth,True)

    Og så kan du spare dine 12x kode ved at lave det til:

    strprev=Month(CDate(Request.Querystring("date")))-1
    strnext=Month(CDate(Request.Querystring("date")))+1
    If strprev=-1 Then strprev=12
    ElseIf strnext=13 Then strnext=1
    Avatar billede krel Nybegynder
    15. juni 2008 - 23:56 #7
    ja det er den så ikke så meget for:

    Microsoft VBScript compilation error '800a0414'

    Cannot use parentheses when calling a Sub

    /version3/kalender/kalender.asp, line 29

    MonthName(iMonth,True)
    ----------------------^

    bruges MonthName ikke også tidligere?? det kan vel ikke være to ting eller hvordan hønger det sammen?
    > er ikke den store programørHAJ..
    Avatar billede w13 Novice
    16. juni 2008 - 09:30 #8
    Prøv lige at fjerne ",True" så. Så skulle den skrive hele månedens navn. Så må vi se, om den kan finde ud af det.
    Avatar billede krel Nybegynder
    16. juni 2008 - 18:15 #9
    nope får en 500'er
    Avatar billede w13 Novice
    16. juni 2008 - 20:12 #10
    Hmm, sorry. Det er fordi vi ikke tildeler den til en variable:

    iMonth=3
    etellerandet = MonthName(iMonth,True)
    Avatar billede solle Nybegynder
    23. juni 2008 - 11:47 #11
    som w13 siger, så bør du benytte månedernes numeriske værdi!!

    Har lavet en funktion til dig, der finder månedsnavnets numeriske værdi!!!

    Jan=1, feb=2... etc etc etc...

    function MonthName_to_monthnum(strMonthName)
        dim ReturnMonthNum
        for m_i=1 to 12
            if(LCase(Left(MonthName(m_i), Len(strMonthIN)))=LCase(strMonthIN))then
                ReturnMonthNum=m_i
                exit for
            end if
        next
        MonthName_to_monthnum = ReturnNum
    end function
    Avatar billede solle Nybegynder
    23. juni 2008 - 11:49 #12
    kald den med:

    intMonthNum = MonthName_to_monthnum("jan")' el. MonthName_to_monthnum("januar")

    så er

    intMonthNum = 1
    Avatar billede solle Nybegynder
    23. juni 2008 - 11:59 #13
    oops.... Kopierede ikke den ændrede kode:

    function MonthName_to_monthnum(strMonthName)
        dim ReturnMonthNum
        for m_i=1 to 12
            if(LCase(Left(MonthName(m_i), Len(strMonthName)))=LCase(strMonthName))then
                ReturnMonthNum=m_i
                exit for
            end if
        next
        MonthName_to_monthnum = ReturnMonthNum
    end function
    Avatar billede krel Nybegynder
    24. juni 2008 - 23:46 #14
    tjaaa.. men sidder jeg så ikke bare tilbage med værdien nu altså fra 1-12?? eller skal din funktion kædes sammen med noget af det kode w13 har skrevet ??

    ?
    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