12. november 2003 - 00:06Der er
3 kommentarer og 1 løsning
Håndtering af NULL-værdier ved beregning
Ved afvikling af følgende kode får jeg:
Microsoft VBScript runtime error '800a000d' Type mismatch
/adm_pp.asp, line 42
line 42 er: disc = (brutto - netto)
det skyldes formentlig, at rs2("brutto") er en NULL-værdi. Jeg har forsøgt med FormatNumber men uden held. 'uddrag fra koden..... '--------------------- strSQL = "SELECT * FROM product WHERE package = True ORDER BY prodarea_id, prod_sort" Set rs = Conn.Execute(strSQL)
if Not rs.EOF then Response.Write t Do Until rs.EOF brutto = 0 netto = FormatNumber(rs("price"),2) disc = 0 strSQL2 = "SELECT SUM(price) AS brutto FROM product WHERE product_id IN (SELECT sub_product_id FROM package WHERE main_product_id = " & rs("product_id") & ")" Set rs2 = Conn.Execute(strSQL2) if Not rs2.EOF then brutto = FormatNumber(rs2("brutto"),2) end if disc = (brutto - netto) rs2.Close i = i + 1 if i mod 2 = 0 then Response.Write "<tr id='bgcolor2'>" else Response.Write "<tr>" end if Response.Write "<td>" & rs("prodtext_short") & "</td>" Response.Write "<td align='right'>" & brutto & "</td>" Response.Write "<td align='right'>" & netto & "</td>" Response.Write "<td align='right'>" & discount & "</td>" Response.Write "<td align='center'><a href='adm_pp.asp?A=DETAIL&id=" & rs("product_id") & "'><img src='images/pil.gif'></a>" Response.Write "</tr>" rs.MoveNext Loop Response.Write "</table>" end if
Jeg får mismatch samme sted (har prøvet både med+uden FormatNumber), koden ser nu ud som følger:
strSQL = "SELECT * FROM product WHERE package = True ORDER BY prodarea_id, prod_sort" Set rs = Conn.Execute(strSQL)
if Not rs.EOF then Response.Write t Do Until rs.EOF brutto = 0 netto = rs("price") disc = 0 strSQL2 = "SELECT SUM(price) AS brutto FROM product WHERE product_id IN (SELECT sub_product_id FROM package WHERE main_product_id = " & rs("product_id") & ")" Set rs2 = Conn.Execute(strSQL2) if not isNull(rs2("brutto")) then brutto = rs2("brutto") end if disc = (brutto - netto) rs2.Close i = i + 1 if i mod 2 = 0 then Response.Write "<tr id='bgcolor2'>" else Response.Write "<tr>" end if Response.Write "<td>" & rs("prodtext_short") & "</td>" Response.Write "<td align='right'>" & brutto & "</td>" Response.Write "<td align='right'>" & netto & "</td>" Response.Write "<td align='right'>" & disc & "</td>" Response.Write "<td align='center'><a href='adm_pp.asp?A=DETAIL&id=" & rs("product_id") & "'><img src='images/pil.gif'></a>" Response.Write "</tr>" rs.MoveNext Loop Response.Write "</table>" end if
Har rettet til nedenstående nu og det virker; synes dog at du skal have point a lligevel.
strSQL = "SELECT * FROM product WHERE package = True ORDER BY prodarea_id, prod_sort" Set rs = Conn.Execute(strSQL)
if Not rs.EOF then Response.Write t Do Until rs.EOF brutto = 0 netto = rs("price") disc = 0 strSQL2 = "SELECT SUM(price) AS brutto FROM product WHERE product_id IN (SELECT sub_product_id FROM package WHERE main_product_id = " & rs("product_id") & ")" Set rs2 = Conn.Execute(strSQL2) if not isNull(rs2("brutto")) then brutto = rs2("brutto") end if disc = (FormatNumber(bruttom2) - FormatNumber(netto,2)) rs2.Close i = i + 1 if i mod 2 = 0 then Response.Write "<tr id='bgcolor2'>" else Response.Write "<tr>" end if Response.Write "<td>" & rs("prodtext_short") & "</td>" Response.Write "<td align='right'>" & FormatNumber(brutto,2) & "</td>" Response.Write "<td align='right'>" & FormatNumber(netto,2) & "</td>" Response.Write "<td align='right'>" & FormatNumber(disc,2) & "</td>" Response.Write "<td align='center'><a href='adm_pp.asp?A=DETAIL&id=" & rs("product_id") & "'><img src='images/pil.gif'></a>" Response.Write "</tr>" rs.MoveNext Loop Response.Write "</table>" end if
Synes godt om
Ny brugerNybegynder
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.