Avatar billede musicchart.dk Nybegynder
07. december 2002 - 20:13 Der er 20 kommentarer og
1 løsning

Dato

Hej eksperter

I min database har jeg en fødselsdag skrevet et kortdatoformat (dd-mm-yyyy):

Så vil jeg hente hvem der i databasen der er den næste der har fødselsdag, jeg kan ikke bruge denne kode:


strSQL = "Select TOP 1 * From blaabog WHERE (fodselsdato >= date()) ORDER BY fodselsdato"
Set rs = Conn.Execute(strSQL)


....da der jo også er år på datoen, så det vil sige at den finder en fodselsdag for een der ikke er født endnu.

Så jeg skal bruge en måde at trække datoen uden år ud fra mit recordsæt i databasen, og derefter finde hvem der er den næste der har fødselsdag.

Er der en der kan hjælpe med det?


//Bjarke
Avatar billede Lasse Novice
07. december 2002 - 20:20 #1
uden at have testet det, men kan du ikke bruge noget a la:

SELECT MIN(fodselsdato) fra blaabog where (fodselsdato >= date())
Avatar billede musicchart.dk Nybegynder
07. december 2002 - 20:23 #2
jeg skal bruge en måde at trække datoen ud uden år... så hvis jeg får en dato:

04-01-1985 så skal jeg bruge 04-01
Avatar billede Lasse Novice
07. december 2002 - 20:27 #3
virker lidt maerkeligt for mig, da den anden maade giver dig den naeste foedselsdag... men hvis du er interesseret i det andet, saa har jeg lige et spg... hvilken db bruger du? Access?
Avatar billede musicchart.dk Nybegynder
07. december 2002 - 20:29 #4
Jeg bruger access. For det første så virker din kode ikke, er det ikke lidt psoudo. Og hvad jeg kan gennemskue, så er det akkurat det samme den gør, som min kode.
Avatar billede dark-mixer Nybegynder
07. december 2002 - 20:30 #5
Hvis du bruger en Access DB skal din SQL se således ud
SELECT TOP 1 * FROM blaabog WHERE fodselsdato >= DateValue('" & Date() & "');
Avatar billede musicchart.dk Nybegynder
07. december 2002 - 20:34 #6
dark-mixer >> den gør det samme som min kode, finder den næste dato, og da mine datoer i databasen også indeholder år, vil den finde fødselsdagen for folk der ikke er født endnu.
Avatar billede Lasse Novice
07. december 2002 - 20:36 #7
ja, det var vist lidt af en no brainer... undskyld
Avatar billede musicchart.dk Nybegynder
07. december 2002 - 22:34 #8
så har jeg opdateret point til 60, da jeg virkelig har brug for hjælp!
Avatar billede hossein Nybegynder
07. december 2002 - 22:37 #9
hvis du vil vise dag og måned den kan du også bruge i din SQL sætning:
<%=Day(date()) & month(date())%>
Avatar billede hossein Nybegynder
07. december 2002 - 22:39 #10
hvis feltet fodselsdato har datatypen DatoogKlokkeset:
strSQL = "Select TOP 1 * From blaabog WHERE (fodselsdato >= day(date()) and fodselsdato >= month(date())) ORDER BY fodselsdato"
Avatar billede musicchart.dk Nybegynder
07. december 2002 - 22:53 #11
hossein >> jeps der var den, tak!
Avatar billede musicchart.dk Nybegynder
07. december 2002 - 22:57 #12
nææ... det virker ikke. Her viser den bare den ældste dato
Avatar billede musicchart.dk Nybegynder
07. december 2002 - 23:12 #13
kan du ikke hjælpe når nu du har fået point, ellers skal jeg have dem tilbage.
Avatar billede hossein Nybegynder
07. december 2002 - 23:17 #14
da du har top, jeg tror den finder den største værdi.
Avatar billede musicchart.dk Nybegynder
07. december 2002 - 23:33 #15
ja, den finder den ældste dato, det skal den ikke. Den skal finde den næste fødselsdag, altså den næste dato, uden år.

Hvis jeg nu har 3 dato'er:

19-04-1980
27-01-1985
22-02-1979

... så skal den vise: 27-01-1985
Avatar billede hossein Nybegynder
07. december 2002 - 23:33 #16
hvad så Bjarke?
Avatar billede hossein Nybegynder
07. december 2002 - 23:34 #17
hvilken datatype har felten fodselsdato?
Avatar billede musicchart.dk Nybegynder
07. december 2002 - 23:36 #18
Kortdatoformat (dd-mm-yyyy)
Avatar billede musicchart.dk Nybegynder
09. december 2002 - 14:01 #19
kunne du ikke hjælpe?
Avatar billede hossein Nybegynder
09. december 2002 - 23:16 #20
jo jo! det giver en tilfredsstillende svar:

<html>
<head>
</head>
<body>
<%
    Session.LCID = 1030
    Set    strConn = Server.CreateObject("ADODB.Connection")
    strConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" &  Server.Mappath("data.mdb")
    Set RS = Server.CreateObject("ADODB.Recordset")

    strSQL = "Select top 1 fodselsdato, DateSerial(Year(DateSerial(Year(Now),Month(fodselsdato),Day(fodselsdato)))-" &_
            "Sgn(DateDiff('yyyy',DateSerial(Year(DateSerial(Year(Now),Month(fodselsdato),Day(fodselsdato)))+" &_
            "(Sgn(DateDiff('y',DateAdd('d',1,DateSerial(Year(Now),Month(fodselsdato),Day(fodselsdato))),Now))+1)," &_
            "Month(DateSerial(Year(Now),Month(fodselsdato),Day(fodselsdato)))," &_
            "Day(DateSerial(Year(Now),Month(fodselsdato),Day(fodselsdato)))),Now))," &_
            "Month(DateSerial(Year(Now),Month(fodselsdato),Day(fodselsdato)))," &_
            "Day(DateSerial(Year(Now),Month(fodselsdato),Day(fodselsdato)))) AS Nufodselsdato FROM links order by month(fodselsdato)"

    RS.Open strSQL, strConn, 3, 1

    RS.MoveFirst
    Do While Not RS.EOF
        Response.Write "Fødselsdato = " & RS("fodselsdato")
        If DateDiff("y",RS("Nufodselsdato"),Date) = 0 Then
            Response.Write "  Har Fødselsdag, idag!"
        Else
            Response.Write "  Har Fødselsdag om " & DateDiff("y",Now,RS("Nufodselsdato")) & " dage."
        End If
        Response.Write "<br>" & VBCrLf
        RS.MoveNext
    Loop

    RS.Close
    strConn.Close
    Set RS = Nothing
    Set strConn = Nothing
%>
</body>
</html>

hvis du kører den så er resultatet:
Fødselsdato = 01-01-2003 Har Fødselsdag om 23 dage. (er ikke blevet født endnu)
Fødselsdato = 27-01-1985 Har Fødselsdag om 49 dage.

min tabel er sådan:
ID | Fod
1  | 19-04-1980
2  | 27-01-1985
3  | 22-02-1979
4  | 24-11-1985
5  | 01-01-2003 (det var bare en forsøg!)

men hoved problemet er det at nulstille dagen i dag dvs. Date() også bruge den men det kni.. lidt, desuden vi befinder os i måned 12 som er den største, så må vi se om den duer efter nyt år! jo, det gør den :)
Avatar billede hossein Nybegynder
09. december 2002 - 23:17 #21
ups i tabelen Fod --> fodselsdato
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