Solved Count of records in SQL database not working

Posted on 2011-09-13
Last Modified: 2012-05-12

I am using the code below to add a record to my Table1 and then
see if it is there by using a count of the number of records that
contain the three values I entered. For some resaon it always gets
a zero at the line after  '################
I have hidden my ConnectionString, which definitely works
Public Sub A()
        Dim oDate As String = "10/10/2011" 'Date.Now.ToString
        Dim oText As String = "test"
        Dim oNumber As Decimal = 10.5
        Dim sSQL As String
        sSQL = "Insert Into Table1 ([oDate],[oText], [oNumber]) Select '" & oDate & "' as Expr1, '" & oText & "' as Expr2, " & oNumber & " as Expr3"
        Call oAppend(sSQL)
        Dim oSQL_Check As String = "Select Count(*) As MyCount From Table1 Where [oDate] = '" & oDate & "' And [oText] = '" & oText & "' And [oNumber] = " & oNumber
        If IsThere(oSQL_Check) = False Then
        End If
    End Sub

    Sub oAppend(ByVal sSQL As String)

        Dim cn As New OleDbConnection(ConnectionString)


            '// define the sql statement to execute
            Dim cmd As New OleDbCommand(sSQL, cn)

            '    '// open the connection


        Catch ex As Exception

            If cn.State <> ConnectionState.Closed Then
            End If
        End Try

    End Sub

    Function IsThere(ByVal sSQL_Check As String) As Boolean

        Dim conn As New OleDbConnection(ConnectionString)

            '// define the sql statement to execute
            Dim cmd As New OleDbCommand(sSQL_Check, conn)

            '    '// open the connection
            Dim oCount As Integer = CInt(cmd.ExecuteScalar())

            If oCount > 0 Then
                IsThere = True
                IsThere = False
            End If

        Catch ex As Exception

            If conn.State <> ConnectionState.Closed Then
            End If
        End Try
    End Function

Open in new window

Question by:Murray Brown
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
LVL 17

Assisted Solution

by:Shanmuga Sundaram
Shanmuga Sundaram earned 166 total points
ID: 36528760
did you manually check what this returns in Enterprise maanger

"Select Count(*) As MyCount From Table1 Where [oDate] = '" & oDate & "' And [oText] = '" & oText & "' And [oNumber] = " & oNumber

Author Comment

by:Murray Brown
ID: 36528803
I'm not sure what you mean. I looked at the table data and was there
LVL 39

Accepted Solution

Pratima Pharande earned 167 total points
ID: 36528865
Call oAppend(sSQL)
        Dim oSQL_Check As String = "Select Count(*) As MyCount From Table1 Where [oDate] = '" & oDate & "' And [oText] = '" & oText & "' And [oNumber] = " & oNumber
        If IsThere(oSQL_Check) = False Then
        End If

see the query in MsgBox(oSQL_Check)
and run directly on dtabase ? what it results ?
Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

LVL 75

Expert Comment

by:Anthony Perkins
ID: 36529006
Would you be open to doing this a better way?
LVL 17

Expert Comment

by:Shanmuga Sundaram
ID: 36529080
I asked whether it is possible for you to get that query during runtime (in debug mode) and execute it in sql enterprise manager and ensure that the query is correct.

Expert Comment

ID: 36529339
I attached some code that I use for to access the db stuff you need.  If you use the SqlDataReader class to get your data, you can find what you are looking for.
Dim SQLConn As New SqlConnection() 'The SQL Connection
        Dim SQLCmd As New SqlCommand() 'The SQL Command
        Dim reader As SqlDataReader

        Dim RegistryClass As Registry_Class = New Registry_Class()
        Dim ConnString As String = RegistryClass.GetSQLConnectString()

            SQLConn.ConnectionString = ConnString 'Set the Connection String
            SQLConn.Open() 'Open the connection
            SQLCmd.Connection = SQLConn 'Sets the Connection to use with the SQL Command

            Dim SQLStr As String = "SELECT * FROM dbo.Table_ID"

            SQLCmd.CommandText = SQLStr 'Sets the SQL String
            reader = SQLCmd.ExecuteReader()

            'Get what you need here
            Dim FieldCount As Integer = reader.FieldCount ' Gets the number of columns in the current row.
            Dim HasRows As Boolean = reader.HasRows ' Gets a value that indicates whether the SqlDataReader contains one or more rows.
            Dim RecordsAffected As Integer = reader.RecordsAffected ' Gets the number of rows changed, inserted, or deleted by execution of the Transact-SQL statement.
            Dim VisibleFieldCount As Integer = reader.VisibleFieldCount ' Gets the number of fields in the SqlDataReader that are not hidden.

            ' You can iterate through the results here.
            While reader.Read()
                Dim listitem As ListViewItem = ListView1.Items.Add(reader(0))
            End While
        Catch ex As Exception
            MsgBox("RecipeSelector_Load() Error:" + ex.Message)
        End Try

        SQLConn.Close() 'Close the connection
        SQLConn = Nothing
        SQLCmd = Nothing

Open in new window

LVL 40

Assisted Solution

by:Jacques Bourgeois (James Burger)
Jacques Bourgeois (James Burger) earned 167 total points
ID: 36529397
You are handling oDate as text. There is probably a difference in the format sent by your application and the one expected by the server.

Date.Now.ToString won't give the same format on all computers, because it it dependant on the Control Panel. Your server or database on its side is expecting a date format that migth be different. In SQL Server, it is month-day-year by default, but this could have been changed by the DBA.

Try never to manipulate a date as String in your code. Date.ToString should be reserved for display.

There are many ways to deal with dates, here is a common one that formats the date as month-day-year:
String.Format("{0:MM-dd-yyyy}", Date.Today)

Open in new window

Simply adjust the format to what is expected by your server.

And note that I used Date.Today instead of Date.Now. Your code and comments seem to imply that you are calling Now but treat only the date. Now is a very bad thing then, because it also sets the time. This can cause problems later in searchs and date manipulations if you do not care about the time. Reserve Now for when you really need the time.

Author Closing Comment

by:Murray Brown
ID: 36529633
thank you for the help

Author Comment

by:Murray Brown
ID: 36534397
Hi acperkins. Yes I would like to find a better way. I have posted a further question relating to this at

Featured Post

Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Occasionally there is a need to clean table columns, especially if you have inherited legacy data. There are obviously many ways to accomplish that, including elaborate UPDATE queries with anywhere from one to numerous REPLACE functions (even within…
Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
In this video, viewers are given an introduction to using the Windows 10 Snipping Tool, how to quickly locate it when it's needed and also how make it always available with a single click of a mouse button, by pinning it to the Desktop Task Bar. Int…
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…

628 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question