Avatar billede teck Nybegynder
23. januar 2005 - 16:29 Der er 12 kommentarer og
2 løsninger

udtræk fra database ved bestemt dato

Hej,

jeg sidder og er ved at lave et lille nyhedsscript til min side. Jeg vil gerne have gjort sådan at en nyhed kan sættes først til at blive vist på en dato som man vælger og efter en dato bliver nyheden slettet igen.

Jeg har lavet 3 felter i min database, hvor man f.eks. skriver at den skal udgives den 23-01-2005 og så skal den slette fra databsen igen den 25-01-2005.

Hvordan får jeg nu gjort sådan at alt data bliver hentet fra den dato der er sat indtil den dag den skal slette sig selv?
Avatar billede razser Nybegynder
23. januar 2005 - 16:36 #1
Du kan fx. i din select skrive noget som:

strSQL = "Select * FROM nyhed where Fra <= #" & FormatDateTime(Date, 1) & "# AND Til >= #" & FormatDateTime(Date, 1) & "# ORDER BY Fra DESC"

Denne funktion sletter dog ikke, men viser kun relevante nyheder mellem til- og fradato.
Avatar billede teck Nybegynder
23. januar 2005 - 16:45 #2
kan ikke helt få den til at udskrive! Ved ikke om du kan skrive koden ordentligt hvis du får afvide at:

tabellen hedder: nyheder
Feltet med udgivelse hedder: public
Feltet med udløbsdato hedder: stop

og den skal vise alle nyheder undtagen dem der ikke er sat til at blive vist endnu og hellere ikke dem der er udløbet!

Jeg ved ikke om du er flink og skrive det for mig i SQL, er ikke den største haj til det!
Avatar billede razser Nybegynder
23. januar 2005 - 16:51 #3
strSQL = "Select * FROM nyheder where public
<= #" & FormatDateTime(Date, 1) & "# AND stop >= #" & FormatDateTime(Date, 1) & "# ORDER BY public DESC"

Jeg formoder, at Datatypen i Access er sat til Data/Time i felterne public og stop ?
Det skal de for at det virker...
Avatar billede teck Nybegynder
23. januar 2005 - 17:00 #4
Jo, dete r godt nok sat til Date/Time i databasen.... men den kommer med følgende fejl:

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query expression 'public <= #Sunday, January 23, 2005# AND stop >= #Sunday, January 23, 2005#'.

/borne/forum/main.asp, line 20
Avatar billede razser Nybegynder
23. januar 2005 - 17:16 #5
Prøv at sætte denne øverst:

<% session.LCID=1030 %>
Avatar billede teck Nybegynder
23. januar 2005 - 17:21 #6
ok, nu burde den jo skrive 23-01-2005... så i teorien burde det jo virke, men den kommer med den her fejl:
ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/borne/forum/main.asp, line 0
Avatar billede razser Nybegynder
23. januar 2005 - 17:30 #7
Her skal jeg nok se hvordan hele main.asp ser ud....
Avatar billede teck Nybegynder
23. januar 2005 - 17:32 #8
Den ser sådan her ud:

<% session.LCID=1030 %>
<html>
<head>
<title>Nyheder</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="90%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
    <%
   
    strDSN1 = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("nyheder.mdb")
    Set myConn1 = Server.CreateObject("ADODB.Connection")
    myConn1.Open strDSN1
    sql1 = "Select * FROM nyheder where public <= " & FormatDateTime(Now, vbShortDate) & " AND stop >= " & FormatDateTime(Date) & " ORDER BY public DESC"
    Set Record1 =  myconn1.Execute(sql1)
    response.write record1("titel")
    %></td>
 
  </tr>
</table>
</body>
</html>
Avatar billede razser Nybegynder
23. januar 2005 - 18:02 #9
Prøv denne:

<% session.LCID=1030 %>
<html>
<head>
<title>Nyheder</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="90%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
    <%
   
    strDSN1 = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("nyheder.mdb")
    Set myConn1 = Server.CreateObject("ADODB.Connection")
    myConn1.Open strDSN1
    sql1 = "Select * FROM nyheder where public <= " & FormatDateTime(Now, vbShortDate) & " AND stop >= " & FormatDateTime(Date) & " ORDER BY public DESC"
    Set Record1 =  myconn1.Execute(sql1)

Do While Not Record1.EOF
response.write record1("titel")
record1.MoveNext
Loop
Record1.Close
Set Record1 = Nothing
%></td>
 
  </tr>
</table>
</body>
</html>

-------------
Er det bevidst, at der er forskel på de 2 dato-formater, for public og stop?
Avatar billede teck Nybegynder
23. januar 2005 - 18:12 #10
Du kommer der ingen fejl... men jeg har lavet to poster i databasen, hvor den ene skal udkomme i dag (23-01-2005) og den anden skal først vises i morgen (24-01-2005)... men der bliver slet ikke vist noget!

Det er ikke bevist med de 2 dato-formater har rettet det til FormatDateTime(Date)
Avatar billede razser Nybegynder
23. januar 2005 - 18:25 #11
Så skulle den være der:

<% session.LCID=1030 %>
<html>
<head>
<title>Nyheder</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="90%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
    <%
   
    strDSN1 = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("nyheder.mdb")
    Set myConn1 = Server.CreateObject("ADODB.Connection")
    myConn1.Open strDSN1
    sql1 = "Select * FROM nyheder where public <= #" & FormatDateTime(Date) & "# AND stop >= #" & FormatDateTime(Date) & "# ORDER BY public DESC"
    Set Record1 =  myconn1.Execute(sql1)

If not (Record1.eof or Record1.bof) Then
Do While Not Record1.EOF
response.write record1("titel")
response.write "<br>"
record1.MoveNext
Loop
end if
Record1.Close
Set Record1 = Nothing
%></td>
 
  </tr>
</table>
</body>
</html>
Avatar billede teck Nybegynder
25. januar 2005 - 12:04 #12
Tak for hjælpen, kunne ikke havde gjort det uden dig :)
Avatar billede razser Nybegynder
25. januar 2005 - 14:40 #13
Selv tak, er der så ikke nogle point i vente til mig ;-)
Avatar billede teck Nybegynder
25. januar 2005 - 15:13 #14
Ups... det skal da også 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