Avatar billede rimulu Nybegynder
01. november 2001 - 22:31 Der er 20 kommentarer og
1 løsning

Vis ikke nyhed før efter en bestemt dato.......

Hvis en person ligger en nyhed ind i en database og skriver en dato til nyheden som feks. ligger 5 dage ud i fremtiden. Kan man så indsætte et script der først viser nyheden fra og med den pågældende dag og hvordan ser scriptet ud. Det script der trækker nyhederne ud nu ser således ud.:

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"data/NEWS.mdb\")
SQLstmt = \"select top 5 * FROM news ORDER BY ID Desc;\"
Conn.Execute (SQLstmt)
Set rs = conn.Execute(SQLstmt)
  %>   
Avatar billede entracore Nybegynder
01. november 2001 - 22:50 #1
SqlQ = \"Select * From Nyheds_Tabel Where Dato < \'\" & Date & \"\'\"
Avatar billede frosig Nybegynder
01. november 2001 - 22:50 #2
Prøv det her. Det skulle kunne gøre det (tror jeg)

SQLstmt = \"select top 5 * FROM news WHERE dato <= \" & Date & \"ORDER BY ID Desc;\"
Avatar billede keysersoze Ekspert
01. november 2001 - 22:52 #3
SQLstmt = \"select top 5 * FROM news WHERE dato <= #\" & Date() & \"# ORDER BY ID Desc;\"

Avatar billede rimulu Nybegynder
01. november 2001 - 23:11 #4
Frosig dit giver følgende fejl:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket \"dato <= 01-11-2001ORDER BY ID Desc\".
Avatar billede rimulu Nybegynder
01. november 2001 - 23:15 #5
keysersoze dit giver ingen fejl med viser siden uden at trække nogle poster ud overhovdet. Det fulde script set således ud:

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"data/NEWS.mdb\")
SQLstmt = \"select top 5 * FROM news WHERE dato <= \" & Date & \"ORDER BY ID Desc;\"
Conn.Execute (SQLstmt)
Set rs = conn.Execute(SQLstmt)
  %>   

  <%
  DO WHILE NOT rs.EOF
    id = rs(\"ID\")
    headline = rs(\"headline\")
    dato = rs(\"dato\")
  %>

<!--ASP HEADLINE START-->
href=\"vis_news.asp?id=<%=id%>\">
<%=Headline%>
<=dato%>
<!--ASP HEADLINE SLUT-->

<%
    rs.MoveNext
  LOOP
  RS.Close
conn.Close
Set conn = nothing
Set SQLstmt = nothing
    %>
Avatar billede rimulu Nybegynder
01. november 2001 - 23:16 #6
Altså bare med denne:

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"data/NEWS.mdb\")
SQLstmt = \"select top 5 * FROM news ORDER BY ID Desc;\"
Conn.Execute (SQLstmt)
Set rs = conn.Execute(SQLstmt)
  %> 

Avatar billede rimulu Nybegynder
01. november 2001 - 23:23 #7
Datoen bliver indskrevet indtastet via et form felt af personen selv....Skal der oprettes et ekstra felt i db til dato som access selv skriver ind.
Avatar billede keysersoze Ekspert
01. november 2001 - 23:30 #8
hmmm - prøv engang så at vende < om til et >
Avatar billede rimulu Nybegynder
01. november 2001 - 23:43 #9
Nu viser den nyhederne som den gjore før, og det virker ikke efter hensigten.............
Avatar billede keysersoze Ekspert
01. november 2001 - 23:51 #10
og der ER artikler i databasen, hvor datoen både er nyere og ældre en dagen i dag så?
Avatar billede rimulu Nybegynder
02. november 2001 - 00:05 #11
Jep de er
Avatar billede keysersoze Ekspert
02. november 2001 - 00:33 #12
bruger du ## omkring din datoen i sql\'en?

SQLstmt = \"select top 5 * FROM news WHERE dato <= \" & Date & \"ORDER BY ID Desc;\"

som du skrev er nemlig forkert... skole nok nærmere være

SQLstmt = \"select top 5 * FROM news WHERE dato <= #\" & Date & \"# ORDER BY ID Desc;\"

eller

SQLstmt = \"select top 5 * FROM news WHERE dato <= #\" & Date() & \"# ORDER BY ID Desc;\"

Avatar billede rimulu Nybegynder
02. november 2001 - 00:37 #13
Ja der har jeg gjort....Har du prøvet det i praksis da...Ved du om det virker ???
Avatar billede keysersoze Ekspert
02. november 2001 - 00:54 #14
man plejer at gøre det lidt den anden vej - altså kun vælge nogle der _ikke_ er for gamle... og til dette plejer jeg at bruge:

sqlstr = \"SELECT  TOP  5  * FROM news where date > #\" & Date()-7 & \"# ORDER BY Date
Avatar billede rimulu Nybegynder
02. november 2001 - 01:30 #15
Ved godt det spørgsmål her ikke vedkommer det stillede. Men jeg har en side som skal vise alt hvad der er i DB af nyheder MEN bare ikke dem som er på TOP 5, altså ældre nyheder....Vil gerne give poimts for det her...Det andet må hvile :)
Avatar billede keysersoze Ekspert
02. november 2001 - 01:52 #16
du laver en almindelig

select * from...

og så skriver du

rs.move 5

inden din normale udskrivning
Avatar billede rimulu Nybegynder
02. november 2001 - 02:00 #17
Helt præcis hvordan...jeg er lidt dum til asp...
Avatar billede keysersoze Ekspert
02. november 2001 - 02:13 #18
damn - troede ikke jeg skulle undervise SÅ meget... anyway:

<%

Set Conn = Server.CreateObject(\"ADODB.Connection\")
conn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" & Server.MapPath(\"xxx.mdb\")
SQL = \"SELECT * FROM tabel;\"
Set rs = Conn.Execute(SQL)

rs.move 5

Do while not rs.EOF then

Response.Write \"\" & rs(\"kolonne\") & \"\"

loop
rs.movenext

RS.Close
Set RS = Nothing
%>
Avatar billede rimulu Nybegynder
02. november 2001 - 02:20 #19
thx for hjælprn :)
Avatar billede keysersoze Ekspert
02. november 2001 - 02:24 #20
det var så meget ;) skulle det være en anden gang
Avatar billede rimulu Nybegynder
02. november 2001 - 02:38 #21
LOL
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