Avatar billede hanne-rk Nybegynder
15. november 2004 - 00:19 Der er 13 kommentarer og
1 løsning

Mindre end eller lig med virker ikke?

Hvorfor virker det ikke med >= i en søgning?

strSQL = "Select * from statistik where kundenummer = " & kundenummer & " and dato >= #" & fra & "# and dato =< #" & til&"#"

Og hvordan skal det ellers gøres?
Avatar billede fennec Nybegynder
15. november 2004 - 08:10 #1
Det er sikkert dit dato format der er problemet. Access godtager mm-dd-yyyy og yyyy-mm-dd formatet, så du skal sikkert have lavet om på "fra" og "til".
Avatar billede hooh Nybegynder
15. november 2004 - 11:17 #2
fandt et link til dig..

http://eksperten.dk/spm/6089
Avatar billede hooh Nybegynder
15. november 2004 - 11:18 #3
ooh undskyld, jeg overså at du allerede brugte ##
så bare glem min kommentar
Avatar billede hooh Nybegynder
15. november 2004 - 11:20 #4
Prøv at udskriv din strSQL.

Så kan du copy/paste din sql ind i Access og finde frem til den rigtige sql. evt paste den ind her
Avatar billede fennec Nybegynder
15. november 2004 - 11:26 #5
Du kan lige så godt få den funktion jeg bruger til at formatere datoer til Access med.

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

strSQL = "Select * from statistik where kundenummer = " & kundenummer & " and dato >= #" & ConvertToSqlDate(fra) & "# and dato =< #" & ConvertToSqlDate(til) &"#"
Avatar billede hooh Nybegynder
15. november 2004 - 12:32 #6
Det virker fint på min..

Har du sat dit datofelt rigtig??

Det skal sættes "Dato og klokkeslet"
Avatar billede hooh Nybegynder
15. november 2004 - 12:37 #7
det var da jeg lavede min egen sql.
yyyy-mm-dd og dd-mm-yyyy (de virker)

Nu prøvede jeg så lige dit
mm-dd-yyyy (det virker ikke)

Du kan ikke bruge det format.

Du skal ændre din Function ConvertToSqlDate(dato)


    ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear

skal være

    ConvertToSqlDate = SQLDay&"-"&SQLMonth&"-"&SQLYear
Avatar billede hooh Nybegynder
15. november 2004 - 12:40 #8
hehe

jeg læser alt forkert idag.....

den metode du bruge fennec... den virker ikke på min.
Avatar billede fennec Nybegynder
15. november 2004 - 12:58 #9
hooh >>
Min Access tager ikke dd-mm-yyyy formatet, eller det vil sige det kan den godt. Den kan godt finde ud af at 31-12-2004 er den 31 dec, men 10-01-2004 er den 1. okt. Der er præsis den samme problemstilling med isDate() funktionen i ASP, som validere "31-12-2004" og "12-31-2004" til true, selv om en af dem burde være forkert.

Du har måske en anden version af Access end mig, men alle dem jeg har hjulpet her på E med samme problem, har alle skulle bruge mm-dd-yyyy formatet (når det er Access). Nogle gange har man kunne bruge yyyymmdd formatet, som er mere global, da det format virker i andre databaser (MySQL og MS-SQL)
Avatar billede hooh Nybegynder
15. november 2004 - 14:19 #10
Hvis man sætter session.LCID=1033

så giver begge formater samme resultat:
Response.Write FormatDateTime("31-12-2004") //12/31/2004
Response.Write FormatDateTime("12-31-2004") //12/31/2004
Avatar billede fennec Nybegynder
15. november 2004 - 15:48 #11
Nu er det her jo danmark, så jeg foretrækker at køre i dansk format, som jo er dd-mm-yyyy, og det format vil INGEN af de databaser, jeg bruger, fungere 100% med. MySQL og MS-SQL vil slet ikke tage det format, og Access registrere ofte formatet forkert. Derfor convertere jeg formatet til et databasen bruger. Men først kører jeg det gennem et tjek, som sikre at formatet er indtastet i DK format:

function MyIsDate(dato)
dim returVal
returVal = false
if len(dato) = 10 then
  if isnumeric(left(dato,2)) then
  if cint(left(dato,2)) >= 1 and cint(left(dato,2)) <= 31 then
    if isnumeric(mid(dato,4,2)) then
    if cint(mid(dato,4,2)) >= 1 and cint(mid(dato,4,2)) <= 12 then
      if isnumeric(right(dato,4)) then
      if mid(dato,3,1) = "-" and mid(dato,6,1) = "-" then
        if isDate(dato) then
        returVal = true
        end if
      end if
      end if
    end if
    end if
  end if
  end if
end if
MyIsDate = returVal
end function
Avatar billede hooh Nybegynder
15. november 2004 - 18:31 #12
Det tjek du laver vil vel kun være gyldig hvis man måned er mindre end 12.

hvis der kommer et datoformat der hedder 8-9-2004 og 9-8-2004
så bliver det jo svært at se hvilke af de 2 der er den rigtige, eller hva?

Jeg håber hanne-rk har fået løst sit problem :-)
Avatar billede hanne-rk Nybegynder
15. november 2004 - 22:33 #13
Undskyld jeg ikke har været ved min pc i dag, men nu fik jeg den da tændt:-)

Tak for de mange bud, men jeg tror i mis´forstå en smule.

Jeg har løst formateringsproblemet på enm lidt "storm p" agtig måde ved at splitte resultatet op med tegnet "-", men mit problem er nu at jeg skal have den første i måneden med også (altså dag =>01 og ikke kun > 01)

Jeg håber det er bedre formuleret.
Jeg kan jo dårligt bruge >00 da datoformatet ikke vil acceptere d "nul'te"
Avatar billede fennec Nybegynder
16. november 2004 - 08:31 #14
=> burde virke, men det er ikke sikkert at <= virker, det kommer an på hvilke informationer du gemmer i databasen. Hvis du ikke har timer/min med burde der ikke være nogle problemer, men har du bliver "16-11-2004" opfattet som "16-11-2004 00:00:00", og laver du en <= på den får du ikke alle dem på dagen med. Hvis du derfor har timer/min med skal du sætte det på søge felterne også.

select * from DinTabel where datoFelt >= #11-16-2004 00:00:00# and datoFelt <= #11-17-2004 23:59:59#
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