Avatar billede kane Juniormester
26. juli 2002 - 21:12 Der er 19 kommentarer og
1 løsning

et felt rødt

jeg har en masse datoer i et felt som jeg skal holde øje med. De er skrevet ud fra en access DB.
Kan jeg få asp til at lave den dato der er tættest på i dag til at blive rød?
Avatar billede tmceu Praktikant
26. juli 2002 - 21:41 #1
Sandsynligvis, men du må fortælle noget mere..
Avatar billede kane Juniormester
26. juli 2002 - 23:10 #2
hmmm hvad.

sådan ser conn ud

<%
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("xxxxxx.mdb")
    Set rs = Conn.Execute("Select * From status Order By betalt_til")
   
    While Not rs.EOF
%>

og sådan ser response ud

<%Response.Write rs("betalt_til")%>
Avatar billede eagleeye Praktikant
27. juli 2002 - 13:58 #3
i morgen er tæt på i dag, men i går er lige så tæt på i dag...

Nu antager vi lige betalt_til er fremtid og alle dage efter i dag er lige meget...
datoStr = Year(date) & "-" & month(Date) & "-" & Day(date)
SQL = "SELECT * FROM statsus WHERE betalt_til >= #" & datoStr & "# ORDER BY betalt_til DESC"
set rs = Conn.execute (SQL)

if not rs.EOF then redDate = rs("betalt_til")
Response.write "<table>"
do while not rs.EOF
  Response.write "<tr>"
  Response.write "<td>"
  if redDate = rs("betalt_til") then
    Response.write "<font color=""red"">"
    Response.write rs("betalt_til")
    Response.write "</font>"
  else
    Response.write rs("betalt_til")
  end if
  Response.write "</td>"
  Response.write "</tr>"
  rs.movenext
loop
Response.write "</table>"
Avatar billede kane Juniormester
27. juli 2002 - 14:29 #4
Microsoft VBScript runtime error '800a01a8'

Object required: ''

/dbinfo1.asp, line 11

linie 11 = set rs = Conn.execute (SQL)
Avatar billede eagleeye Praktikant
27. juli 2002 - 14:40 #5
Der skal lige en

Set rs = Server.CreateObject("ADODB.recordset")

med i toppen sammen med  denne:
Set Conn = Server.CreateObject("ADODB.Connection")
Avatar billede kane Juniormester
27. juli 2002 - 14:55 #6
har smidt det sådan som du har skrevet det.

<%
Set Conn = Server.CreateObject("ADODB.Connection")
        datoStr = Year(date) & "-" & month(Date) & "-" & Day(date)
SQL = "SELECT * FROM status WHERE betalt_til >= #" & datoStr & "# ORDER BY betalt_til DESC"
Set rs = Server.CreateObject("ADODB.recordset")



if not rs.EOF then redDate = rs("betalt_til")
Response.write "<table>"
do while not rs.EOF
  Response.write "<tr>"
  Response.write "<td>"
  if redDate = rs("betalt_til") then
    Response.write "<font color=""red"">"
    Response.write rs("betalt_til")
    Response.write "</font>"
  else
    Response.write rs("betalt_til")
  end if
  Response.write "</td>"
  Response.write "</tr>"
  rs.movenext
loop
Response.write "</table>"
   
%>

Operation is not allowed when the object is closed.

/dbinfo1.asp, line 16

linie 16 = if not rs.EOF then redDate = rs("betalt_til")
Avatar billede eagleeye Praktikant
27. juli 2002 - 14:58 #7
der mangler denne:

set rs = Conn.execute (SQL)

--------

<%
Set Conn = Server.CreateObject("ADODB.Connection")
        datoStr = Year(date) & "-" & month(Date) & "-" & Day(date)
SQL = "SELECT * FROM status WHERE betalt_til >= #" & datoStr & "# ORDER BY betalt_til DESC"
Set rs = Server.CreateObject("ADODB.recordset")

set rs = Conn.execute (SQL)  '<----------------Her

if not rs.EOF then redDate = rs("betalt_til")
Avatar billede kane Juniormester
27. juli 2002 - 18:22 #8
set rs = Conn.execute (SQL)  linie 13

ADODB.Connection error '800a0e78'

Operation is not allowed when the object is closed.

/dbinfo1.asp, line 13
Avatar billede eagleeye Praktikant
27. juli 2002 - 18:35 #9
du skal huske at åbne din connection til databasen...

Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("xxxxxx.mdb")

det kan du gøre efter:  Set Conn = Server.CreateObject("ADODB.Connection")
Avatar billede kane Juniormester
27. juli 2002 - 18:39 #10
http://www.micropage.dk/dbinfo1.asp

nu virker det næsten ;)

der står bare ikke noget
Avatar billede eagleeye Praktikant
27. juli 2002 - 18:42 #11
Så det fordi recordsetet er tomt. Findes der nogle records hvor betalt_til er > end idag???
Avatar billede eagleeye Praktikant
27. juli 2002 - 19:07 #12
hvis du vil havde datoer som er tæt på idag men ældre så skal du lave SQL om til det:

SQL = "SELECT * FROM statsus WHERE betalt_til <= #" & datoStr & "# ORDER BY betalt_til DESC"

Jeg er nåd til at løbe nu og er måske tilbage senere i aften du må prøve at ligge forskellige datoer i din db som er størrer og mindre end i dag og så lege lidt med...
Avatar billede kane Juniormester
27. juli 2002 - 22:19 #13
http://www.micropage.dk/dbinfo1.asp

nu er der en der bliver rød..........men det er ikke den der er tættest på idag..........det er bare den første
Avatar billede eagleeye Praktikant
27. juli 2002 - 23:23 #14
Hvordan ser din SQL ud?? og hvilken type er betalt_til kolonnen?
Avatar billede kane Juniormester
28. juli 2002 - 11:09 #15
betalt_til er nu en dato klokkeslet............det var før et notat........men der virkede det slet ikke

min sql hmmmm 2 sekk

her er hele koden.


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

<body bgcolor="#FFFFFF" text="#000000">
&nbsp;


<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("kunder.mdb")
        datoStr = Year(date) & "-" & month(Date) & "-" & Day(date)
SQL = "SELECT * FROM status WHERE betalt_til >= #" & datoStr & "# ORDER BY betalt_til DESC"

Set rs = Server.CreateObject("ADODB.recordset")
set rs = Conn.execute (SQL) 

if not rs.EOF then redDate = rs("betalt_til")

do while not rs.EOF

 
%>

<table width="30%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><% if redDate = rs("betalt_til") then
    Response.write "<font color=""red"">"
Response.write rs("betalt_til")%></td>
    <td align="right">
      <%Response.Write rs("domain")%>
    </td>
  </tr>
</table>
   
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>   
<td><%  Response.write "</font>"
  else
    Response.write rs("betalt_til")%></td>
    <td align="right">
      <%Response.Write rs("domain")%>
    </td>
  </tr>
</table>
<% end if

  rs.movenext
loop
%>

   

</body>
</html>
Avatar billede eagleeye Praktikant
28. juli 2002 - 11:12 #16
Jeg har vist givet dig en lidt forkert SQL, når man bruger >= dato så skal de være ORDER BY dato uden DESC eller får man den som er længst væk :)...

Så denne :
SQL = "SELECT * FROM status WHERE betalt_til >= #" & datoStr & "# ORDER BY betalt_til DESC"

Rettes til:
SQL = "SELECT * FROM status WHERE betalt_til >= #" & datoStr & "# ORDER BY betalt_til"
Avatar billede eagleeye Praktikant
28. juli 2002 - 11:59 #17
med ORDER BY xxxx DESC starter den med den største først og så kommer de andre bagefter.. Med ASC eller uden noget sortere ORDER BY med den mindste ført...
Avatar billede kane Juniormester
28. juli 2002 - 13:16 #18
sådan......så virker det........takker mange gange
Avatar billede kane Juniormester
28. juli 2002 - 13:17 #19
du må lige give et svar eagle
Avatar billede eagleeye Praktikant
28. juli 2002 - 13:18 #20
Det gør jeg da gerne :)
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