2012-06-04 2 views
0

Я пытаюсь получить сумму значений столбца, потому что я использую SUM() в моей инструкции select.Как суммировать значения столбца с помощью vbscript

<% 
      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 для подсчета значений. Но нет такой функции для подсчета значений из столбца.

+0

Колонок 'JobEstimateNumber 'скорее всего, содержит одно или несколько значений NULL. У меня нет решения, но я сначала задаюсь вопросом, почему вам нужно преобразовать столбец в целое, вместо того, чтобы хранить его как целое. –

ответ

1

Я не очень люблю SQL и MS Jet Engines, но я думаю, что в столбце, который вы хотите использовать СУММ, есть некоторые значения NULL. Чтобы избавиться от них, и если ваша база данных поддерживает его, вы можете использовать функцию coalesce как:

sql = "select SUM(COALESCE(OpcCalEstQuantity, 0)) as qt_total from ......" 
1

Coalesce хорошее предложение, если вы хотите, чтобы решить эту проблему в SQL.
Если вы хотите, чтобы решить эту проблему исключительно в VBScript/осинах, вы должны цикл и подсчитать общее количество до себя, попробуйте следующее:

<% 
    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> 

Надеется, что это помогает,
Erik