/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Problemer med at sammenligne datoer
Fra : Laurits Thomsen


Dato : 06-10-06 14:05

Hej
Jeg har lavet en validering af data fra en formular der skal
placeres i en access database. I valideringen sammenligner jeg en
startdato med en slutdato for at sikre mig, at startdatoen ikke
ligger efter slutdatoen. Min kode ser således ud:

først splitter jeg datoen op:

Function strDateToSql (value)
Dim dArr
   dArr=split( value & "","-")
   If ubound(dArr) = 2 AND checknumArr (dArr) then
   strDateToSql= "Dateserial ( " & _
      Cint (dArr(2)) & ", " &_
      Cint (dArr(1)) & ", " &_
      Cint (dArr(0)) & ")"
Else
   'Fejl - Forkert datoformat
   strDateToSql = "Null"
End If
End function

Function checkNumArr (varArr)
Dim i, boolOK
boolOK = True
for i = 0 To Ubound(varArr)
   If not IsNumeric (varArr(i)) Then
      boolOK = False
      Exit For
   End If
Next
checkNumArr =boolOK
End Function

strDateToSql(value)

...
senere kør jeg valideringen:
If strDateToSql(Request.Form("startdato"))>
strDateToSql(Request.Form("slutdato"))OR
Request.Form("startdato") ="" then
Response.write "<img src='image/stop.jpg' height='80' border='0'
alt='Du har lavet en fejl' ><br><b>Stop!</b><br><b>Start datoen
må ikke være senere end slutdatoen!</b><br> Gå et skridt tilbage
og indkasser ikke 200 kr."
Response.write "<br>Startdato:
"&FormatDateTime(Request.Form("startdato"),vbLongDate) &"<br>
Slutdato: "& FormatDateTime(Request.Form("slutdato"),vbLongDate)


Af en eller enden grund aktiveres fejlmeddelsen hvis min
startdato hedder 30-09-2006 og slutdatoen hedder 01-10-2006.
Umiddelbart ville jeg da mene, at 01-10-2006 ligger efter d.
30-09-2006. Hvad gør jeg galt??

Mvh
Laurits






--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (06-10-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-10-06 14:38

Laurits Thomsen skrev:

> Jeg har lavet en validering af data fra en formular der skal
> placeres i en access database. I valideringen sammenligner jeg en
> startdato med en slutdato for at sikre mig, at startdatoen ikke
> ligger efter slutdatoen.

Valideringen foretages i asp - ikke i databasen...

> Function strDateToSql (value)

- derfor skal du ikke bruge en funktion som strDateToSql. Formålet
med strDateToSql er at lave en "sikker" dato til brug i en sql-
sætning. Når du sammenligner datoer i asp, skal du lave en asp-dato
i stedet.


> If strDateToSql(Request.Form("startdato"))>
> strDateToSql(Request.Form("slutdato"))OR

Her sammenligner du derfor to tekstrepræsentationer af datoer - og
det fungerer ikke.

Du kan med en meget lille ændring af funktionen lave en udgave der
returnerer en asp-dato i stedet for en tekst/dateserial-dato:

Function strDateToDate (value)
   Dim dArr
   dArr=split( value & "","-")
   If ubound(dArr) = 2 AND checknumArr (dArr) then
       strDateToDate = Dateserial(Cint (dArr(2)), _
           Cint (dArr(1)), _
           Cint (dArr(0)))
   Else
       'Fejl - Forkert datoformat
      strDateToDate = Null
   End If
End function

Den kan bruges til din validering.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Laurits Thomsen (06-10-2006)
Kommentar
Fra : Laurits Thomsen


Dato : 06-10-06 14:48

> Function strDateToDate (value)
>    Dim dArr
>    dArr=split( value & "","-")
>    If ubound(dArr) = 2 AND checknumArr (dArr) then
>        strDateToDate = Dateserial(Cint (dArr(2)), _
>            Cint (dArr(1)), _
>            Cint (dArr(0)))
>    Else
>        'Fejl - Forkert datoformat
>       strDateToDate = Null
>    End If
> End function
>
> Den kan bruges til din validering.
Og derefter kan jeg lave lave følgende check?:

If strDateToDate(Request.Form("startdato"))>
strDateToDate(Request.Form("slutdato"))OR
Request.Form("startdato") ="" then
Response.write "<img src='image/stop.jpg' height='80' border='0'
alt='Du har lavet en fejl' ><br><b>Stop!</b><br><b>Start datoen
må ikke være senere end slutdatoen!</b><br> Gå et skridt tilbage
og indkasser ikke 200 kr."
Response.write "<br>Startdato:
"&FormatDateTime(Request.Form("startdato"),vbLongDate) &"<br>
Slutdato: "& FormatDateTime(Request.Form("slutdato"),vbLongDate)
?




--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (06-10-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-10-06 14:50

Laurits Thomsen skrev:

> Og derefter kan jeg lave lave følgende check?:

Ja.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Laurits Thomsen (09-10-2006)
Kommentar
Fra : Laurits Thomsen


Dato : 09-10-06 19:29

> Function strDateToDate (value)
>    Dim dArr
>    dArr=split( value & "","-")
>    If ubound(dArr) = 2 AND checknumArr (dArr) then
>        strDateToDate = Dateserial(Cint (dArr(2)), _
>            Cint (dArr(1)), _
>            Cint (dArr(0)))
>    Else
>        'Fejl - Forkert datoformat
>       strDateToDate = Null
>    End If
> End function

Dette giver en fejlmeddelse: Type mismatch: 'checknumArr'
Den værdi der hentes ind ser således ud: 30-09-2005


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (10-10-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-10-06 10:00

Laurits Thomsen skrev:

> Dette giver en fejlmeddelse: Type mismatch: 'checknumArr'
> Den værdi der hentes ind ser således ud: 30-09-2005

Hvilken linje får du fejl i? Hvordan ser den ud?
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Laurits Thomsen (12-10-2006)
Kommentar
Fra : Laurits Thomsen


Dato : 12-10-06 06:54


> > Dette giver en fejlmeddelse: Type mismatch: 'checknumArr'
> > Den værdi der hentes ind ser således ud: 30-09-2005
>
> Hvilken linje får du fejl i? Hvordan ser den ud?

Fejlen ser således ud:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'checknumArr'
/test/vikar/rettelse3.asp, line 86

Linie 85 - 87 ser således ud:
dArr=split( value & "","-")
If ubound(dArr) = 2 AND checknumArr (dArr) then
strDateToDate = Dateserial(Cint (dArr(2)), _

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste