Avatar billede Noam-9 Praktikant
10. juli 2001 - 16:35 Der er 7 kommentarer og
1 løsning

Dato fejl...

Jeg har stykket et nyheds/kaldendermodul sammen, men har pludselig fået problemer med kalenderdelen.
Koden kan ses nedenfor og der er et screenshot af databasen i design-visning <a href=\"http://www.hygind.dk/3y/db.htm\">her</a>.

Af en eller anden grund viser den ikke de indførsler der har en kalenderdato om relativt kort tid. Tilgengæld kan den godt vise et kalenderpunkt i fx. oktober,november og december (dvs. de mdr. der ikke har et foranstillet nul), samt indførsler med kalenderdato i år 2002.

<body>
<div class=\"ramme\">
<div class=\"rammetop\"><h3>Kalender</h3></div>
<div class=\"rammeindhold\">
<%
Dim Connect, OnMenu, ThisDay, Query, DayNum
Set Connect = Server.CreateObject(\"ADODB.Connection\")
Connect.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"fpdb/nyhedka.mdb\")
ThisDay = (Date)
Query = \"SELECT * FROM news WHERE kalenderdato >= #\" & ThisDay & \"# ORDER BY kalenderdato\"
Set OnMenu = Connect.Execute(Query)
DayNum = 1
do until OnMenu.EOF Or DayNum > 6
%>
<div class=\"nyhedsover\"><%=OnMenu(\"kalenderdato\")%><br>
<a href=\"nyhedsdel/se_nyhed.asp?id=<%=OnMenu(\"ID\")%>\"><%=OnMenu(\"kalendertitel\")%></a></div><br>

<%
  DayNum = DayNum + 1
  OnMenu.MoveNext
loop %>
 
  </div>
</div>
</body>
Avatar billede nute Nybegynder
10. juli 2001 - 16:39 #1
prøv denne:

SELECT * FROM news WHERE DATEDIFF(\"d\", kalenderdato, \" & ThisDay & \") >= 0 ORDER BY kalenderdato

/nute
Avatar billede nute Nybegynder
10. juli 2001 - 16:43 #2
eller denne:

SELECT * FROM news WHERE (kalenderdato >= CONVERT(DATETIME, \'\" & ThisDay & \" 00:00:00\',4)) ORDER BY kalenderdato

/nute

Avatar billede Noam-9 Praktikant
10. juli 2001 - 16:45 #3
Med den sidste får jeg flg. fejlbesked:

Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] Undefined function \'CONVERT\' in expression.

/intra/nyhedsdel/kalenderkasse3.asp, line 21
Avatar billede nute Nybegynder
10. juli 2001 - 16:47 #4
ahh....sorry....den er til SQL server...
Avatar billede soc127754 Nybegynder
11. juli 2001 - 10:29 #5
Problemet er sandsynligvis at du ikke får lagt datoerne i databasen i det rigtige format(amerikansk).

Anvender du nedenstående funktion på datoen i din sql insert/update samt i din forespørgsel burde den være sikker.

eks.
ThisDay = mediumdate(Date)
Query = \"SELECT * FROM news WHERE kalenderdato >= #\" & ThisDay & \"# ORDER BY kalenderdato\"

Function MediumDate (str)
    Dim aDay
    Dim aMonth
    Dim aYear

    aDay = Day(str)
    aMonth = Monthname(Month(str),True)
    aYear = Year(str)
   
MediumDate = aDay & \"-\" & aMonth & \"-\" & aYear

End Function
Avatar billede www.net-ware.dk Nybegynder
18. juli 2001 - 23:28 #6
Den sikre løsning er at konvertere såvel inddata i databasen som aktuel dato til tekst. Ved at anvende følgende tidsformat : år-md-dato ( hvor alle består at et konstant antal karaktere ) vil din sortering og selektering altid være rigtig. Samtidig vil du kunne styre dit dataformat, og vil ikke være usikker på om der er forskelle mellem VBscript og Access.
Avatar billede soc127754 Nybegynder
19. juli 2001 - 09:21 #7
>www.net-ware.dk 

Det kan godt være at du er sikker på at få det samme ud igen - men ...

1) Data fylder langt mere
2) Du kan ikke regne med datoen - eks. finde poster efter en specifik dato som ><littleboy< ønsker.
Avatar billede Noam-9 Praktikant
06. august 2001 - 17:38 #8
Der er ikke noget af ovenstående der har virket.

Jeg lukker spm. og \"genåbner\" det med en bedre forklaring til.
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