webForumDet fria alternativet

Om inget finns - skriv då noll

ASP

7 svar · 263 visningar · startad av webbmannen

Medlem sedan dec. 1999826 inlägg
Frågan#1

Jag samlar uppgifter i en databas och tar sedan ut dem i tabellform efter datum. Mitt problem är att om det inte skrivits in något en viss dag så "finns" ju den dagen inte.

Jag skulle vilja ha en standardfras som skrivs in då detta inträffar. Finns det något kommando typ "Missing" eller nåt?

Kör nu med Do While Not rs.EOF och skulle behöva klämma in något på de dagar som är tomma/inte finns. Går det eller måsta jag fixa det sas. från början?

/webb

Medlem sedan dec. 1999707 inlägg
#2

Sure. Kolla om det är null (IsNull()) eller om det är tomma strängen (Len() = 0). Ex:

If IsNull(oRec("d_date_1")) Or oRec("d_date_1")) = 0 then
...
End if

------------------
/ Torbjörn Hansson, webbutvecklare
Endero Sverige

Medlem sedan dec. 1999826 inlägg
#3

Kommer tillbaka till detta eftersom jag inte fått det till att fungera.

I min databas så registreras antal besök med bland annat det datum som var vid besöket. Problemet är att när det inte varit något besök alls en dag så har inget alls registrerats i db. Som jag förstår toha:s inlägg så förutsätter den väl att det finns en post för varje dag - eller?

När jag nu vill att det ska stå noll(0) på de dagar som inga besök förekommit så har jag stött på problem.

Den här koden listar snällt det som finns men lägger inte in något på "tomma" dagar.

Do While Not rs.EOF
    Response.Write "<td bgcolor=dfdfdf><font face=verdana,arial size=1>"
    Response.Write rs("hpd")
    Response.Write "</td></font>"
    rs.MoveNext
Loop

Frågan kvarstår alltså - hur gör man?

/webb

------------------
Vem ska du göra glad imorgon?

Medlem sedan juni 200032 967 inlägg
#4

kan du inte göra något sänt härnt :q

if rs.eof then
response.write "någe e paj!"
end if

Do While Not rs.EOF
Response.Write "<td bgcolor=dfdfdf><font face=verdana,arial size=1>"
Response.Write rs("hpd")
Response.Write "</td></font>"
rs.MoveNext
Loop

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan dec. 1999826 inlägg
#5

Nej tyvärr, det fick jag inte till att funka.

/webb

------------------
Vem ska du göra glad imorgon?

Medlem sedan juni 200032 967 inlägg
#6

okay, släng upp hela koden så ska vi kika på 'et!

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan dec. 1999826 inlägg
#7

Hela sidan;

<%Response.Buffer = True%>
<html>
<head>
	<title></title>
</head>
<body bgcolor=dfdfdf>
<br><br>
<%
Dim monnr, slutdatum, mon

monnr = Request.QueryString("monad")
slutdatum = 31

If monnr = "02" Then slutdatum = 29
If monnr = "04" Or monnr = "06" Or monnr = "09" Or monnr ="11" Then slutdatum = 30

Select Case monnr
Case "01" mon = "Januari"
Case "02" mon = "Februari"
Case "03" mon = "Mars"
Case "04" mon = "April"
Case "05" mon = "Maj"
Case "06" mon = "Juni"
Case "07" mon = "Juli"
Case "08" mon = "Augusti"
Case "09" mon = "September"
Case "10" mon = "Oktober"
Case "11" mon = "November"
Case "12" mon = "December"
End Select

Set Connect = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\***\***\***\***\statistikdb.mdb"

SQL = "SELECT COUNT( Datum) AS hpd FROM statistik WHERE Datum BETWEEN  #"&year(date)&"-"&monnr&"-01# AND #"&year(date)&"-"&monnr&"-"&slutdatum&"# GROUP BY Datum ORDER BY Datum ASC"

rs.Open SQL, Connect

Response.Write "<center>"

Response.Write "<table border=1 bgcolor=#9f002f cellpadding=1>"
Response.Write "<tr><td colspan=31><font face=verdana,arial color=#FFFFFF size=2><center><b>Besök under "&mon&" månad.</b></center></font></td></tr>"

Response.Write "<tr>"
For i = 1 To slutdatum
Response.Write "<td bgcolor=silver><font face=verdana,arial color=#FFFFFF size=1>"
Response.Write i
Response.Write "</font></td>"
Next
Response.Write "</tr>"

Response.Write "<tr>"

Do While Not rs.EOF
    Response.Write "<td bgcolor=dfdfdf><font face=verdana,arial size=1>"
    Response.Write rs("hpd")
    Response.Write "</td></font>"
    rs.MoveNext
Loop

Response.Write "</tr>"

Response.Write "</table>"
Response.Write "</center>"

Connect.Close
%>
<br><br>
<center>
<form>
<input type="button" value="Stäng" onClick="top.close();">
</form>
</center>
</body>
</html>

Frågan är alltså; hur får jag fram en nolla då det inte finns något registrerat på en dag?

/webb

------------------
Vem ska du göra glad imorgon?

Medlem sedan dec. 200012 464 inlägg
#8

Jag beskriver i text en möjlig lösning.

Använd en variabel som innehåller datum från rs. När du anropat movenext så jämför datumet från föregående post med den nya (Använd funktionen datediff). Om skillnaden är mer än 1 dag så finns det en lucka. Gör en loop där man subtraherar 1 dag (funktionen dateadd) från föregående datum och skriv ut 0:an. Avbryt loopen när föregående datum = datum i RS. Sätt variablen till det nya datumet.

------------------
essentitia preter non sans multiplicandum

275 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)