16. august 2004 - 12:43Der er
36 kommentarer og 2 løsninger
problemer med dato og accessdatabase
hej... Jeg har en variable på min side der udskriver dagen på følgende form: dd-mm-åååå I min database har jeg for hvert arrangement følgende info: fradato på formen: dd-mm-åååå tildato på formen: dd-mm-åååå
og dataen jeg bruger:
Dim MyDate MyDate = Date
<% for f = 0 to 6 myDateNow = dateadd("d",f,myDate) %> <table> <tr> <td colspan="2"> <b> <%=WeekdayName(datepart("w",myDateNow))%> den <%= datepart("d",myDateNow)%>. <%= MonthName(datepart("m",myDateNow))%> </b> </td> </tr> <tr> <td> </td> <td><%= myDateNow %>
<table> <% strSQL = "SELECT * FROM kalender where ((fradato <= myDateNow and myDateNow >= tildato) or fradato = myDateNow) ORDER by id" rs.Open strSQL, strDSN, 1 Do While Not rs.EOF %> <tr><td><%=rs("id")%></td></tr> <% rs.MoveNext Loop rs.Close Set rs = Nothing %> <tr><td>test</td></tr> </table>
</td> </tr> </table> <% next %>
men dette virker ikke...
får følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e21' ODBC driver does not support the requested properties.
/familie/sider/minkalender.asp, line 77 linie 77: rs.Open strSQL, strDSN, 1
Hvis du har felterne som dato/tid skal man bruge enten yyyy-mm-dd eller mm-dd-yyyy som dato format. Hvis man bruger dansk dato format som er dd-mm-yyyy, vil Access bytte rundt på dag og måned i datoen.
Der er en løsning og det er at bruge dato funktionerne Year, Month og Day til at formatere din dato.
Kode eksemple for Access, husk Access bruger # omkring datoen: <% dato = "04-06-2003" strDato = Year(dato) & "-" & Month(dato) & "-" & Day(dato) SQL = "SELECT * FROM tablenavn WHERE dato = #" & strDato & "#" %>
eagleeye--> ja... det har jeg: Set rs = Server.CreateObject("ADODB.RecordSet") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb")
fandt lige en fejl... der skal stå Set rs = Server.CreateObject("ADODB.RecordSet")inde i løkken (eller hvad det hedder) da jeg jo lukker efter hver "dag"
Nu ser det sådan ud: <% for f = 0 to 6 myDateNow = dateadd("d",f,myDate) %> <table> <tr> <td colspan="2"> <b> <%=WeekdayName(datepart("w",myDateNow))%> den <%= datepart("d",myDateNow)%>. <%= MonthName(datepart("m",myDateNow))%> </b> </td> </tr> <tr> <td> </td> <td><%= myDateNow %> <table> <% Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM kalender where ((fradato <= #"& myDateNow & "# and #"& myDateNow &"# >= tildato) or fradato = #"& myDateNow &"#) ORDER by id" rs.Open strSQL, strDSN, 1 Do While Not rs.EOF %> <tr><td><%=rs("id")%></td></tr> <% rs.MoveNext Loop rs.Close Set rs = Nothing %>
Prøv lige at køre datoen igenne denne funktion. Den plejer at virke.
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 = SQLYear&SQLMonth&SQLDay End Function
strSQL = "SELECT * FROM kalender where ((fradato <= #"& ConvertToSqlDate(myDateNow) &"# and #"& ConvertToSqlDate(myDateNow) &"# >= tildato) or fradato = #"& ConvertToSqlDate(myDateNow) &"#) ORDER by id"
Du kan jo altid prøve at pille ved denne linje: ConvertToSqlDate = SQLYear&SQLMonth&SQLDay
Bare flyt om på dem og tilføj /. Den burde bare lave en "type mismatch" fejl hvis det var formatet. Prøv at skrive SQL-sætningen ud på skærmen som ldanielsen foreslår. Det gør det ofte nemmere at finde fejlen.
jeg har ændret fennec's convert og min strDNS ser rigtig nok ud... men fejlen er næsten den samme, at den udskriver id=4 alle dage og id=5 alle undtagen den 16. og den 18.
Prøv at kig på tegne <= og >= i forhold til hvor kolonnen og datoen står i denne:
strSQL = "SELECT * FROM kalender where ((fradato <= #"& ConvertToSqlDate(myDateNow) &"# and #"& ConvertToSqlDate(myDateNow) &"# >= tildato) or fradato = #"& ConvertToSqlDate(myDateNow) &"#) ORDER by id"
Dette henter ikke de poster hvor ConvertToSqlDate(myDateNow) er imellem fra og til dato, men den henter alle hvor ConvertToSqlDate(myDateNow) er størrer end både til og fra dato så det skal være: strSQL = "SELECT * FROM kalender where ((fradato <= #"& ConvertToSqlDate(myDateNow) &"# and #"& ConvertToSqlDate(myDateNow) &"# <= tildato) or fradato = #"& ConvertToSqlDate(myDateNow) &"#) ORDER by id"
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.