Avatar billede mskjoldp Novice
30. april 2005 - 22:46 Der er 12 kommentarer og
1 løsning

dato plus 30 dage

Hey E

IIS5.0/ASP/IE

Jeg har søgt her på E og fundet flere gode dato scripts, men jeg kan ikke lige greje hvordan jeg skal løse dette.

Jeg gemmer en dato'er i en db-kolonne. Formatet er yy/mm/dd (for nem sortering)

db-data hentes frem, og nu vil jeg så i en function tjekke for om der er gået 30 dage fra den dato der er gemt i db.

dvs. db felt indeholder: 05/04/30
når indholdet er 30 dage længere fremme i tid, så ændres baggrundsfarven.
ala...
...denne function sat op til test, hvor
dato = db data, og
val = kolonnenavnet i db (s_v_nt_egress):
    Function valEgress(ByVal dato, ByVal val)
        If dato <> "" Then
            valEgress = "style=""color:white;background-color:brown;"" "
        Elseif dato = "" Then
            valEgress = "style=""color:white;background-color:blue;"" "
        End if
    End function%>
Avatar billede mskjoldp Novice
30. april 2005 - 22:48 #1
hvis i så lige ser bort fra stavefejl 8-s
Avatar billede kalp Novice
30. april 2005 - 22:48 #2
if dato > (DateAdd("D", 29, date)) then
Avatar billede mskjoldp Novice
30. april 2005 - 22:51 #3
kan du forklare koden
Avatar billede kalp Novice
30. april 2005 - 22:54 #4
if dato

Hvis dit dato felt

>

er større end

(DateAdd("D", 29, date))

dags dato + 29 dage

then

Avatar billede mskjoldp Novice
30. april 2005 - 22:57 #5
ok, hvordan vender jeg så mit dato format yy/mm/dd til dags dato formato .. eller omvendt...?
Avatar billede kalp Novice
30. april 2005 - 23:13 #6
så meget styr på dato'ere har jeg desværre ikke:/ men for at koden virker behøves det i hvertfald heller ikke gøres. Lidt ærgelig mener nemlig jeg så det for leden hvordan man gør:(
Avatar billede kalp Novice
30. april 2005 - 23:20 #7
Taget fra et andet spørgsmål... måske kan det hjælpe dig.

Samtidig skal formatet være mm-dd-yyyy som jeg også har skrevet tidligere. Du kan måske bruge denne funktion til at omformatere dine datoer:

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

sql = "insert into tabel(enDato) values(#"& ConvertToSqlDate(request.form("dato")) &"#)"
Avatar billede kalp Novice
01. maj 2005 - 01:24 #8
læser i en anden tråd at du måske bare kan indsætte denne kode øverst

<% Session.LCID = 1030 %>

på din asp side.
Avatar billede mskjoldp Novice
03. maj 2005 - 10:59 #9
Hey kalp

jeg kan ikke konvetere mit dato format til dd/mm/yyyy for så at ligge dem i db'en. Derved mister jeg den nemme mulighed for at kunne sortere på dem, da året derved står til sidst som så fucker up i sorteringen.

Derfor må jeg, for at kunne bruge dit forslag, bytte om på mine data efter de er trukket ud af databasen, fra yy/mm/dd til dd/mm/yyyy ELLER bruge en anden kode end:
dato > (DateAdd("D", 29, date))

Men hvordan jeg gør det ene eller det andet ved jeg ikke helt. Jeg må søge lidt rundt og prøve mig frem, men at ændre mit datoformat inden jeg gemmer det, er ikke en option uden også at løse sorteringsproblemet der følger i kølevandet...
Avatar billede mskjoldp Novice
03. maj 2005 - 11:20 #10
hmmm har prøvet mig frem med denne kode:

    Dim arr, alternativeDate2
    Function valEgress(ByVal dato)
        arr = split(Date, "-")
        alternativeDate2 = Right(arr(2),2) & "/" & arr(1) & "/" & arr(0)
        If dato > (DateAdd("D", 29, alternativeDate2)) Then
            valEgress = "style=""color:white;background-color:brown;"" "
        Elseif dato < (DateAdd("D", 29, alternativeDate2)) Then
            valEgress = "style=""color:white;background-color:blue;"" "
        Elseif dato = "" Then
            valEgress = ""
        End if
    End function

hvor dato = :
05/05/03
el.
05/03/17
el.
05/04/28
mf. ...

Men koden giver kun udslag i: dato > (DateAdd....

Hvorfor det?
Avatar billede mskjoldp Novice
03. maj 2005 - 12:49 #11
er det fordi jeg har skiftet date ud med alternativeDate2 ?
Avatar billede mskjoldp Novice
05. maj 2005 - 17:52 #12
Denne funktion mener jeg gerne skulle give udslag i andet end den første valEgress:

    Dim varDato, varD1, varD2, varD3
    Function valEgress(ByVal varD3)
        varDato = "06/01/04" 'bruges som test
        If varDato <> "" Then
        varD1 = split(varDato, "/")
        varD2 = (varD1(2) & "-" & varD1(1) & "-20" & varD1(0))
            If varD2 > (DateAdd("D", 29, date)) Then
                valEgress = "title="&varD2&"?"&date&" style=""color:white;background-color:blue;"" "
            Elseif varD2 < (DateAdd("D", 29, date)) Then
                valEgress = "style=""color:white;background-color:black;"" "
            Elseif varD2 = "" Then
                valEgress = ""
            End if
        End if
    End function

men jeg kan kun få den til at reagere som om varD2 ALTID er > end (DateAdd("D", 29, date))

Hvorfor det?
Avatar billede mskjoldp Novice
05. maj 2005 - 18:03 #13
Har løst det. J skulle bruge datediff istedet for dateadd:

    Dim varDato, varD1, varD2, varD3
    Function valEgress(ByVal varDato)
'        varDato = "05/04/19" 'bruges som test
        If varDato <> "" Then
        varD1 = split(varDato, "/")
        varD2 = varD1(2) & "-" & varD1(1) & "-20" & varD1(0)
            If Datediff("D", varD2, date) > 29 Then
                valEgress = "title="&varD2&"?"&date&" style=""color:white;background-color:blue;"" "
            Elseif Datediff("D", varD2, date) < 29 Then
                valEgress = "style=""color:white;background-color:black;"" "
            Elseif varD2 = "" Then
                valEgress = ""
            End if
        End if
    End function


points til mig ;D
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