vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 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 - Ein- und Umsteiger
Re: Tabelle Spalteninhalt vergleichen 
Autor: Manfred X
Datum: 07.10.15 06:31

Hallo!

Damit das Thema für die Mitlesenden verständlich wird,
zunächst der Link auf den Beispielcode, der der Anfrage zugrunde liegt.
Zum Lesen des Inhalts der CSV-Dateien wird dabei die Klasse cDataTableCSV verwendet.


Wenn eine Datarelation verwendet werden soll, die sich auf Teil-Strings innerhalb
eines Spalten-Inhalts bezieht, ist eine neue Spalte in der Tabelle zu erstellen,
in die dieser Teil-String zeilenweise eingetragen wird.
Die Klasse "cDataTableCSV" enthält die Methode "AddColumn", die eine zusätzliche
leere Spalte in der Tabelle anfügt.
In Deinem Fall könnte eine Routine deshalb etwa so aussehen:
(Zeilen mit nicht-numerischem Teilstring am Content-Ende werden mit dem
Sonderwert DBNull belegt und beim autom. Aufbau der Relation deshalb ignoriert!)
Private Function CreateNumberColumn(ByVal dt As cDataTableCSV, _
    ByVal ColumnEndswithNumber As String) As String
 
    Dim ColumnWithNumber As String = ""
 
    If Not dt.Columns.Contains(ColumnEndswithNumber) Then
       Throw New ArgumentException _
       ("Die Spalte " & ColumnEndswithNumber & _
         " ist nicht in der Tabelle vorhanden")
    End If
 
    dt.AddColumn() 'Spalte in Tabelle anfügen
    'Name der neuen Spalte abfragen
    ColumnWithNumber = dt.Columns(dt.Columns.Count - 1).ColumnName
 
    'Hilfsvariable
    Dim field As String, parts() As String, numberpart As String
    Dim number As Integer
 
    For Each row As DataRow In dt.Rows
 
       field = row(ColumnEndswithNumber).ToString() 'Feldinhalt abfragen
       parts = field.Split(" "c) 'Feldinhalt am Trennzeichen aufspalten 
       numberpart = parts(parts.Length - 1) 'Letzter Abschnitt (=Nummer)
 
       'Prüfen, ob der letzte Teilstring als Integer darstellbar ist
       If Integer.TryParse(numberpart, number) Then
          'Nummer in der neuen Spalte als Zeichenfolge eintragen
          row(ColumnWithNumber) = number.ToString
       Else
          'keine Ziffernfolge im letzten Teilstring !!!
          row(ColumnWithNumber) = DBNull.Value 
       End If
    Next row
 
    'Name der neuen Spalte zurückgeben
    Return ColumnWithNumber
End Function
Anwendung der Routine (Spalten-Bezeichner sind anzupassen).
(Der Typ der Tabellen im Dataset muß beim Methodenaufruf gecastet (DirectCast)
werden, weil das Dataset Instanzen der Datatable-Klasse enthält, die Methode
aber als Parameter Instanzen der davon abgeleiteten Klasse "cDataTableCSV"
benötigt.)
     'Die beiden CSV-Dateien laden 
     ds.Tables.Add(LoadCSV("C:\daten\csv1.csv"))
     ds.Tables.Add(LoadCSV("C:\daten\csv2.csv"))
 
     If Not ds.Tables.Count = 2 Then
        MessageBox.Show("Eine Datei konnte nicht gelesen werden")
        Exit Sub
     End If
 
     'Neue Spalten erstellen und Zeilen mit dem Teilstring (=Nummer) füllen 
     Dim columnwithnumber1 As String = _
       CreateNumberColumn(DirectCast(ds.Tables(0), cDataTableCSV), "SP_13")
 
     Dim columnwithnumber2 As String = _
       CreateNumberColumn(DirectCast(ds.Tables(1), cDataTableCSV), "SP_2")
 
     'Datarelation für die neuen Spalten anpassen 
     Dim dr As New DataRelation _
       ("Artikel", ds.Tables(0).Columns(columnwithnumber1), _
         ds.Tables(1).Columns(columnwithnumber2))
 
     ds.Relations.Add(dr)
Du mußt diese Abläufe noch einmal sorgfältig durchdenken.
Eine "Datarelation" bezieht sich stets auf die Korrespondenz des gesamten Inhalts
der angegebenen Spalten-Paarung. Die "Datarelation" und die zugrundeliegenden
Daten müssen deshalb angepaßt werden, nicht der Code zum Erstellen der Zeilen
in der Datatable, die für die Ausgabe der kombinierten Daten gefüllt wird !!
(In der Praxis beziehen sich DataRelations auf Spalten, die Schlüssel-Werte
enthalten).
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Tabelle Spalteninhalt vergleichen5.616Vegas8506.10.15 23:00
Re: Tabelle Spalteninhalt vergleichen3.773Manfred X07.10.15 06:31
Re: Tabelle Spalteninhalt vergleichen3.130Sony8507.10.15 10:13
Re: Tabelle Spalteninhalt vergleichen3.170Manfred X07.10.15 10:37
Re: Tabelle Spalteninhalt vergleichen3.085Vegas8507.10.15 08:53
Re: Tabelle Spalteninhalt vergleichen3.116Manfred X07.10.15 09:34
Re: Tabelle Spalteninhalt vergleichen3.220Sony8507.10.15 11:16
Re: Tabelle Spalteninhalt vergleichen3.170Manfred X07.10.15 12:02
Re: Tabelle Spalteninhalt vergleichen3.106Vegas8507.10.15 22:44
Re: Tabelle Spalteninhalt vergleichen3.099Manfred X08.10.15 06:24
Re: Tabelle Spalteninhalt vergleichen3.112Vegas8508.10.15 08:35
Re: Tabelle Spalteninhalt vergleichen3.124Manfred X08.10.15 09:00
Re: Tabelle Spalteninhalt vergleichen3.056Vegas8508.10.15 09:20
Re: Tabelle Spalteninhalt vergleichen3.157Manfred X08.10.15 09:39
Re: Tabelle Spalteninhalt vergleichen3.131Vegas8508.10.15 10:35
Re: Tabelle Spalteninhalt vergleichen3.172Vegas8508.10.15 10:36
Re: Tabelle Spalteninhalt vergleichen3.219Manfred X08.10.15 11:37
Re: Tabelle Spalteninhalt vergleichen3.087Vegas8508.10.15 17:01
Re: Tabelle Spalteninhalt vergleichen3.121Vegas8509.10.15 08:43
Re: Tabelle Spalteninhalt vergleichen3.105Manfred X09.10.15 09:36
Re: Tabelle Spalteninhalt vergleichen3.061Vegas8509.10.15 18:55
Re: Tabelle Spalteninhalt vergleichen3.012Vegas8509.10.15 23:37
Re: Tabelle Spalteninhalt vergleichen3.032Vegas8515.10.15 00:15
Re: Tabelle Spalteninhalt vergleichen3.047Manfred X15.10.15 06:28
Re: Tabelle Spalteninhalt vergleichen3.021Vegas8515.10.15 08:33
Re: Tabelle Spalteninhalt vergleichen3.028Manfred X15.10.15 08:41
Re: Tabelle Spalteninhalt vergleichen3.013Vegas8515.10.15 22:07
Re: Tabelle Spalteninhalt vergleichen3.143Manfred X16.10.15 06:31
Re: Tabelle Spalteninhalt vergleichen2.963Vegas8521.09.16 21:15

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