Cody.Stewart
Cody.Stewart

Reputation: 577

Why is this VB code failing on me?

Hers the form code:

Imports TechSupportData

Public Class frmOpenIncidents

Private Sub frmOpenIncidents_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim incidentList As List(Of Incident)
    Try
        incidentList = IncidentDB.GetIncidents
        If incidentList.Count > 0 Then
            Dim incident As Incident
            For i As Integer = 0 To incidentList.Count - 1
                incident = incidentList(i)
                lvIncidents.Items.Add(incident.ProductCode)
                lvIncidents.Items(i).SubItems.Add(incident.DateOpened)
                lvIncidents.Items(i).SubItems.Add(incident.CustomerID)
                lvIncidents.Items(i).SubItems.Add(incident.TechID)
                lvIncidents.Items(i).SubItems.Add(incident.Title)
            Next
        Else
            MessageBox.Show("All Incidents are taken care of")
            Me.Close()
        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message, ex.GetType.ToString)
        Me.Close()
    End Try
End Sub
End Class

And heres the class its working with:

Imports System.Data.SqlClient

Public Class IncidentDB
    Public Shared Function GetIncidents() As List(Of IncidentDB)
        Dim incidentList As New List(Of IncidentDB)
        Dim connection As SqlConnection = TechSupportDB.GetConnection
        Dim selectStatement As String _
            = "SELECT CustomerID, ProductCode, TechID, DateOpened, Title" _
            & "FROM(Incidents)" _
            & "WHERE DateClosed IS NULL"
        Dim selectCommand As New SqlCommand(selectStatement, connection)
        Try
            connection.Open()
            Dim reader As SqlDataReader = selectCommand.ExecuteReader()
            Dim incident As Incident
            Do While reader.Read
                incident = New Incident
                incident.IncidentID = reader("IncidentID").ToString
                incident.CustomerID = reader("CustomerID").ToString
                incident.ProductCode = reader("ProductCode").ToString
                incident.DateOpened = reader("DateOpened").ToString
            Loop
            reader.Close()
        Catch ex As Exception
            Throw ex
        Finally
            connection.Close()
        End Try
        Return incidentList
    End Function
End Class

Heres the error I'm getting from Visual Studio:

Error 1 Value of type 'System.Collections.Generic.List(Of TechSupportData.IncidentDB)' cannot be converted to 'System.Collections.Generic.List(Of TechSupportData.Incident)'. C:\Users\Cody\Desktop\School\Current\ITECH4269 Visual Basic\Assignment2CodyStewart\Assignment2CodySteawrt\Assignment2CodySteawrt\frmOpenIncidents.vb 8 28 Assignment2CodySteawrt

Any guidance or suggestions would be much appreciated, thanks a lot.

Upvotes: 0

Views: 124

Answers (1)

martin clayton
martin clayton

Reputation: 78115

In class frmOpenIncidents you've defined incidentList as a list of Incidents:

Dim incidentList As List(Of Incident)

then set it:

incidentList = IncidentDB.GetIncidents

But that IncidentDB method is defined as returning a list of Incident*DB*:

Public Shared Function GetIncidents() As List(Of IncidentDB)

Solution might be to change the first definition to this?

Dim incidentList As List(Of IncidentDB)

You need to choose a name for the class - Incident or IncidentDB - and use it consistently to get rid of all similar errors.

Upvotes: 1

Related Questions