Hvert objekt kan kun have en publishdato, men der kan godt findes objekter, som ikke har angivet en publishdato, og disse skal scriptet bare springe over.
Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Super... men du har lige glemt - eller også har jeg glemt at understege det - at datoerne skal listes, altså så de datoer som kommer først i kalenderen også kommer først i strengen.
(Datoerne er nemlig ikke listet i forvejen i databasen)
Ja, sortering... det er bare mig, der ikke er særlig præcis.
Desværre siger den "No value given for one or more required parameters." ved eksekveringen af SQL-sætningen.
<% Set myConn=Server.CreateObject("ADODB.Connection") myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb")) strSQL = "Select * from search order by dates" set rs = myConn.execute(strSQL)
do while not rs.EOF if isDate(rs("datoPublikation")) then myDates = myDates & rs("datoPublikation") & "," End If rs.MoveNext Loop myDates = left(myDates,len(myDates)-1) %>
Ups, jeg lavede en lille skrivefejl, men fejl-meddelelsen er stadig den samme.
<% Set myConn=Server.CreateObject("ADODB.Connection") myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb")) strSQL = "Select * from search order by dates" set rs = myConn.execute(strSQL)
do while not rs.EOF if isDate(rs("datopublish")) then myDates = myDates & rs("datopublish") & "," End If rs.MoveNext Loop myDates = left(myDates,len(myDates)-1) %>
Hehe.. Sorry.. Jeg har vist heller ikke udtrykt mig specifikt nok! Når du skal sortere på datoer, så skal du ikke skrive ORDER BY dates, men ORDER BY DIT_DATO_FELT..
Ergo skal sætningen, i dit tilfælde se således ud:
strSQL = "Select * from search order by datopublish"
Hvis du så finder ud af, at den sortere den forkerte vej, altså har sidste først, så kan du skrive sådan her:
strSQL = "Select * from search order by datopublish DESC"
Hov, scriptet tager ikke højde for, at sorteringen skal starte fra dags dato (og ikke fra den dato, hvor jeg startede med at fylde objekter i databasen). Med andre ord så skal scriptet lave en sorteret liste af datoer højere end dags dato.
Det var vidst min fejl, at jeg ikke oplyste det - jeg smider lige nogle flere points oveni. :)
Jeg har forsøgt mig lidt frem og erstattet Date() med Now() - hvilket fik det til at virke - og slettet DESC, fordi datoerne listes forkert, dvs. med de støreste værdier først. Men jeg mangler lige:
1) at få tilføjet en begrænsning på de sortede datoer, så det kun er de datoerne, som ligger inden for de 60 næste dage, der listes:
2) Yderemere, skal det også lige tilføjes i koden, at en dato kun må listes en gang, så følgende undgåes - f.eks.:
29-09-2002, 01-10-2002, 01-10-2002, 02-10-2002
<% Set myConn=Server.CreateObject("ADODB.Connection") myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb")) strSQL = "Select * from search where (datopublish >= " & Date() & ") order by datopublish" set rs = myConn.execute(strSQL)
do while not rs.EOF if isDate(rs("datopublish")) then myDates = myDates & rs("datopublish") & "," End If rs.MoveNext Loop myDates = left(myDates,len(myDates)-1) response.write "*** " & myDates %>
Den burdte have udskrevet datoerne 28-10-2002, 29-10-2002, 30-10-2002 og 31-10-2002, for de ligger i kolonnen publishdato. Jeg mener også, at disse datoer faktisk blev udskrevet i tidligere eksempler (dog sammen med en masse andre datoer, som var irrelevante).
Nej, den skriver det faktisk fuldstændig som det skal være!.. Den skal jo vælge alle datoerne der findes inden for perioden 27-10-2002 til og med 26-12-2002. Altså 60 dage.
Prøv at smide nogle "pinger" ind i din SQL..
strSQL = "Select distinct datopublish from search where (datopublish between '" & date() & "' and '" & date() + 60 & "') order by datopublish"
Fjern Response.Write strSQL og Response.End og prøv igen!..
Hvis det ikke virker, er det sandsynligvis din database, der ikke genkender dato-formatet.
Pinger er bare den nørdede udviklers måde at sige "Apostroffer"! Hvis du lægger mærke til den SQL-streng jeg skrev ovenover, så er der apostroffer rundt om begge "date()" metoderne. Altså '" & date() & "'.
Det er lige meget, om jeg skriver den ene eller det andet, så siger den: Data type mismatch in criteria expression.
1) strSQL = "Select distinct datopublish from search where (datopublish between '" & date() & "' and '" & date() + 60 & "') order by datopublish" 2)strSQL = "Select distinct datopublish from search where (datopublish between " & date() & " and '" & date() + 60 & "') order by datopublish" 3)strSQL = "Select distinct datopublish from search where (datopublish between '" & date() & "' and " & date() + 60 & ") order by datopublish"
Nej, jeg giver slet ikke op.. Men jeg var desværre lige nødt til at hoppe ud i et par timer!.. Havde egentlig tænkt mig, at du skulle sende databasen og pågældende fil til mig - så kunne jeg ha' lavet det i løbet af 2 minutter! ;)
Jeg har ikke prøvet det endnu, men det lyder til at være rigtigt. :-)
Synes godt om
Ny brugerNybegynder
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.