vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
BindingSource meldet " Objekte ... müssen alle denselben Typ haben" 
Autor: Schudi
Datum: 30.12.22 20:26

Moin,

Ich verzweifele gerade an folgendem Problem:

Ich habe ein einfaches Projekt mit einem DataSet mit einer DataTable und der entsprechenden Bindingsource.

Die DataTable habe ich in der IDE angelegt und durch Ziehen aus "Datenquellen" auf die Form das entsprechende DGV angelegt.

Nun möchte ich Daten importieren und habe dazu folgenden Code geschrieben, der auf einem Beispiel aus Microsoft / Learn stammt:

Imports System.ComponentModel
 
Public Class frmKundendaten
 
Public ImportZeile As String()
Private Sub ImportKundencsvToolStripMenuItem_Click(sender As Object, e As _
  EventArgs) Handles 
            ImportKundencsvToolStripMenuItem.Click
 
If MessageBox.Show("Beim Import werden alle vorhandenen Daten gelöscht bzw." & _
  "durch die importierten Daten ersetzt." & vbLf & vbLf _
& "Import wirklich starten?", "Hinweis", MessageBoxButtons.OKCancel, _
MessageBoxIcon.Question) = DialogResult.OK Then
 
Using OfdImport As New OpenFileDialog With {
      .DefaultExt = "*.csv",
      .FileName = "Kunden.csv",
      .AddExtension = True,
      .ValidateNames = True,
      .Multiselect = False,
      .ReadOnlyChecked = True,
      .CheckFileExists = True,
      .Filter = "CSV-Dateien|*.CSV|All files (*.*)|*.*"
      }
 
      If OfdImport.ShowDialog = DialogResult.OK Then
         Using MyReader As New FileIO.TextFieldParser(OfdImport.FileName, _
           System.Text.Encoding.Default)
               MyReader.TextFieldType = FileIO.FieldType.Delimited
               MyReader.SetDelimiters(";")
 
               ImportZeile = Nothing
 
               Try
                   'Kopfzeile vorlesen
                   ImportZeile = MyReader.ReadFields()
               Catch ex As Exception
                   MessageBox.Show(ex.Message)
               End Try
 
               While Not MyReader.EndOfData
               Try
                  ImportZeile = MyReader.ReadFields()
                  If ImportZeile(0) IsNot "" Then
                     Application.DoEvents()
                     DTKundenBindingSource.AddNew()
                  End If
               Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                     MsgBox("Line " & ex.Message & "is not valid and will be" & _
                       "skipped.")
               Catch ex As Exception
                     MessageBox.Show(ex.Message)
               End Try
               End While
          End Using
 
          MessageBox.Show("Kundendatenimport abgeschlossen", "Hinweis", _
            MessageBoxButtons.OK, MessageBoxIcon.Information)
       End If
 
            End Using
       End If
 
    End Sub
 
    Private Sub DTKundenBindingSource_AddingNew(sender As Object, e As _
      AddingNewEventArgs) Handles DTKundenBindingSource.AddingNew
 
        e.NewObject = Kunde.CreateKunde()
 
End Sub
 
End Class
 
Public Class Kunde
 
    Private KdNr As Int32 = 0
    Private KdName As String = String.Empty
    Private KdLogin As String = String.Empty
    Private KdPw As String = String.Empty
    Private KdGetBE As Boolean = False
    Private KdSendBR As Boolean = False
    Private KdSendOK As Boolean = False
    Private KDSendPL As Boolean = False
    Private KDSendPLF As Boolean = False
    Private KDSendKdPL As Boolean = False
    Private KDSendKdPLF As Boolean = False
 
    Private Sub New()
 
        KdNr = CType(frmKundendaten.ImportZeile(0), Int32)
        KdName = frmKundendaten.ImportZeile(1)
        KdLogin = frmKundendaten.ImportZeile(2)
        KdPw = frmKundendaten.ImportZeile(3)
        If frmKundendaten.ImportZeile(5) = "-1" Then
            KdGetBE = True
        End If
        If frmKundendaten.ImportZeile(6) = "-1" Then
            KdSendBR = True
        End If
        If frmKundendaten.ImportZeile(7) = "-1" Then
            KdSendOK = True
        End If
        If frmKundendaten.ImportZeile(8) = "-1" Then
            KDSendPL = True
        End If
        If frmKundendaten.ImportZeile(9) = "-1" Then
            KDSendPLF = True
        End If
        If frmKundendaten.ImportZeile(10) = "-1" Then
            KDSendKdPL = True
        End If
        If frmKundendaten.ImportZeile(11) = "-1" Then
            KDSendKdPLF = True
        End If
    End Sub
 
    Public Shared Function CreateKunde() As Kunde
        Return New Kunde()
    End Function
 
End Class
Für jeden Datensatz, der aus der Importdatei importiert werden soll, kommt die Meldung:

Objekte, die zur Liste einer BindingSource hinzugefügt werden, müssen alle _
  denselben Typ haben.
Die Felder der Klasse "Kunde" entsprechen den Feldern der DataTable "DTKunden". Das habe ich mehrfach kontrolliert.

Was mache ich falsch? Stehe total auf dem Schlauch.

Herzlichen Dank.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
BindingSource meldet " Objekte ... müssen alle denselben Typ...333Schudi30.12.22 20:26

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel