Asså jag har suttit och kollat igenom den gång på gång men jag hittar absolut inget fel ändå får jag inte rätt värde.
Set objRS = objConn.Execute("SELECT Sum(antal) AS st, Sum(pris * antal) AS totalt FROM kundvagn WHERE user = '" & strUser & "'")
If objRS.Eof Then
Response.Write "0 artiklar i kundvagnen totalt: 0:-"
Else
Response.Write objRS("st") & " artiklar i kundvagnen totalt: " & FormatNumber(objRS("totalt"),0) & ":-"
End If
tabellen är helt tom och den vill fortfarande inte skriva ut "0 artiklar i kundvagnen totalt: 0:-"
Vad kan va fel?
LedelMedlem sedan dec. 2004736 inlägg SUM() returnerar väl ett värde, i det här fallet på antalet. Detta blir 0, men för att du ska få med informationen returneras det ju en rad till din objRS, och därmed finns det en rad i den.
Vad skriver objRS.RecordCount ut för antal träffar?
Peter SMedlem sedan dec. 20025 483 inlägg Det är för att SUM() returnerar NULL om inga träffar fås. Därför får du alltid en returrad.
Jo den borde väl returnera 0 men det gör det inte utan värdet är helt tomt när databasen är tom så att säga.
objRS.RecordCount skriver ut -1 (Även när det finns värde i databasen)
Men ifall det skulle returnera null borde ju "If objRS("st") = null Then" fungera?
Men det gör det inte.
Något förslag hur man kan lösa det? :)
Peter SMedlem sedan dec. 20025 483 inlägg Nej, den borde inte returnera 0 eftersom ingen summering skett. I stället returneras NULL (vilket du kan se genom att skriva t.ex. response.write isnull(objrs(0))).
Japp det returnerade True när databasen är tom så testade att ändra till detta
Set objRS = objConn.Execute("SELECT Sum(antal) AS st, Sum(pris * antal) AS totalt FROM kundvagn WHERE user = '" & strUSER & "'")
If isnull(objrs(0)) = True Then
Response.Write "0 artiklar i kundvagnen totalt: 0:-"
Else
Response.Write objRS("st") & " artiklar i kundvagnen totalt: " & FormatNumber(objRS("totalt"),0) & ":-"
End If
Och det funkar då, men kan jag göra såhär eller kommer det börjar krångla på något sätt längre fram?
Peter SMedlem sedan dec. 20025 483 inlägg Det kommer att fungera såvida inte "antal" eller "pris" innehåller NULL på någon rad i tabellen :)
LarsGMedlem sedan dec. 200012 464 inlägg NULL-värden elimineras vid summering. Resultatet blir null om alla rader är null.
TroxyMedlem sedan mars 20041 505 inlägg Om du vill returnera 0 om inga poster finns så kan du använda coalesce:
SELECT Coalesce(Sum(antal), 0) AS st ...