Question

When I run the following SQL statement in SQL Server Management Studio it returns a count of 2

SELECT COUNT(*) 
FROM Daisy_Copy2 
WHERE ChargeCode = '1';

But for some reason when I run the following VB.net code the result variable returns a 0 and doesn't identify that duplicate codes exist.

Dim result As Integer
Using cmdb = New SqlCommand("SELECT COUNT(*) FROM Daisy_Copy2 WHERE ChargeCode = '1'", conn)

Int(result = cmdb.ExecuteScalar())

If result > 1 Then
   MessageBox.Show("Duplicate Codes Exist!", "Billing", _
   MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
   MsgBox(result)
End If
End Using

Can anyone help me understand why?

Any help greatly appreciated.

Was it helpful?

Solution

Instead of ExecuteNonQuery you should use ExecuteScalar

Dim result As Integer = CInt(cmd.ExecuteScalar())

OTHER TIPS

ExecuteNonQuery is normally used for updates or inserts that don't leave a result, so it returns an integer telling you how many rows were affected, not the result itself.

What you most likely are meaning to use is ExecuteScalar which returns the first column of the first row in the result set returned by the query, in this case the integer containing your count.

this is just a way you can use:

Dim Sqlda = New SqlDataAdapter("SELECT COUNT(*) AS tCount FROM Daisy_Copy2 WHERE ChargeCode=1", conn)
Dim sqlds = New DataSet



Sqlda.Fill(sqlds, "Daisy_Copy2")

Dim tblRow As DataRow
For Each tblRow In sqlds.Tables("Daisy_Copy2").Rows
    MsgBox(tblRow("tCount").ToString())
Next

use below link to read more about it

System.Data.SqlClient Namespace

Good luck

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top