Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Specified Cast Is not Valid VB.NET

Posted on 2009-04-10
7
Medium Priority
?
900 Views
Last Modified: 2013-11-26
Hello,

I'm working on a project and I'm almost there but keep running into errors....

I'm getting the error "Specified Cast Is Not Valid" for the following line:

itmListItem.SubItems.Add(myData.GetString(shtCntr))

This code is to populate a listview.
Any help is greatly appreciated!

thanks!

Imports System.Data.OleDB
 
Public Class ListViewData
 
    Public Sub FillListView(ByRef MyListView As ListView, _
                                                        ByRef myData As OleDbDataReader)
        Dim lvwColumn As ColumnHeader
        Dim itmListItem As ListViewItem
 
        Dim strTest As String
 
        Dim shtCntr As Short
 
        MyListView.Clear()
        For shtCntr = 0 To myData.FieldCount() - 1
            lvwColumn = New ColumnHeader()
            lvwColumn.Text = myData.GetName(shtCntr)
            MyListView.Columns.Add(lvwColumn)
        Next
 
        Do While myData.Read
            itmListItem = New ListViewItem()
            strTest = IIf(myData.IsDBNull(0), "", myData.GetString(0))
            itmListItem.Text = strTest
 
            For shtCntr = 1 To myData.FieldCount() - 1
                If myData.IsDBNull(shtCntr) Then
                    itmListItem.SubItems.Add("")
                Else
                    itmListItem.SubItems.Add(myData.GetString(shtCntr))
                End If
            Next shtCntr
 
            MyListView.Items.Add(itmListItem)
        Loop
    End Sub
End Class
 
 
 
 
 
***Execute Code***
 
Private Sub cmdSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSearch.Click
 
        Dim myCon As OleDbConnection
        Dim sqlCmd As OleDbCommand = New OleDbCommand("SELECT PendingClaimNum, Last, First, DatePending, Custodian FROM Pending WHERE Last Like '" & txtLastName.Text & "'")
        Dim myData As OleDbDataReader
        Dim itmListItem As ListViewItem
        Dim lvhHelper As ListViewData = New ListViewData()
        myCon = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\diw07\My Documents\Daily Backups\phone memo backend.mdb")
 
        Try
            myCon.Open()
            sqlCmd.Connection = myCon
            myData = sqlCmd.ExecuteReader
            lvhHelper.FillListView(MyListView, myData)
            myCon.Close()
        Catch eSql As System.Data.OleDb.OleDbException
            MessageBox.Show(eSql.ToString)
        End Try
 
    End Sub

Open in new window

0
Comment
Question by:c9k9h
[X]
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
  • 4
  • 3
7 Comments
 
LVL 18

Expert Comment

by:Sethi
ID: 24118210
Try adding ToString in the end like this:
itmListItem.SubItems.Add(myData.GetString(shtCntr).ToString)
0
 

Author Comment

by:c9k9h
ID: 24118317
Same error.... Is this another SQL related issue?
0
 
LVL 18

Accepted Solution

by:
Sethi earned 2000 total points
ID: 24118404
Nope. Looks like you are not using the dataReader correctly. Please see the following link for a sample code in the end of the page:
http://msdn.microsoft.com/en-us/library/haa3afyz(VS.71).aspx
0
What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

 

Author Comment

by:c9k9h
ID: 24130670
I'm not sure that is it either.. I changed the query a bit to hit another (simpler table) and it worked... well kind of.

I tried this query:

Dim sqlCmd As OleDbCommand = New OleDbCommand("SELECT EmpID, LastName, FirstName FROM Employees")

And it returned results.

The results were only the values in the column "EmpID" and they were put in columns from left to right in the list... Not what I was trying to accomplish... Any ideas?
0
 
LVL 18

Expert Comment

by:Sethi
ID: 24130700
I am sorry, I have no idea on this.
0
 

Author Comment

by:c9k9h
ID: 24131151
Okay No Problem!

It turns out it was a problem with Date/TIme columns, I'm going to use a datagrid instead i think.


Thanks!
0
 
LVL 18

Expert Comment

by:Sethi
ID: 24131567
Sounds good.
0

Featured Post

Docker-Compose to Simplify Multi-Container Builds

Our veteran DevOps Author takes you through how to build a multi-container environment, managed with a single utility in order to simplify your deployments.

Question has a verified solution.

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

For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…

721 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