15. oktober 2005 - 18:12Der er
30 kommentarer og 1 løsning
Vis indlæg der er max X antal dage gamle
Hej Eksperter,
Jeg er ved at lave et forum og jeg ville gerne have at når der var et svar der var eks. 4 dage gammel at der stod "NYT SVAR" og hvis det nyeste svar så var mere end eks. 4 dage gammel stod der ingen ting .....
Jeg har ændret så koden ser sådan ud (uden sql forbindelsen):
<%if nyt("dato")=> DateAdd(-4, Date()) then%> NY POST <%else%><%end if%>
og nu får jeg en ny fejl: Error Type: Microsoft VBScript runtime (0x800A01C2) Wrong number of arguments or invalid property assignment: 'DateAdd' debat.asp, line 84
Det vil i det mindste sikre dig at det er datoer der ligger i databasen. Det kan godt være at databasen ikke tillader en konvertering af feltet, hvis der ligger datoer i, som ikke er gyldige.
Prøv evt. lige dette i første omgang:
<% SQLnyt ="SELECT * FROM debat_indlaeg WHERE svarid=" & indlaeg("id") Set nyt = Conn.Execute(SQLnyt) %>
<% if isDate(nyt("dato")) then if CDate(nyt("dato")) => DateAdd("d", -4, Date()) then %> response.write "NYT SVAR" <% end if else response.write "Det er ikke en gyldig dato: " & nyt("dato") end if %>
Med LCID = 1030 burde den fortolke datoen som dansk, men noget tyder på at den ikke acceptere det som en dato (ellers ville isDate-funktionen ikke returnere false).
Du sagde du havde lavet feltet om til en dato i databasen, men har du gjort noget ved de dato'er som lå der i forvejen? Hvormange datoer drejer det sig om?
Nej, det er en god idé at sætte LCID, hvis du altid skal køre med danske datoformater...
Umiddelbart forstår jeg ikke helt at databasen ikke har brokket sig, da du konverterede feltet til datotid-format. Hvis det er muligt (og let for dig at gøre), vil jeg da anbefale at du opdaterer alle datoer med en valid dato. Hvis du siger at alle datoer er de samme, så kunne du f.eks. køre denne SQL-sætning på databasen:
UPDATE tabel SET dato = #2005-10-15 13:22:32#
Det skulle gerne sætte alle dato-felters dato til d. 15. oktober 2005 (som jeg regner med at du gerne vil have). Du skal naturligvis udskifte tabel med navnet på den tabel hvor opdateringen skal ske...
Du siger: "Og det er jo en Dato så derfor er det vel med ##..."
Ja, det er en dato og der SKAL det være med ## omkring datoen. Det der så sker er at du udskifter ## med '' - og det er så der jeg falder af... hvorfor gør du det???
Grunden til at du får en fejl har dog ikke noget med det at gøre, men snarere at du forsøger at være 200% overbevisende overfor VBScript om at det altså ER en streng du har med at gøre (selvom det jo burde være en dato ;-)). Du behøver imidlertid kun at være 100% overbevisende, så sådan skal det gøres:
SQLopd = "UPDATE debat_indlaeg SET dato = '2005-10-15 13:22:32'"
...hvis altså det var en streng... men det er det jo ikke, men derimod en dato, så sådan SKAL det gøres:
SQLopd = "UPDATE debat_indlaeg SET dato = #2005-10-15 13:22:32#"
<% SQLnyt ="SELECT * FROM debat_indlaeg WHERE svarid=" & indlaeg("id") Set nyt = Conn.Execute(SQLnyt) %>
<% if isDate(nyt("dato")) then if CDate(nyt("dato")) => DateAdd("d", -4, Date()) then %> <% response.write "NYT SVAR" %> <% end if else response.write "Det er ikke en gyldig dato: " & nyt("dato") <-- Linie 96 end if %>
Har du mulighed for at vise et udpluk af data fra din database, samt definitionen af feltet dato i databasen (evt. som screendumps som du lægger op på en eller anden url). Jeg fatter ikke hvad der sker lige i øjeblikket...
Kort og godt: Der er ikke noget resultat på den pågældende forspørgsel, så du skal lægge et check på om nyt.eof = false inden du aflæser værdien af nyt("dato").
<% if not nyt.eof then if CDate(nyt("dato")) => DateAdd("d", -4, Date()) then response.write "NYT SVAR" end if end if %>
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.