2017-08-09 26 views
-1

SQL Sumクエリの結果をTextBoxに取得するにはどうすればよいですか?ここに私のコードです:
私はText112にSQL合計の結果を取得する必要があります。VB6 SQL Sumの結果をテキストボックスに取得する方法

If rs3.State <> 0 Then rs3.Close 
    rs3.Open "select sum(TotalHours) as thrs from tbldwardetails where employeesid =" & Val(empids) & " And dwardate=" & Val(dwardate), db, 3, 3 
    If rs3.RecordCount <> 0 Then 
     Text112.Text = rs3!thrs 
    Else 

    End If 
+0

あなたの合計は常に0であり、あなたが右のテキストボックスコントロールに渡していないされていない限り、あなたが実際にIMO正しいことをやっています。クエリの結果をテストするためにEOFとBOFを選択しますが、レコードセットで何も実行していない場合は、すぐにそれを閉じてフィールドを使用することをお勧めします。パフォーマンスの問題の値を取得するとき – Learning

+1

*間違ったことをしているのではないかと思われます*選択基準に一致する行がない場合は結果が返されます。結果* always *は1列の行が1つありますが、 RecordCount、BOF、EOFはすべて愚かなものです。この関数は、合計が0になる合計と区別するためにNullを返します。一部の愚か者は、SQL式でNullを0に強制しますが、Nullは0ではなく特定の意味を持つため、この場合、「何も一致しません」。 – Bob77

+0

SUMを使用しているので、実際にはnullになる可能性があります。条件に見つからなかった行がない場合、SUMはCOUNTとは異なることを忘れていました。彼はおそらく、テキストボックスコントロールに値を渡す際にNULLエラーの無効な使用を受け取る可能性がありますが、言及しませんでした。 SUMやCOUNTは常に行を返すので、EOFとBOFの結果をテストするのは意味をなさないでしょう。アップが投票されました。 – Learning

答えて

0

そのSum()リターン常に1つの記録、ないレコードが条件を満たしていない場合は、多分ナル返された値を注意してください。

ですから、返された値がnullかそうでない場合にのみ、チェックする必要があります。

If not IsNull(rs3!thrs) Then 
    Text112.Text = rs3!thrs 
Else 
    Text112.Text = "0" ' or vbNullString 
End If 

N.B.

  • サーバー側(adUseServer)がデフォルトとは常に-1を返します
  • をクライアント側(adUseClientのは)レコード数
0

を返している:価値がカーソル側から依存しているためでRecordCountを使用すべきではありません結果がnullの場合、よりスマートなクエリを使用して値を返すことができます。

If rs3.State <> 0 Then rs3.Close 

rs3.Open "SELECT IFNULL(SUM(TotalHours), 0) as thrs from tbldwardetails where employeesid =" & Val(empids) & " And dwardate=" & Val(dwardate), db, 3, 3 

If rs3.RecordCount <> 0 Then 
    Text112.Text = rs3!thrs 
Else 
    '? 
End If 

上記のクエリでは、SUM関数がNULLを返した場合、IFNULL関数は0を返します。

申し訳ありませんが、私はMySQLタグに気づきました。私はMySQLを使ったことが一度もありませんが、W3CのドキュメントにはIFNULL関数が示されており、同じように使用されているようです。

W3Schoolsのドキュメント:https://www.w3schools.com/sql/sql_isnull.asp

関連する問題