0

列の値の合計を取得しようとしています。そのため、select ステートメントで SUM() を使用しています。

<%
            sql = "select SUM(OpcCalEstQuantity) as qt_total from [Sheet1$] where cInt(JobEstimateNumber) = '"&cint(request.QueryString("no"))&"' and MccDescription = 'CTP Plate Making & Plates' and MaoOperationDescription = 'Plate Making'"
            rs1.open sql, con, 1, 2
            do while not rs1.eof
            %>
            <td style="padding:3px; text-align:right;"><%=rs1("qt_total")%></td>
            <%
                rs1.movenext
                loop
                rs1.close
            %>

しかし、ブラウザに表示しているときにこのエラーが発生します。

Microsoft JET Database Engine error '80040e14'

Invalid use of Null 

したがって、回避策は vbscript を使用して値をカウントすることだと思いました。しかし、列から値をカウントする関数はありません。

4

2 に答える 2

1

私は SQL と MS Jet エンジンにはあまり興味がありませんが、SUM する列に NULL 値が含まれていると思います。それらを取り除くには、データベースがサポートしている場合は、次のcoalesceような関数を使用できます。

sql = "select SUM(COALESCE(OpcCalEstQuantity, 0)) as qt_total from ......"
于 2012-06-04T08:34:13.863 に答える
1

これを SQL で解決したい場合は、coalesce をお勧めします。
純粋にvbscript/aspで解決したい場合は、ループして合計金額を自分でカウントする必要があります。これを試してください:

<%
    sql = "select OpcCalEstQuantity from [Sheet1$] where cInt(JobEstimateNumber) = '"&cint(request.QueryString("no"))&"' and MccDescription = 'CTP Plate Making & Plates' and MaoOperationDescription = 'Plate Making'"
    rs1.open sql, con, 1, 2
%>

<%  dim total : total = 0
    do while not rs1.eof 
        if NOT(isNull(rs1("OpcCalEstQuantity")) OR rs1("OpcCalEstQuantity")="") then total = total + cDbl(rs1("OpcCalEstQuantity"))
        rs1.movenext
    loop
    rs1.close
%>
<td style="padding:3px; text-align:right;"><%=total%></td>

これが役に立てば幸いです、
エリック

于 2012-06-04T12:29:48.753 に答える