Avatar billede cyigen Nybegynder
09. januar 2001 - 00:07 Der er 19 kommentarer og
2 løsninger

Datoer

Hej alle eksperten brugere...

Jeg har et meget stort problem og det er om datoer..

Jeg bruger Access og min felt type er Tekst da jeg får nogle andre problemer hvis jeg sætter den til Dato og klokkeslæt.

I databasen er der mange forskellige datoer men når jeg så skal hente dem ned ved at jeg skrive Hvis datoen er mindre en dagens dato i dag så skal den skrives på siden eller sådan noget..

Den kode jeg vil vise nu er en count funktion:
--------------------------------------------
SQL = \"SELECT COUNT(Tarih) AS Sayi from Ilan WHERE Firma = False AND Tarih <= \'\" & Date & \"\'\"
------------------------------------------
Tarih = Den dato felt i database


Koden blander det hele sammen og vælger også nogen felter hvor Tarih er støre end Date!

Er der nogen som kan hjælpe mig med dette problem...
Avatar billede erikjacobsen Ekspert
09. januar 2001 - 00:15 #1
Hvis du skal bruge sammenligning skal dine datoer være på formen 2000-01-08
(eller lignende) hvis det er strenge, eller som det indbyggede date-format.
Avatar billede tpiil Nybegynder
09. januar 2001 - 00:22 #2
prøv at lave nogle # både foran og bag ved dato\'en!
Avatar billede jens Nybegynder
09. januar 2001 - 00:32 #3
Prøv evt. det her.

Er ikke sikker på om det virker, men prøv.

\"SELECT COUNT(Tarih) AS Sayi from Ilan WHERE Firma = False AND date(Tarih) <= \'\" & Date & \"\'\"
Avatar billede bjarke-b Nybegynder
09. januar 2001 - 07:06 #4
SQL = \"SELECT COUNT(Tarih) AS Sayi from Ilan WHERE Firma = False AND Tarih <= #Date#\"
Avatar billede erikjacobsen Ekspert
09. januar 2001 - 09:57 #5
Det hjælper ikke noget umiddelbart at sætte #...# på, da han siger formatet
er en streng. Men selvfølgelig hvis datatypen laves om til en Access-dato, så
skal det gøres.
Avatar billede kasseper Nybegynder
09. januar 2001 - 10:29 #6
Så længe at typen er strenge, vil en sammenlignings operator ( <= ) sammenligne længden af strengene......Jeg ved ikke om Access Kan håndtere det, men prøv evt. :
SQL = \"SELECT COUNT(Tarih) AS Sayi from Ilan WHERE Firma = False AND DateValue(Tarih) <= #\" & Date & \"#\"

Avatar billede erikjacobsen Ekspert
09. januar 2001 - 10:37 #7
Nej, <= på strenge vil sammenligne \"alfabetisk\", så \"abe\" < \"kat\" < \"mus\"
Dit andet forslag bør spørgeren prøve, kasseper ... god idé!
Avatar billede kasseper Nybegynder
09. januar 2001 - 10:59 #8
Arrrghhhh, det er sq ikke sjovt at deltage i et spg, hvor der er en underviser inde over....;)
Jeg er så glad for dine pædagogiske eksempler, erik *LOL*
Humlen må være at når det er en streng, så bliver det ikke tolket som andet end en streng....
Altså skal det konverteres til en dato før du kan sammenligne med en anden dato...
Avatar billede erikjacobsen Ekspert
09. januar 2001 - 11:08 #9
Ja, kasseper - det er nemlig den ene mulighed - den anden er som sagt at beholde den
som en streng og så skrive dags dato som f-eks. 2001-01-09, for så er
datorækkefølge det samme som alfabetisk rækkefølge.

Spændende at høre hvad spørgeren synes om vores diskussion...
Avatar billede kasseper Nybegynder
09. januar 2001 - 11:10 #10
Men det fede ved at konvertere til en dato er at, ( hvis det altså virker med DateValue ( ved at det gør på en SQL server...) ) så kan man også bruge f.eks. DateAdd, for at lægge timer dage minutter etc. til feltværdien fra basen, hvilket kan gøre din søgning meget kompleks, uden at bruge en kilometerlang SQL sætning....
Avatar billede cyigen Nybegynder
09. januar 2001 - 15:27 #11
SQL = \"SELECT COUNT(Tarih) AS Sayi from Ilan WHERE Firma = False AND DateValue(Tarih) <= #\" & Date & \"#\"


>>>>> Denne kode virkede heller ikk!

Kunne jeg få en kode på det forslag som du kom med erikjacobsen ( 2001-01-09 )

Og hvordan skal jeg skrive den nuværende dato i den format???

f.eks. når jeg skriver <%=Date%> så skriver de 01-01-2001    men hvordan får jeg den til at være på den anden måde??
Avatar billede cyigen Nybegynder
09. januar 2001 - 15:31 #12
Koden skal bruges til mange ting. Men jeg skriver lige en af de ting som det skal bruges til:

Koden er til at den skal vælge fra Annoncer hvor Annoncens dato(Tarih) som er indtastet med dateadd(\"d\", +30, date) er mindre end dagens dato...
Det som jeg skrive kan ikke finde ud årskift o.s.v.
Avatar billede kasseper Nybegynder
09. januar 2001 - 16:45 #13
Håber at det stadig er iorden jeg hjælper dig ????

for at få det på erik\'s form gør sådan her :
<%
dim mdr
dim dag
dim aar
mdr = Month(Date)
dag = Day(Date)
aar = year(Date)
datostreng = aar & \"-\" & mdr & \"-\" & dag

SQL = \"SELECT COUNT(Tarih) AS Sayi from Ilan WHERE Firma = False AND Tarih <= \'\" & datostreng & \"\'\"

%>
Kan gøre det....
Avatar billede erikjacobsen Ekspert
09. januar 2001 - 23:31 #14
nej, kasseper. For 2000-2-1 vil være større end 2000-12-1. Du skal sørge
for at få foranstillede nuller på:

mdr = Month(Date)
if mdr<10 then
  mdr = \"0\" % mdr
end if
dag = Day(Date)
if dag<10 then
  dag = \"0\" % dag
end if

Det burde gøre det... hehe... tror jeg nok

Avatar billede kasseper Nybegynder
10. januar 2001 - 15:00 #15
ikke % men &
Avatar billede kasseper Nybegynder
10. januar 2001 - 15:00 #16
ikke % men &
Avatar billede erikjacobsen Ekspert
10. januar 2001 - 15:18 #17
Jah, en lille tyrkfjel ... du har ganske ret
Avatar billede cyigen Nybegynder
10. januar 2001 - 19:50 #18
hvad skal jeg så indtaste i SQL sætningen?
Avatar billede cyigen Nybegynder
10. januar 2001 - 19:57 #19
mange tak jeg fandt selv ud af resten!!!

Jeg vil give erikjacobsen og kasseper 50% af pointsene ver er det ok??
Avatar billede cyigen Nybegynder
10. januar 2001 - 20:32 #20
inden jeg lukker denne spm. ned kan i så hjælpe mig med et problem!!!

hvordan får jeg den f.eks. til at sige
DateAdd(\"d\", +30, datestreng)

du får lige hele koden:

mdr = Month(Date)
dag = Day(Date)
aar = year(Date)
datostreng = aar & \"-\" & mdr & \"-\" & dag

DateAdd(\"d\", +20, datestreng)

altså hvordan får jeg den til at være 20 dage foran end den rigtige dato i den der format det:
år-mdr-dag ????
Avatar billede cyigen Nybegynder
11. januar 2001 - 14:59 #21
jeg har selv fundet ud af det...

Da i ikke har svaret på om det er iorden at jeg deler pointsene til jer 2 ( erikjacobsen og kasseper) vil jeg ikke høre noget brok.
( det høre man jo tit )
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