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 %>
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
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.