Avatar billede chaser64 Nybegynder
30. august 2003 - 21:57 Der er 12 kommentarer og
1 løsning

Udvælgelse af dato

Jeg har lavet en funktion, hvor brugere angiver to datoer, systemet skal så udvælge de data hvor feltet dato ligger mellem de to. Jeg gør det med følgende Sql sætning:
<%
strConnect = "Data Source=" & Server.Mappath("stats.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"
set Con = server.createobject ("ADODB.connection")
Con.open strConnect
i = 0
set objrec = server.createobject ("ADODB.recordset")
SQL = "SELECT * FROM hits where Dato >= #" & request("Fra") & "# and Dato <= #" & request("Til") & "# ;"
Set objrec = Con.Execute(SQL)
do while not objrec.EOF %>
<% objrec.movenext
i = i + 1
loop
%>
I perioden er der <%=i%> hits

Det virker fint nok når datoerne ligger i august, men hvis jeg sætter feltet "Til" til en dato i f.eks. september finder den slet ingen data. Noget forslag?
Avatar billede hossein Nybegynder
30. august 2003 - 22:19 #1
hvordan formatere du datoen? dansk engelsk?
prøv at sætte det i toppen af din side:
<%session.lcid=1030%>
Avatar billede hossein Nybegynder
30. august 2003 - 22:22 #2
Med formatering mener jeg: dd-mm-yyyy eller yyyy-mm-dd. Når man indsætter dato i sccess skal man formatere datoen til ISO standard: yyyy-mm-dd det er en bug i access.
Avatar billede chaser64 Nybegynder
30. august 2003 - 22:23 #3
Kan jeg få dig til at uddybe det en anelse?
Avatar billede chaser64 Nybegynder
30. august 2003 - 22:27 #4
Jeg angiver datoen f.eks. 19-08-2003
Avatar billede hossein Nybegynder
30. august 2003 - 22:39 #5
så skal man finde ud af at serveren er dansk eller engelsk/amerikansk indstillet hvis du skriver dansk format 19-08-2003 dd-mm-yyyy hvis serveren er amerikansk så din dato bliver 08/19/2003 dvs mm-dd-2003
prøv at indsætte det i toppen af siden:
<%session.lcid=1030%> dette formatere datoen til den danske format hvis serveren er amerikansk du kan bruge det.
Avatar billede chaser64 Nybegynder
30. august 2003 - 22:40 #6
Det har jeg gjort, stadig samme fejl.
Avatar billede hossein Nybegynder
30. august 2003 - 22:48 #7
prøv med denne funktion:
Function FormatMinDato(Datoen)
    Dim strYYYY
    Dim strMM
    Dim strDD

        strYYYY = CStr(DatePart("yyyy", Datoen))

        strMM = CStr(DatePart("m", Datoen))
        If Len(strMM) = 1 Then strMM = "0" & strMM

        strDD = CStr(DatePart("d", Datoen))
        If Len(strDD) = 1 Then strDD = "0" & strDD

        FormatMinDato = strDD & "-" &  strMM & "-" & strYYYY

End Function
%> 
Også når du skal skrive ud:
<% = FormatMinDato(rsPresse.Fields("dato")) %>
Avatar billede hossein Nybegynder
30. august 2003 - 22:56 #8
Hvordan går det? du kan også prøve og ædre denne linie i funktionen til:
FormatMinDato = strYYYY & "-" &  strMM & "-" & strDD
Avatar billede chaser64 Nybegynder
30. august 2003 - 22:57 #9
Sidder lige og prøver at implementere det, skal nok vende tilbage så snart jeg ved noget :)
Avatar billede chaser64 Nybegynder
30. august 2003 - 23:02 #10
Så virkede det, opretter du lige et svar, får du pointene. Kan du evt. lige svare på dette "bonus spørgsmål"? Min Sql ligning ser nu således ud:

SQL = "SELECT * FROM hits where Dato >= #" & FormatMinDato(request("fra")) & "# and Dato <= #" & FormatMinDato(request("til")) & "# ;"

Min hvis jeg sætter request("til") til 30-08-2003 medtager den ikke de data der har datoen 30-08-2003, det gør den kun hvis jeg skriver 31-08-2003. Ved request("fra") virker det dog fint nok med at datoen er inklusiv.
Avatar billede chaser64 Nybegynder
30. august 2003 - 23:06 #11
Nevermind, har selv ordnet det. Så hvis du bare opretter et svar får du pointene.
Avatar billede hossein Nybegynder
30. august 2003 - 23:06 #12
ok!
Avatar billede chaser64 Nybegynder
30. august 2003 - 23:07 #13
Sådan, mange tak for hjælpen og fortsat god aften :o)
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