Avatar billede nadster Nybegynder
07. juli 2004 - 23:33 Der er 4 kommentarer og
1 løsning

validering på date giver forkert resultat

yo der!

Jeg har en søgefunktion hvor brugeren kan indsætte en fra-dato og en til-dato, som der kan søges. For at forhindre at der der f.eks. søges på 01-01-2004 -> 12-12-2003 eller at den ene af datoerne bliver sat til at være frem i tiden som f.eks. 25-11-2004 har jeg lavet et par if'er til at forhindre dette. Men jeg synes ikke lige de virker efter hensigten.

Hvis nogen kan se hvad jeg gør forkert, så er du/i sgu for seje...

Mine if'er ser ud som følger:

sdate1 = formatdatetime(request.form("txtStartDate"),2)
edate1 = formatdatetime(request.form("txtEndDate"),2)

if sdate1 > formatdatetime(now(),2) then
  sdate1 = formatdatetime(now(),2)
else
  sdate1 = sdate1
end if

if edate1 > formatdatetime(now(),2) then
  edate1 = formatdatetime(now(),2)
else
  edate1 = edate1
end if

if sdate1 > edate1 then
  edate1 = sdate1
else
  edate1 = edate1
end if


det er problemet er at jeg får edate1 til at være dags dato, selvom edate1 både er sat til at være før dags dato og såmænd også til at være efter sdate1.

nogen ideer?
Avatar billede phineas_phreak Nybegynder
08. juli 2004 - 01:06 #1
<%
Session.LCID = 1030 ' dansk datoformat

dato1 = #09-08-1981#
dato2 = #08-02-1982#



if dato1 > dato2 then
  dato1 = date()
end if

if dato1 > date() then
  dato1 = date()
end if

%>


Er dette ikke tilstrækkeligt ?

den øverste linje sørger for at dit datoformat er dansk hele vejen igennem så der ikke smutter en forkert dato ind. det er altid en god ting.

#06-02-1983# med ## omkring viser kun at det er dato, men jeg er ikke sikker på det er nødvendigt. Det er vidst tilstrækkeligt at opgive det som en strengvariabel ved bare at skrive
dato1 = "06-02-1983"

og hvis du skal hente det fra en form så skriv

dato1 = request.form("txtstartDate")

skal det skrives på den anden måde kan følgende gøres:
dato1 = #" & request.form("txtstartDate") &"#

Håber du kan bruge det til noget
Avatar billede phineas_phreak Nybegynder
08. juli 2004 - 01:08 #2
fik ik lige den sidste test med dato2 med:

if dato2 > date() then
  dato2 = date()
end if

istedet for formatdatetime(now(),2) kan du altså bruge date()
Avatar billede nadster Nybegynder
08. juli 2004 - 09:46 #3
nah, må indrømme at det ikke lige fungere.

jeg får alle datoer til at være dags dato med det du skrev. Plus, når jeg skriver dato1 = #" & request.form("txtStartDate") & "# så opfatter den nu det ikke rigtigt som asp, men det imellem de to " " bliver jo opfattet som en string, så det kan jeg ikke bruge...

session-lcid er med via en include tidligere i filen. Grunden til at jeg ikke bruger date(), er at i den endelige version kommer dato fra en hjemmetlavet objekt, og skal derfor hente dato fra noget ala "objdate.getdatetime()". Den skal jo igennem en formatdate, derfor bruger jeg now() som midlertidig løsning indtil det andet er på plads.
Avatar billede nadster Nybegynder
08. juli 2004 - 10:50 #4
--lukker--
Avatar billede nadster Nybegynder
09. juli 2004 - 20:32 #5
lige en update.

fandt ud af, at jeg bare skulle bruge CDate() for hver dato, så kunne den sagtens validere på datoerne...
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