15. juli 2005 - 20:58Der er
57 kommentarer og 1 løsning
Selektere først kommende dato i en access database
Hej
Jeg har en access database, og ville gerne vælge den først kommende fødselsdato.
Nogen der ved hvordan jeg gør det kan hjælpe. Det må være noget med: <%
SQL = "select Top 1 * from adresser WHERE birthdate <= Date()" set links = Conn.Execute(strSQL) do while not links.eof%> - <a href="loadlink.asp?link=<%=links("link")%>"><%=links("text")%></a> <br> <% links.MoveNext loop %>
Wops. Mit forslag holder vist ikke helt vand. Hvis metoden Datediff også ser på årstallet, vil det altid være den yngste person som står i database der vil blive vist først, så den holder nok ikke helt
Sådan? <% strSQL = "select * from adresser order by Datediff(d, date(), birthdate) asc" set adresser = Conn.Execute(strSQL) do while not adresser.eof Response.Write adresser("birthdate") & "<br>" adresser.MoveNext loop %> Hvordan kan jeg nøjes med at få 1 record ud?
Jeg fik denne til at virke - er koden optimal? <% strSQL = "select Top 1 * from adresser WHERE birthdatenext > Date() order by birthdatenext" set adresser = Conn.Execute(strSQL) Response.Write adresser("birthdatenext") & "<br><br>" & adresser("fornavn") & " " & adresser("efternavn") %>
Jeg er ikke helt parat til at give op. Prøv eventuelt disse forenklinger en efter en og se hvornår det gør godt (i den forstand at der i det mindste ikke er nogen fejl mere):
Original:
strSQL = "SELECT TOP 1 *, DATEDIFF(""d"", birthdate, GetDate()) MOD 365 AS daysFromLast FROM adresser ORDER BY daysFromLast DESC"
Uden MOD:
strSQL = "SELECT TOP 1 *, DATEDIFF(""d"", birthdate, GetDate()) AS daysFromLast FROM adresser ORDER BY daysFromLast DESC"
Med en hardcodet dato i stedet for GetDate():
strSQL = "SELECT TOP 1 *, DATEDIFF(""d"", birthdate, #2005-07-16#) AS daysFromLast FROM adresser ORDER BY daysFromLast DESC"
Uden DateDiff.
strSQL = "SELECT TOP 1 *, birthdate AS daysFromLast FROM adresser ORDER BY daysFromLast DESC"
Hmm - denne fejl: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Undefined function 'GetDate' in expression.
Så får jeg fejlen: Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.
Den kan den ikke lide: Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
... og så er jeg lige ved at tro at vi måske er i mål med:
strSQL = "SELECT * FROM (SELECT birthdate, fornavn, DATEDIFF('d', birthdate, Date()) MOD 365 AS daysFromLast FROM adresser) ORDER BY daysFromLast DESC"
strSQL = "SELECT TOP 1 * FROM (SELECT birthdate, fornavn, DATEDIFF('d', birthdate, Date()) MOD 365 AS daysFromLast FROM adresser) ORDER BY daysFromLast DESC"
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.