/ 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
Dato og Klokkeslæt
Fra : bsn


Dato : 25-08-04 22:09

Hej NG

igen-igen-igen

Mine datoer og klokkeslæt kokser...
Findes der ikke en éntydig måde at fastslå en dato og et klokkeslæt.
Jeg har brugt DateSerial og TimeSerial men det kokser.
Inputtet kommer fra en form.
Jeg konverterer inputtet med DateSerial og TimeSerial på valideringssiden.
Jeg får ikke datoer og tidspunkter valideret rigtigt.
Jeg tjekker om datoen er en søndag "=vbSunday"
Jeg tjekker om klokkeslæt er ledigt.
Jeg tjekker i en funktion, om klokkeslættet er udenfor åbningstid
"TimeSerial"
If formdato = vbMonday Then
Aabne="10:00"
Lukke="18:00"
End If
vbTuesday
bla...bla...bla
Help please...
Bjarne




 
 
Christian M. Nielsen (26-08-2004)
Kommentar
Fra : Christian M. Nielsen


Dato : 26-08-04 09:18

Vi skal nok have nogle fejlmeddelelser samt se koden der giver
fejlmeddelelsen for at kunne hjælpe dig med det præcise problem. Jeg går ud
fra at du allerede ar læst denne artikel? http://asp-faq.dk/article/?id=98

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.



"bsn" <bsn_NoSpam_@oncable.dk> wrote in message
news:412cffcf$0$205$edfadb0f@dread14.news.tele.dk...
> Hej NG
>
> igen-igen-igen
>
> Mine datoer og klokkeslæt kokser...
> Findes der ikke en éntydig måde at fastslå en dato og et klokkeslæt.
> Jeg har brugt DateSerial og TimeSerial men det kokser.
> Inputtet kommer fra en form.
> Jeg konverterer inputtet med DateSerial og TimeSerial på valideringssiden.
> Jeg får ikke datoer og tidspunkter valideret rigtigt.
> Jeg tjekker om datoen er en søndag "=vbSunday"
> Jeg tjekker om klokkeslæt er ledigt.
> Jeg tjekker i en funktion, om klokkeslættet er udenfor åbningstid
> "TimeSerial"
> If formdato = vbMonday Then
> Aabne="10:00"
> Lukke="18:00"
> End If
> vbTuesday
> bla...bla...bla
> Help please...
> Bjarne
>
>
>



bsn (26-08-2004)
Kommentar
Fra : bsn


Dato : 26-08-04 13:46


"Christian M. Nielsen" <look.for.it@my.webpage> skrev i en meddelelse
news:412d9cbc$0$13832$ba624c82@nntp05.dk.telia.net...
> Vi skal nok have nogle fejlmeddelelser samt se koden der giver
> fejlmeddelelsen for at kunne hjælpe dig med det præcise problem.
Der er ingen fejlmeddelelse - datoer og tidspunkter valideres bare forkert,
kan jeg se på mine svar.

> Jeg går ud
> fra at du allerede ar læst denne artikel? http://asp-faq.dk/article/?id=98
Ja, det var der jeg fandt dateserial og timeserial

Her er hele koden:

kode begynd:

<%
'''Kovertér input fra formen...
tDato = "DateSerial(" & Year(request.form.item("txtDato")) & ", " &
Month(request.form.item("txtDato")) & ", " &
Day(request.form.item("txtDato")) & ")"
tTid = "TimeSerial(" & Hour(request.form.item("txtTid")) & ", " &
Minute(request.form.item("txtTid")) & ", " &
Second(request.form.item("txtTid")) & ")"

'''Tjek om dato ligger før dags dato...
If tDato < "DateSerial(" & Year(Date) & ", " & Month(Date) & ", " &
Day(Date) & ")" Then
Response.Write "Datoen du har valgt er før dags dato" & "<br>"
Response.Write "Klik på tilbageknappen, og vælg en ny dato"
Response.End
End if

'''Tjek om dato er en søndag...
If DatePart("w", request.form.item("txtDato")) = vbSunday Then
Response.Write "Datoen du har valgt er en søndag" & "<br>"
Response.Write "Vi holder lukket om søndagen"
Response.End
End if

Call Aabningstid(Aabne, Lukke)

'''Konvertér åbningstider...
tAabne = "TimeSerial(" & Hour(Aabne) & ", " & Minute(Aabne) & ", " &
Second(Aabne) & ")"
tLukke = "TimeSerial(" & Hour(Lukke) & ", " & Minute(Lukke) & ", " &
Second(Lukke) & ")"

'''Tjek om tiden ligger uden for åbningstiden...
If tTid < tAabne OR tTid > tLukke THEN
Response.write "Det valgte tidspunkt er uden for åbningstiden"
Response.end
End If

'''Find ud af om tiden er ledig...
Conn.Open DSNName
Sql = "SELECT * FROM qryTid WHERE Dato=" & tDato & " AND " & tTid & " >=
FraTid AND " & tTid & " < TilTid"
RS.Open Sql, Conn, 3, 3
If RS.eof Then
Response.write "<p><font color=" & "#FF0000" & ">" & "Tiden d. " &
request.form.item("txtDato") & _
" kl. " & request.form.item("txtTid") & " er ledig" & "</font></p><br>"
ELSE
Response.write "<p><font color=" & "#FF0000" & ">" & "Tiden d. " &
request.form.item("txtDato") & _
" kl. " & request.form.item("txtTid") & " er optaget" & "</font></p><br>"
End If

Set Rs=Nothing
Set Conn=Nothing

'--------------------Funktioner---------------------

'''Find ud af åbningstiden...
Function Aabningstid(Aabne, Lukke)
If DatePart("w", request.form.item("txtDato")) = vbMonday Then
Aabne = "10:00"
Lukke = "16:00"
End If
If DatePart("w", request.form.item("txtDato")) = vbTuesday Then
Aabne = "09:00"
Lukke = "17:30"
End If
If DatePart("w", request.form.item("txtDato")) = vbWednesday Then
Aabne = "09:00"
Lukke = "17:30"
End If
If DatePart("w", request.form.item("txtDato")) = vbThursday Then
Aabne = "10:00"
Lukke = "19:00"
End If
If DatePart("w", request.form.item("txtDato")) = vbFriday Then
Aabne = "10:00"
Lukke = "18:00"
End If
If DatePart("w", request.form.item("txtDato")) = vbSaturday Then
Aabne = "08:00"
Lukke = "12:00"
End If
End Function
%>

kode slut

Bjarne



Jens Gyldenkærne Cla~ (26-08-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 26-08-04 14:30

bsn skrev:

> tDato = "DateSerial(" & Year(request.form.item("txtDato")) &
> ", " & Month(request.form.item("txtDato")) & ", " &
> Day(request.form.item("txtDato")) & ")"

Frem og tilbage er lige langt. Ovenstående kode laver en dato ud
fra formelementet txtDato - men da du benytter Year/Month/Day-
funktionerne direkte på datoen, er du afhængig af at asp opfatter
datoen korrekt.

Det kan _muligvis_ klares ved at sætte LCID, men personligt ville
jeg bruge tekst-funktioner til at trække datoelementerne ud.
Problemet med din nuværende metode er at du ikke opnår mere end
hvis du havde skrevet:

   tDato = CDate(request.Form("txtDato"))


Problemet er at de parametre du giver til DateSerial kan blive
forkerte når du bruger Month og Day.

Her er en metode der anvender streng-funktioner i stedet:

Dim datoArr, strDato, tDato

strDato = Request.form("txtDato")
datoArr = Split(strDato, "-") ' Forudsætter datoer som 22-3-2004
tDato = DateSerial( datoArr(2), datoArr(1), datoArr(0) )

Split-metoden deler en streng op i et array. Den tænker ikke over
rækkefølgen af måned og dag - for den arbejder slet ikke med
teksten som en dato. Det er i dette tilfælde en fordel.

Hvis du bruger punktum eller skråstreg som skilletegn, kan du bare
sætte det ind som parameter til Split i stedet for bindestregen.
Men datoværdien skal bruge samme skilletegn - altså enten
22.3.2004, 22-3-2004 eller 22/3/2004 - ikke 22-3/2004 eller
lignende.

Det vil nok også være en ide at lave et fejltjek efter split-
kommandoen for at sikre at der er tre værdier - hverken mere eller
mindre - i arrayet.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

bsn (27-08-2004)
Kommentar
Fra : bsn


Dato : 27-08-04 17:07


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
>
> Dim datoArr, strDato, tDato
>
> strDato = Request.form("txtDato")
> datoArr = Split(strDato, "-") ' Forudsætter datoer som 22-3-2004
> tDato = DateSerial( datoArr(2), datoArr(1), datoArr(0) )
>
> Split-metoden deler en streng op i et array. Den tænker ikke over
> rækkefølgen af måned og dag - for den arbejder slet ikke med
> teksten som en dato. Det er i dette tilfælde en fordel.
Ok...
> Det vil nok også være en ide at lave et fejltjek efter split-
> kommandoen for at sikre at der er tre værdier - hverken mere eller
> mindre - i arrayet.
De er der godt nok...

Kan det samme laves med klokkeslættet ?
Jeg har prøvet, uden held...

strTid = Request.form("txtTid")
datoArr = Split(strTid, ":") ' Forudsætter klokkeslæt som 10:00
tTid = TimeSerial( timeArr(1), timeArr(0) )

den giver fejl:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typer stemmer ikke overens: 'timeArr'
/m_design/bestil_tid/tjektid.asp, line 24

Bjarne




Jens Gyldenkærne Cla~ (27-08-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-08-04 19:01

bsn skrev:


> strTid = Request.form("txtTid")
> datoArr = Split(strTid, ":") ' Forudsætter klokkeslæt som
> 10:00 tTid = TimeSerial( timeArr(1), timeArr(0) )

Mon ikke du skal rette datoArr til timeArr i anden linje?

Derudover skal TimeSerial vist også have tre parametre - og her i
rækkefølgen time, minut, sekund.

Alt i alt vil jeg prøve med:

strTid = Request.form("txtTid")
timeArr = Split(strTid, ":")
tTid = TimeSerial( timeArr(0), timeArr(1), timeArr(2) )
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

bsn (29-08-2004)
Kommentar
Fra : bsn


Dato : 29-08-04 17:33


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
> Alt i alt vil jeg prøve med:
>
> strTid = Request.form("txtTid")
> timeArr = Split(strTid, ":")
> tTid = TimeSerial( timeArr(0), timeArr(1), timeArr(2) )

Jeg får en fejl i mit udtryk:
[Microsoft][ODBC Microsoft Access-driver]
Der er en syntaksfejl, fordi der mangler en operator. i
forespørgselsudtrykket :
"Dato=30-08-2004 AND 11:00:00 >= FraTid AND 11:00:00 < TilTid"
Kan du se hvad der mangler ?
Bjarne



Jens Gyldenkærne Cla~ (29-08-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-08-04 20:24

bsn skrev:

> Jeg får en fejl i mit udtryk:
> [Microsoft][ODBC Microsoft Access-driver]
> Der er en syntaksfejl, fordi der mangler en operator. i
> forespørgselsudtrykket :

Jeg troede at du skulle bruge datoerne i asp - og ikke i Access. I
sidstnævnte tilfælde skal du igen undlade at arbejde med
tekstrepræsentationer af datoerne, men i stedet benytte DateSerial
og TimeSerial - præcis som beskrevet i
<http://asp-faq.dk/article/?id=98>

> "Dato=30-08-2004 AND 11:00:00 >= FraTid AND 11:00:00 < TilTid"

Forespørgslen fejler på grund af manglende markering af datoerne
(enten med ' eller # - kan ikke huske Access' opførsel her) - men
grundproblemet er at du skal have tekstrepræsentationerne af datoer
_helt_ ud af din forespørgsel. Du skal have DateSerial/Timeserial
ind her.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

bsn (30-08-2004)
Kommentar
Fra : bsn


Dato : 30-08-04 14:41


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns9554D9C58C6BBjcdmfdk@gyrosmod.cybercity.dk...
> bsn skrev:
>
> > Jeg får en fejl i mit udtryk:
> > [Microsoft][ODBC Microsoft Access-driver]
> > Der er en syntaksfejl, fordi der mangler en operator. i
> > forespørgselsudtrykket :
>
> Jeg troede at du skulle bruge datoerne i asp - og ikke i Access. I
> sidstnævnte tilfælde skal du igen undlade at arbejde med
> tekstrepræsentationer af datoerne, men i stedet benytte DateSerial
> og TimeSerial - præcis som beskrevet i
> <http://asp-faq.dk/article/?id=98>
Jeg skal begge dele...

> > "Dato=30-08-2004 AND 11:00:00 >= FraTid AND 11:00:00 < TilTid"
>
> Forespørgslen fejler på grund af manglende markering af datoerne
> (enten med ' eller # - kan ikke huske Access' opførsel her) - men
> grundproblemet er at du skal have tekstrepræsentationerne af datoer
> _helt_ ud af din forespørgsel. Du skal have DateSerial/Timeserial
> ind her.
Her er min SQL:
SELECT * FROM qryTid WHERE Dato=DateSerial(2004, 8, 30) AND 'TimeSerial(12,
0, 0) >= TimeSerial(Hour(FraTid), Minute(FraTid), Second(FraTid))AND
TimeSerial12, 0, 0) < TimeSerial(Hour(TilTid), Minute(TilTid),
Second(TilTid))'
SQL slut

Og her er min kode:
Sql = "SELECT * FROM qryTid WHERE Dato=" & "DateSerial(" &
Year(Request.form("txtDato")) & ", " & Month(Request.form("txtDato")) & ", "
& Day(Request.form("txtDato")) & ")" _
& " AND '" & "TimeSerial(" & Hour(Request.form("txtTid") & ":00") & ", " &
Minute(Request.form("txtTid") & ":00") & ", " &
Second(Request.form("txtTid") & ":00") & ")" _
& " >= " & "TimeSerial(" & "Hour(" & "FraTid" & "), " & "Minute(" & "FraTid"
& "), " & "Second(" & "FraTid" & "))" _
& "AND " & "TimeSerial(" & Hour(Request.form("txtTid") & ":00") & ", " &
Minute(Request.form("txtTid") & ":00") & ", " &
Second(Request.form("txtTid") & ":00") & ")" _
& " < " & "TimeSerial(" & "Hour(TilTid), Minute(TilTid), Second(TilTid))'"
kode slut

Der kommer en fejlmelding: "Uspecificeret fejl"
/m_design/bestil_tid/tjektid.asp, line 59 <----- Det er
linjen med "Conn.Open DSNName"

Kan du se fejlen...
Bjarne



Jens Gyldenkærne Cla~ (30-08-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 30-08-04 14:58

bsn skrev:

> Her er min SQL:
> SELECT * FROM qryTid WHERE Dato=DateSerial(2004, 8, 30)

Kodedelen herover er syntaktisk i orden - men kan måske alligevel
volde problemer fordi du risikerer at sammenligne en dato med tid
(Dato-feltet) med en dato uden tid (DateSerial).

Det kan du slippe for ved at bruge Datediff (noget i retning af
DateDiff('d', Dato, DateSerial(2004, 8, 30) = 0 )

> AND 'TimeSerial(12, 0, 0)

Her har du et '-tegn for meget.


> TimeSerial(Hour(TilTid), Minute(TilTid), Second(TilTid))'

- og det samme her.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

bsn (30-08-2004)
Kommentar
Fra : bsn


Dato : 30-08-04 20:00


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev >
> > Her er min SQL:
> > SELECT * FROM qryTid WHERE Dato=DateSerial(2004, 8, 30)
>
> Kodedelen herover er syntaktisk i orden - men kan måske alligevel
> volde problemer fordi du risikerer at sammenligne en dato med tid
> (Dato-feltet) med en dato uden tid (DateSerial).
>
> Det kan du slippe for ved at bruge Datediff (noget i retning af
> DateDiff('d', Dato, DateSerial(2004, 8, 30) = 0 )
Kan ikke helt forstå meningen...

> > AND 'TimeSerial(12, 0, 0)
>
> Her har du et '-tegn for meget.
>
>
> > TimeSerial(Hour(TilTid), Minute(TilTid), Second(TilTid))'
>
> - og det samme her.
Har fjernet dem begge ...

Fatter ikke hvad der er galt...
Jeg kan lave en søgning, som finder et resultat frem - men godt nok
evalueret forkert.
Prøver jeg så en gang til med et andet tidspunkt melder den "Uspecificeret
fejl"
Sådan noget shittt...
Bjarne




bsn (01-09-2004)
Kommentar
Fra : bsn


Dato : 01-09-04 19:57


"bsn" <bsn_NoSpam_@oncable.dk> skrev

> Jeg kan lave en søgning, som finder et resultat frem - men godt nok
> evalueret forkert.
Evaluerer stadig forkert...
Har optaget tidspunkt 11:00 - 12:00
Laver jeg en søgning på 12:00, skal den vise Ledig - men den viser optaget -
nogen idéer (

> Prøver jeg så en gang til med et andet tidspunkt melder den "Uspecificeret
> fejl"
Har fundet en løsning :
I databasens Funktioner_Indstillinger_Avanceret : Åbn databaser med låsning
på postniveau - uncheck box - restart pc...
Så får jeg ikke "Uspecificeret fejl" mere.
Bjarne




bsn (02-09-2004)
Kommentar
Fra : bsn


Dato : 02-09-04 14:37


"bsn" <bsn_NoSpam_@oncable.dk> skrev>
> > Jeg kan lave en søgning, som finder et resultat frem - men godt nok
> > evalueret forkert.
> Evaluerer stadig forkert...
> Har optaget tidspunkt 11:00 - 12:00
> Laver jeg en søgning på 12:00, skal den vise Ledig - men den viser
optaget -
Har løst det ved at lave klokkeslæt om til Long...
Bjarne



Jens Gyldenkærne Cla~ (26-08-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 26-08-04 09:52

bsn skrev:

> Mine datoer og klokkeslæt kokser...
> Findes der ikke en éntydig måde at fastslå en dato og et
> klokkeslæt. Jeg har brugt DateSerial og TimeSerial men det
> kokser. Inputtet kommer fra en form.
> Jeg konverterer inputtet med DateSerial og TimeSerial på
> valideringssiden.

Hvordan gør du? Vis lidt af din kode, så er det lettere at vurdere
evt. fejl.

Husk at hvis du skal have datoerne ned i en database, er det
databasens datofunktioner (DateSerial/TimeSerial for Access) du
skal bruge, _ikke_ asp/vbscript-udgaverne af de samme funktioner.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

bsn (26-08-2004)
Kommentar
Fra : bsn


Dato : 26-08-04 13:49


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
> Hvordan gør du? Vis lidt af din kode, så er det lettere at vurdere
> evt. fejl.
Se andet indlæg i tråden...

> Husk at hvis du skal have datoerne ned i en database, er det
> databasens datofunktioner (DateSerial/TimeSerial for Access) du
> skal bruge, _ikke_ asp/vbscript-udgaverne af de samme funktioner.
Ok - skal jeg have på et tidspunkt...
Hvad er forskellen ?

Bjarne



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste