vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 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
CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 15.09.15 00:02

Bin noch blutiger Anfänger da ich momentan mehr bastele als ich verstehe, muss ich nun mal Fachleute fragen.

Folgendes ich habe eine CSV mit 15 spalten und 18648 zeilen, diese würde ich gerne durchsuchen nach einem bestimmtem Wort.
Dann in der Zeile wo das Wort gefunden wurde, sollte die komplette spalte in einer box wiedergegeben werden.

Beispiel:

Das;ist;ein;gutes;forum;test
Hallo;Welt;schönes;wetter;heute;test
Ich;bin;ein;test;123;

Nun soll mein Programm z.b nach dem Wort test suchen und mir dann die erste spalte wo test in der Zeile vorkommt in einer textbox oder richtextbox oder ListView ausgeben was dafür am besten geeignet ist.
Da die CSV 18648 Zeilen hat würde ich gerne das auf 300 Zeilen begrenzen, so das immer nach 300 zeilen eine neuen csv gespeichert wird und danach die nächsten 300 abgearbeitet werden bis die 18648 zeilen komplett fertig sind.


Ist das Möglich? Wenn ja, wie?

Viele Grüße

Hier noch mein Aktueller stand leider komm ich nicht weiter.

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
   Handles Button1.Click
 
        Dim file_open As New OpenFileDialog
        file_open.Filter = "csv-dateien|*.csv"
        file_open.AddExtension = True
 
 
        If file_open.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim auswahlListe As New List(Of String)
            For Each zeile As String In IO.File.ReadAllLines(file_open.FileName)
                If zeile.Contains("in stock") Then
                    auswahlListe.Add(zeile)
                End If
            Next
            RichTextBox1.Text = (String.Join(vbNewLine, auswahlListe.ToArray))
 
      End If
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 15.09.15 18:12

Hallo!

Probier mal diese Variante ....
   Private Sub btn_Click(sender As System.Object, e As System.EventArgs) _
     Handles btn.Click
 
        Const linesperfile As Integer = 300 'max. Zeilen pro Ausgabedatei
        Dim filecounter As Integer = 0
        Dim linecounter As Integer = 0
        Dim filename As String = "C:\daten\outx" 'Ausgabedatei(en)
 
        Dim file_open As New OpenFileDialog
        file_open.Filter = "csv-dateien|*.csv"
        file_open.AddExtension = True
 
        Dim sr As IO.StreamWriter = Nothing
 
        If file_open.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim auswahlListe As New List(Of String)
 
            For Each zeile As String In IO.File.ReadAllLines(file_open.FileName)
                Dim fields As New List(Of String)(zeile.Split(";"c))
                If fields.Contains("in stock") Then
 
                    If linecounter = 0 Then
                        filecounter += 1
                        sr = New IO.StreamWriter(filename & "00" & _
                          filecounter.ToString & ".csv")
                    End If
 
                    sr.WriteLine(zeile)
                    linecounter += 1
 
                    If linecounter = linesperfile Then
                        sr.Close()
                        linecounter = 0
                    End If
                End If
            Next zeile
            sr.Close()
        End If
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 15.09.15 21:29

Vielen Dank funktioniert sehr gut

Noch eine frage dazu wie kann ich nun es so machen das nur spalte 3 und 5 gespeichert werden ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 15.09.15 21:36

Hallo!

Durch die Split-Methode wird die gelesene Zeile
in eine null-basierte Liste von Feldern aufgeteilt.

Statt: sr.writeline(zeile)
jetzt: sr.writeline(fields(2) & ";" & fields(4))

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 15.09.15 21:50

Perfekt

Eins noch dann habe ist es so wie ich es wollte.

Kann mann die daten auch erst erstellen wenn ich auf einen zweiten button klicke ?

Also einen zum öffnen und einem zum speichern.

Und ich würde gerne bevor die spalten gespeichert werden sie nocheinmal in einer richtextbox mir ansehen können.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 15.09.15 21:56

Klar geht das.
Erstelle auf Formularebene (außerhalb von Subs/Functions) eine Stringvariable:
Private Filename_In as string

Dort wird der Dateiname gespeichert, der von OpenFileDialog
nach Benutzerauswahl zurückgegeben worden ist.

Im Click-Event des Speichern-Buttons wird dann die dort zugewiesene Zeichenfolge
verwendet, um die Datei zu öffnen und die Daten zu lesen.



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 15.09.15 22:22

So ?
Public Class Form1
 
    Private Filename_in As String
 
    Private Sub btn_Click(sender As System.Object, e As System.EventArgs) _
      Handles btn.Click
 
 
        Const linesperfile As Integer = 300 'max. Zeilen pro Ausgabedatei
        Dim filecounter As Integer = 0
        Dim linecounter As Integer = 0
        'Dim filename As String = "C:\Users\xxx\Documents\test" 'Ausgabedatei( _
          en)
 
        Dim file_open As New OpenFileDialog
        file_open.Filter = "csv-dateien|*.csv"
        file_open.AddExtension = True
 
        Dim sr As IO.StreamWriter = Nothing
 
        If file_open.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim auswahlListe As New List(Of String)
 
            For Each zeile As String In IO.File.ReadAllLines(file_open.FileName)
                Dim fields As New List(Of String)(zeile.Split(";"c))
                If fields.Contains("in stock") Then
 
                    If linecounter = 0 Then
                        filecounter += 1
                        sr = New IO.StreamWriter(Filename_in & "00" & _
                          filecounter.ToString & ".csv")
                    End If
                    sr.WriteLine(fields(2) & ";" & fields(7))
                    linecounter += 1
 
                    If linecounter = linesperfile Then
                        sr.Close()
                        linecounter = 0
                    End If
                End If
            Next zeile
            sr.Close()
        End If
    End Sub
 
    Private Sub save_Click(sender As System.Object, e As System.EventArgs) _
      Handles save.Click
        IO.File.ReadAllLines(Filename_in)
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 15.09.15 22:38

Eher wohl so ....
(Im Beispiel werden alle Controls NICHT im Designer, sondern per Code erstellt!)
Public Class frmCSV
 
    Dim WithEvents btn_In As New Button _
              With {.Parent = Me, .Text = "CSV-IN"}
 
    Dim WithEvents btn_out As New Button _
              With {.Parent = Me, .Text = "CSV_out", .Left = 150}
 
    Dim ofd As New OpenFileDialog
 
    Dim tbo As New TextBox With _
        {.Parent = Me, .Top = 50, .Width = 400, .Height = 400, _
         .Multiline = True}
 
    Dim FileName_In As String = ""
 
 
    Private Sub frmCSV_Load(sender As System.Object, _
                      e As System.EventArgs) Handles MyBase.Load
 
        Me.Width = 420 : Me.Height = 500
 
    End Sub
 
 
    Private Sub btn_In_Click(sender As Object, _
                      e As System.EventArgs) Handles btn_In.Click
        'Eingabedatei abfragen
        With ofd
            .Filter = "CSV|*csv"
            .CheckFileExists = True
            .Multiselect = False
            If .ShowDialog = _
                Windows.Forms.DialogResult.OK Then FileName_In = .FileName
 
            'Eingabedatei: Inhalt anzeigen  
            tbo.Text = IO.File.ReadAllText(.FileName)
        End With
    End Sub
 
 
    Private Sub btn_out_Click(sender As Object, _
        e As System.EventArgs) Handles btn_out.Click
 
        'Statt Konstanten könnten Dialogeingaben verwendet werden 
        Const linesperfile As Integer = 300 'max. Zeilen pro Ausgabedatei
        Const filename As String = "C:\daten\outx" 'Ausgabedatei(en)
        Const Searchstring As String = "in stock"
 
        Dim filecounter As Integer = 0
        Dim linecounter As Integer = 0
 
        Dim sr As IO.StreamWriter = Nothing
 
        If IO.File.Exists(FileName_In) Then
            For Each zeile As String In IO.File.ReadAllLines(FileName_In)
                Dim fields As New List(Of String)(zeile.Split(";"c))
                If fields.Contains(Searchstring) Then
 
                    If linecounter = 0 Then
                        filecounter += 1
                        sr = New IO.StreamWriter(filename & "00" & _
                          filecounter.ToString & ".csv")
                    End If
 
                    If fields.Count >= 5 Then
                        sr.WriteLine(fields(2) & ";" & fields(4))
                        linecounter += 1
 
                        If linecounter = linesperfile Then
                            sr.Close()
                            linecounter = 0
                        End If
                    End If
                End If
            Next zeile
            sr.Close()
        End If
    End Sub
End Class


Beitrag wurde zuletzt am 15.09.15 um 22:43:43 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 15.09.15 23:01

Danke so klappt es

Hatte da ja komplett was falsches gemacht

Muss nun nur noch bei der textbox anstatt tbo.Text = IO.File.ReadAllText(.FileName),
es hinbekommen das er mit die fields(2) & ";" & fields(4)) anzeigt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 15.09.15 23:13

Das geht genau so, wie ich es bereits für die Ausgabe gemacht habe.

Zeilen mit Readalllines lesen,
In einer Schleife jede zeile mit Split in eine Fields-Liste zerlegen
- falls mindestens 5 felder vorhanden sind
--- die gewünschten Felder per Index anzeigen (AppendText-Methode der Textbox)

Beitrag wurde zuletzt am 15.09.15 um 23:14:11 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 15.09.15 23:48

So habe es mal ein wenig angepasst.

Public Class frmCSV
 
    Dim ofd As New OpenFileDialog
 
    Dim FileName_In As String = ""
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
        'Eingabedatei abfragen
        With ofd
            .Filter = "CSV|*csv"
            .CheckFileExists = True
            .Multiselect = False
            If .ShowDialog = Windows.Forms.DialogResult.OK Then FileName_In = _
              .FileName
 
            Const linesperfile As Integer = 300 'max. Zeilen pro Ausgabedatei
            Dim filename As String = SaveFileDialog1.FileName 'Ausgabedatei(en)
            Const Searchstring As String = "in stock"
 
            Dim filecounter As Integer = 0
            Dim linecounter As Integer = 0
 
            Dim sr As IO.StreamWriter = Nothing
 
            If IO.File.Exists(FileName_In) Then
                For Each zeile As String In IO.File.ReadAllLines(FileName_In)
                    Dim fields As New List(Of String)(zeile.Split(";"c))
                    If fields.Contains(Searchstring) Then
 
                        If linecounter = 0 Then
                            filecounter += 1
                            sr = New IO.StreamWriter("00" & _
                              filecounter.ToString & SaveFileDialog1.FileName)
                        End If
 
                        If fields.Count >= 5 Then
                            RichTextBox1.Text = (fields(9))
                            RichTextBox2.Text = (fields(11))
                            linecounter += 1
 
                            If linecounter = linesperfile Then
                                sr.Close()
                                linecounter = 0
                            End If
                        End If
                    End If
                Next zeile
                sr.Close()
            End If
 
        End With
    End Sub
 
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button2.Click
 
        SaveFileDialog1.Filter = "CSV Files (*.csv)|*.csv"
        If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
 
            'Statt Konstanten könnten Dialogeingaben verwendet werden 
 
            Const linesperfile As Integer = 300 'max. Zeilen pro Ausgabedatei
            Dim filename As String = SaveFileDialog1.FileName 'Ausgabedatei(en)
            Const Searchstring As String = "in stock"
 
            Dim filecounter As Integer = 0
            Dim linecounter As Integer = 0
 
            Dim sr As IO.StreamWriter = Nothing
 
 
            If IO.File.Exists(FileName_In) Then
                For Each zeile As String In IO.File.ReadAllLines(FileName_In)
                    Dim fields As New List(Of String)(zeile.Split(";"c))
                    If fields.Contains(Searchstring) Then
 
                        If linecounter = 0 Then
                            filecounter += 1
                            sr = New IO.StreamWriter("00" & _
                              filecounter.ToString & SaveFileDialog1.FileName)
                        End If
 
                        If fields.Count >= 5 Then
                            sr.WriteLine(fields(9) & ";" & fields(11))
                            linecounter += 1
 
                            If linecounter = linesperfile Then
                                sr.Close()
                                linecounter = 0
                            End If
                        End If
                    End If
                Next zeile
                sr.Close()
            End If
        End If
    End Sub
 
 
 
End Class
So weit funktioniert es nun wie ich das möchte nur wird in den boxen immer nur eine zeile angezeigt anstatt den 300 und beim speichern bekomme ich einen fehler

sr = New IO.StreamWriter("00" & filecounter.ToString & _
  SaveFileDialog1.FileName) Das angegebene Pfadformat wird nicht unterstützt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 16.09.15 00:08

Du mußt die Namen der AusgabefileSerie richtig zusammen bauen:
Pfad+Filename_ohne_Erweiterung + Kennziffer_als_String + File-Erweiterung
Etwa so:
savefiledialog.filename.substring(0, savefiledialog.filename.length - 4) _
& "00" & filecounter.tostring & ".csv"

Beim Eingabe-Button benötigst Du den StreamWriter und den Writebefehl nicht!
Dort soll doch noch nichts ausgegeben werden.

Was Du damit meinst "nur eine Zeile anzeigen" verstehe ich nicht.
Du mußt die Werte in der Richtextbox jeweils anhängen, nicht einfach zuweisen.

Beitrag wurde zuletzt am 16.09.15 um 00:14:28 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 16.09.15 12:16

Das meinte ich mit der Zeile bei der ausgabe wird nur eine Zeile angezeigt aber ich hätte gerne das alle angezeigt werden bzw. die 300 bevor sie abgespeichert werden.



Beitrag wurde zuletzt am 16.09.15 um 12:17:08 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 16.09.15 14:53

Willst Du für die Anzeige eine Blätter-Funktion???
Statt dessen wäre vielleicht ein gebundenes DatagridView geeignet:
(Der Filterstring wird vor dem Laden in die Textbox eingetragen.)
Public Class frmCSV
 
    Dim WithEvents btn_In As New Button With _
        {.Parent = Me, .Text = "CSV-IN"}
 
    Dim WithEvents btn_out As New Button With _
        {.Parent = Me, .Text = "CSV_out", .Left = 150}
 
 
    Dim ofd As New OpenFileDialog, sfd As New SaveFileDialog
 
 
    Dim tboFilter As New TextBox With _
        {.Parent = Me, .Top = 50, .Width = 400}
 
    Dim dt As New DataTable, bs As New BindingSource
 
    Dim dgv As New DataGridView With {.Parent = Me, _
            .Top = 100, .Width = 400, .Height = 400, _
            .AllowUserToAddRows = False, .DataSource = bs}
 
    Dim FileName_In As String = "", filename_out As String = ""
 
 
 
    Private Sub frmCSV_Load(sender As System.Object, _
                            e As System.EventArgs) Handles MyBase.Load
 
        Me.Width = 420 : Me.Height = 550
 
        dt.Columns.Add("Spalte3") : dt.Columns.Add("Spalte5")
 
    End Sub
 
 
    Private Sub btn_In_Click(sender As Object, _
                             e As System.EventArgs) Handles btn_In.Click
 
        With ofd
            .Filter = "CSV|*csv"
            .CheckFileExists = True
            .Multiselect = False
            If .ShowDialog = _
                Windows.Forms.DialogResult.Cancel Then Exit Sub
 
            FileName_In = .FileName
 
            bs.DataSource = Nothing
            dt.Rows.Clear()
 
            Dim lines() As String = IO.File.ReadAllLines(.FileName)
            For i As Integer = 0 To lines.Length - 1
                Dim fields As New List(Of String)(lines(i).Split(";"c))
                If String.IsNullOrEmpty(tboFilter.Text) OrElse _
                    fields.Contains(tboFilter.Text) Then
                    If fields.Count >= 5 Then
                        dt.Rows.Add(fields(2), fields(4))
                    End If
                End If
            Next i
            bs.DataSource = dt
        End With
    End Sub
 
 
    Private Sub btn_out_Click(sender As Object, _
        e As System.EventArgs) Handles btn_out.Click
 
        Const linesperfile As Integer = 300 'max. Zeilen/Ausgabedatei
        Dim filecounter As Integer = 0
        Dim linecounter As Integer = 0
        Dim toOpen As Boolean = True
 
        With sfd
            .Filter = "CSV|*.csv"
            .DefaultExt = ".csv"
            If .ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
            filename_out = .FileName.Substring(0, .FileName.Length - 4)
        End With
 
        Dim sr As IO.StreamWriter = Nothing
 
        If IO.File.Exists(FileName_In) Then
            For Each zeile As String In IO.File.ReadAllLines(FileName_In)
 
                Dim fields As New List(Of String)(zeile.Split(";"c))
                If String.IsNullOrEmpty(tboFilter.Text) OrElse _
                    fields.Contains(tboFilter.Text) Then
 
                    If toOpen Then
                        filecounter += 1
 
                        sr = New IO.StreamWriter(filename_out & "_" & _
                          filecounter.ToString & ".csv")
                        toOpen = False
                    End If
 
                    If fields.Count >= 5 Then
                        sr.WriteLine(fields(2) & ";" & fields(4))
                        linecounter += 1
 
                        If linecounter = linesperfile Then
                            sr.Close()
                            linecounter = 0
                            toopen = True
                        End If
                    End If
                End If
            Next zeile
            sr.Close()
        End If
    End Sub
End Class


Beitrag wurde zuletzt am 16.09.15 um 15:09:30 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 16.09.15 16:38

Vielen Dank für deine Hilfe.

Hast mich echt sehr weit gebracht.

Dennoch hätte ich gerne die anzeige in einer richtextbox das mit der dgv ist sehr gut gemacht aber nicht so wie ich es gebrauchen könnte.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 16.09.15 17:02

Hallo!

Da ich Deine Zielsetzung nicht kenne, kann ich nur allgemein verwendbare Vorschläge machen.
Wenn Du die Spalten aus den gefilterten Zeilen in eine/mehrere Richtextbox(en) eintragen
willst, muß Du - wie erwähnt - in der Leseschleife die AppendText-Methode nutzen:
Statt
dt.Rows.Add(fields(2), fields(4))
dann etwa so
richtextbox1.AppendText(fields(2) & Microsoft.VisualBasic.vbCrLf)
richtextbox2.appendtext(fields(4) & Microsoft.VisualBasic.vbcrlf)

Vor der Schleife die Richtextboxen ausleeren (Clear).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 16.09.15 17:28

Danke Danke nun ist es perfekt

Ich danke dir auch für deine Allgemeine vorschläge sind auch sehr gut.

Nur hatte ich das doch mir anders vorgestellt.

Aber dennoch vielen Dank für deine Hilfe und Gedult
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 19.09.15 22:20

Hi

Ich hatte da noch eine Frage und möchte dafür nicht extra ein Thema aufmachen.

Also ich würde nun gerne noch eine Funktion in mein Tool mit einbauen.

Ich weiß ja nun wie ich eine csv durchsuchen kann.

Ich durchsuchen eine csv nach dem Wort test in den Zeilen wo das Wort nun vorkommt lasse ich mir ja dann anschließend die Spalte 3 in einer richtextbox anzeigen.

So nun würde ich gerne mit diesem Ergebniss wo in meiner richtextbox steht eine andere csv durchsuchen und wieder die Spalte 1 anzeigen lassen.


Denn das blöde ist Ich habe zwei verschiedene csv Dateien und muss da bestimmte Spalten mir raus nehmen und mir davon eine neue csv erstellen.

Wie könnte ich das am besten umsetzten?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 15:49

[I]So nun würde ich gerne mit diesem Ergebnis, das in meiner richtextbox steht
eine andere csv durchsuchen und wieder die Spalte 1 anzeigen lassen.
Ich habe zwei verschiedene csv Dateien und muss da bestimmte Spalten raus nehmen
und daraus eine neue csv erstellen.[/I]

Das sind ungenaue Angaben.
Auf welche Weise soll das Ergebnis einer Suche (=eine Liste von Zeilen bzw. Begriffen)
für die Suche in einer anderen Datei benutzt werden?
Soll eine ODER-Suche durchgeführt werden, d.h. Zeilen werden gesucht,
die mindestens einen Begriff aus einer Liste von Begriffen enthalten?
In welchen Spalten soll gesucht werden? In allen oder einer Teilmenge?
Welche Spalten sollen in einer neuen Datei ausgegeben werden?







Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 17:14

Okay also versuche es mal genauer zu erklären:

Auf dem ersten Bild ist die erste csv die ich laden möchte und da brauche ich die Spalte K mit dem Wort out of stock nun möchte ich alle Zeilen kopieren wo das Wort out of stock vor kommt aber nur die Spalte C



Mit der Spalte C aus der ersten csv sollte nun in der zweiten csv die Spalte N mit der aus der ersten csv kopierten Spalte C verglichen werden stimmen diese überein soll anschließend Spalte A kopiert werden.



Mit der Spalte A soll nun die Fertige csv erstellt werden.



Also das Ergebnis soll in Spalte B stehen dazu müsste noch automatisch
Spalte A mit dem Wert End und
Spalte C mit dem Wert NotAvailable gefüllt werden, dem entsprechen wie lang die vorher Eingefügten Zeilen sind.

Ich hatte hier jetzt im Beispiel 6 Zeilen genutzt es können aber auch mehr oder weniger sein.
Die erste csv hatt eine Zeile Länge von über 18000.

Hoffe nun das es so verständlich ist was ich genau vor habe

Beitrag wurde zuletzt am 20.09.15 um 17:32:27 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 18:16

So weit ich sehe, hast Du zwei miteinander verknüpfte Tabellen.
Durch welche Spalte(n) wird diese Beziehung definiert.
Steht in beiden Tabellen z.B. eine (eindeutige) Artikelnummer?
Oder bildet die Spaltenpaarung Artikelbezeichnung/Titel eine
eindeutige Verknüpfung? Das wäre eher unüblich.
Ich habe den Eindruck, der Datentyp der ID-Spalte in der ersten Tabelle
ist nicht korrekt definiert worden.

Normalerweise lädt man so eine Struktur in ein Dataset (2 Tabellen)
und definiert eine entsprechende Datarelation.
(Oder man macht ein Join der Tabellen.)
Dazu lassen sich Satz-Auswahlen erstellen.

Beitrag wurde zuletzt am 20.09.15 um 18:24:17 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 18:40

Nein sind zwei unterschiedliche CSV Dateien von zwei verschiedenen Programmen. Die bekomme ich so wie sie sind ausgegeben.

Möchte halt nur aus den zwei CSV Dateien mir diese Teile raus suchen und zu meiner CSV erstellen wie ich sie brauche.

Ist auch nicht mit einander Verknüpf oder so
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 18:53

Aber Du operierst mit einer Beziehung zwischen Spalte C
in der ersten csv und Spalte N in der zweiten csv.
Und wie diese Beziehung beschaffen ist, wäre zu klären.
Daraus ergibt sich die Art des durchzuführenden Vergleichs, d.h.
wie soll die Liste (Suchergebnisse zu Spalte C) aus der ersten csv
auf die Spalte N der Zeilen in der zweiten csv bezogen werden?









Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 19:16

1 zu 1 es soll ja aus der ersten csv die spalte c gespeichert werden und anschließend in der zweiten csv danach gesucht/verglichen werden. Wurde diese gefunden dann spalte a aus der zweiten csv in einer neuen datei ausgeben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 19:28

Wenn die Spaltenpaarung Titel/Artikelbezeichnung eindeutig ist
(d.h. gleiche Schreibweise, durchgehend exakt eine Bezeichnung
für je einen Artikel) kannst Du eine Datarelation definieren und
zu den gefundenen Zeilen in der ersten Datatable die zugehörigen
Childrow(s) aus der zweiten Datatable benutzen, um die Ausgabezeilen
in einer dritten Tabelle aus den benötigten Spalten aufzubauen.

Beispiel



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 19:33

Okay Danke
Nur mit dem Beispiel weiß ich grad nicht wie ich das auf mein projekt anwenden kann.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 20:00

CSV-Editor zum Laden einer CSV-Datei.
Zwei Instanzen dieser Klasse benutzen, jeweils einen Tabellennamen angeben
und die beiden Tables in ein Dataset einfügen.



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 20:32

Würde das auch einfacher gehen?
Kann man da nicht den Code anwenden der hier schon vorhanden ist?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 21:20

Noch einfacher kriege ich das leidfer nicht hin ....
Die Spaltenindices in den Spaltenbez. müssen angepaßt werden.
Public Class frmCSV2
 
    Dim ds As New DataSet
    Dim dt1, dt2, dtout As cDataTableCSV
 
 
    Private Function LoadCSV(file As String) As cDataTableCSV
        'CSV Datei laden - ggf. Schlüssel festlegen
        Dim dt As New cDataTableCSV
        dt.TableName = IO.Path.GetFileNameWithoutExtension(file)
        If Not dt.LoadFile(file, System.Text.Encoding.Default) Then Return _
          Nothing
        'dt.PrimaryKey = New DataColumn() {dt.Columns(0)}
        Return dt
    End Function
 
 
 
    Private Sub frmCSV2_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        'CSV-Files lesen
        ds.Tables.Add(LoadCSV("C:\daten\csv1.csv"))
        ds.Tables.Add(LoadCSV("C:\daten\csv2.csv"))
 
        'Datarelation definieren 
        Dim dr As New DataRelation _
         ("Artikel", ds.Tables(0).Columns(0), ds.Tables(1).Columns(0))
        ds.Relations.Add(dr)
 
        'Spalten in Ausgabedatei erstellen
        dtout = New cDataTableCSV
        dtout.Columns.Add("SP_0") : dtout.Columns.Add("SP_1")
 
 
        'Schleife über csv1-Zeilen (=Parent)
        For Each prow As DataRow In ds.Tables(0).Rows
 
            'Auswahlkriterium in csv1 beachten
            If DirectCast(prow("SP_0"), String) = "2" Then
 
                'per Relation zugeordnete Childrow in csv2 
                For Each crow As DataRow In prow.GetChildRows(dr)
 
                    'Ausgabedatensatz aufbauen
                    Dim orow As DataRow = dtout.NewRow
                    orow("SP_0") = prow("SP_0")
                    orow("SP_1") = crow("SP_0")
                    dtout.Rows.Add(orow)
                Next crow
            End If
        Next prow
 
        'Zeilen als Datei ausgeben
        dtout.SaveFile("C:\daten\csv_out.csv", ";"c)
 
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 21:40


Bei

'CSV-Files lesen
ds.Tables.Add(LoadCSV("‪C:\Users\xxx\Desktop\csv\csv1.csv"))

Bekomm ich den Fehler:

'table'-Argument darf nicht null sein.
Parametername: table
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 21:46

Dann konnte die angegebene Datei nicht gelesen werden.
Setze im Code der cDataTableCSV-Klasse geeignete Brechpunkte
und stelle fest, warum "nothing" zurück gegeben wird.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 22:00

Noch ein fehler Der Typ "cDataTableCSV" ist nicht definiert.

Was meinst du mit "Die Spaltenindices in den Spaltenbez. müssen angepaßt werden" ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 22:05

Du mußt die von mir verlinkte CSV-Editor Klasse in das Projekt
aufnehmen: "Klasse hinzufügen" und den gesamten Code aus dem
Forenbeitrag reinkopieren.
Setze "Option Strict On" ein.

Die Beteiligung an diesem Forum setzt gewisse Grundkenntnisse in VB voraus!!!


Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 22:17

Okay wie am anfang gesagt bin ich noch blutiger Anfänger da ich momentan mehr bastele als ich verstehe.

Option Strict On habe ich schon so in vb einstellt das immer On ist

Ich hatte das schon so gemacht wollte nur wissen obs auch so richtig ist das ich mir nicht sicher war.

Versteh halt grade nicht was du damit meinst
"Die Spaltenindices in den Spaltenbez. müssen angepaßt werden"

Beitrag wurde zuletzt am 20.09.15 um 22:21:18 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 22:30

"blutiger Anfänger" gilt nicht.
Man muß ein Lehrbuch sorgfältig durchgearbeitet haben

Die CSV-Spalten werden beim Laden in die Table automatisch benannt
als SP_0, SP_1, usw.
Überall wo ich zur Demonstration SP_0, SP_1 usw geschrieben habe,
mußt Du die Indices angeben, die sich tatsächlich auf die
null-basierten Positionen Deiner jeweils benötigten Dateispalten beziehen.








Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 22:42

Manfred X schrieb:
Zitat:

"blutiger Anfänger" gilt nicht.
Man muß ein Lehrbuch sorgfältig durchgearbeitet haben


https://www.rheinwerk-verlag.de/einstieg-in-visual-basic-2015_3813/

Ist wäre das geeignet für den Anfang ? Denn das habe ich mir vorbestellt nur muss ich warten bis es erscheint.

Achso den fehler mit dem dateien laden habe ich gelöst bekommen.

Beitrag wurde zuletzt am 20.09.15 um 22:50:53 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 22:55

Die dort verlinkten EBooks zu VB 2008 und 2010 sind noch aktuell:
http://www.vbarchiv.net/forum/id22_i52552t52552_info-resourcen-fuer-vbnet-entwickler.html
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 23:03

Achso okay werde ich mir mal anschauen.

nun anderes problem. habe die anderen SP_ angepasst

'Datarelation definieren
Dim dr As New DataRelation _
("Artikel", ds.Tables(0).Columns(0), ds.Tables(1).Columns(0))
ds.Relations.Add(dr) <-- Diese Spalten haben momentan keine eindeutigen Werte.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 23:10

Das hatte ich erwartet.
Eine 1:N (1:1) Relation setzt voraus, daß
- die Titel (Artikel) in csv1 (Parent) eindeutig sind (keine Mehrfacheinträge)
- daß zu jedem Eintrag (Artikelbez.) in csv2 (Child) ein entsprechender Wert
in csv1 gefunden wird.

Hilfsweise kannst Du in der Datarelation noch ein "false" für den Parameter
"createconstraints" angeben. Aber dann existiert keine Eindeutigkeit in der Beziehung!

Vermutlich mußt Du den Inhalt dieser Tabellen-Spalten geeignet überarbeiten
oder Du besorgst Dir eine csv1, die eine Spalte mit den gleichen Artikelnummern
enthält wie die csv2.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 23:28

Manfred X schrieb:
Zitat:


Vermutlich mußt Du den Inhalt dieser Tabellen-Spalten
geeignet überarbeiten
oder Du besorgst Dir eine csv1, die eine Spalte mit den
gleichen Artikelnummern
enthält wie die csv2.




Aber die sind doch gleich wenn ich nun z.b aus csv2 mir ein Artikelbezeichnung kopiere und per strg+f in der csv1 suche dann findet er genau den gleichen text


Könnte man das nicht so machen das einfach in der csv 1 nach dem wort "out of stock" gesucht wird und dann die Spalte 2 kopiert und in csv 2 dann nach der kopierten spalte 2 gesucht wird ?

Beitrag wurde zuletzt am 20.09.15 um 23:31:56 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 20.09.15 23:40

Vetraue der Relation.
Wenn Du die richtigen Spalten kombinierst und diese Zuordnung eindeutig ist,
gibt es auch keine Fehlermeldung!!
Schau Dir Deine Datei mal genauer an.
Es liegen vermutlich in manchen Fällen unterschiedliche Schreibweisen,
Abkürzungen o.ä. vor.
Zur Not kannst Du den createconstraints-Parameter beim Erstellen
der DataRelation nutzen.



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 20.09.15 23:43

Habe schon den fehler gefunden.

In csv1 steht es z.b so Busch 48600 MB A-Klasse Classic
In cvv2 steht es z.b so "Busch 48600 MB A-Klasse Classic"

Woher weiß der Code das er nur die Daten mit "out of Stock" suchen soll ?

Beitrag wurde zuletzt am 20.09.15 um 23:47:18 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 00:01

Du mußt hier die richtigen Spaltenindices angeben:
'Datarelation definieren
Dim dr As New DataRelation _
("Artikel", ds.Tables("SP_X").Columns(0), ds.Tables(1).Columns("SP_Y"))
Du mußt auch hier für Deine Zwecke anpassen:
If DirectCast(prow("SP_X"), String) = "out of stock" Then
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 00:25

Dim dr As New DataRelation("Artikel", ds.Tables("SP_2").Columns(0), ds.Tables( _
  1).Columns("SP_13"))
 
Fehler:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Ich glaub ich gebe es auf... bekomme es nicht zum laufen

Muss mich doch erst noch mehr da rein lesen bringt so nichts.

Aber wäre es nützlich wenn du die beiden csv dateien hättest ?

Beitrag wurde zuletzt am 21.09.15 um 00:37:02 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 00:39

Mein Fehler ... gääähn! Table-Index mit Columnindex verwechselt ...
'Datarelation definieren
Dim dr As New DataRelation _
("Artikel", ds.Tables(0).Columns("SP_X"), ds.Tables(1).Columns("SP_Y"))
Gute Nacht allerseits
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 01:10

Gute Nacht

'per Relation zugeordnete Childrow in csv2 
For Each crow As DataRow In prow.GetChildRows(dr)
Fehler:
Die Zeile gehört nicht zum selben DataSet wie diese Beziehung.
Ich glaub ich gebe es auf... bekomme es nicht zum laufen

Muss mich doch erst noch mehr da rein lesen bringt so nichts.

Aber wäre es nützlich wenn du die beiden csv dateien hättest ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 19:15

Bekomme leider den Fehler nicht weg

Woran könnte das liegen? Vielleicht Flasche Spalten?

Hab da schon alles versucht komme nicht drauf
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 19:27

Ich kann nur vermuten, daß Du in Deinem Code diese Zeile "verschluckt" hast:
ds.Relations.Add(dr)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 19:59

Ach bin ich so doof genau das ist es auch...

Dafür bekomme ich nun bei

 ds.Relations.Add(dr)
Fehler:Diese Spalten haben momentan keine eindeutigen Werte.
Ich habe auch jetzt zum test mal beide csv dateien bearbeit und nur 10 zeilen zum test rein gemacht und den text 1:1 rein kopiert damit auch wirklich das gleiche in den csv dateien steht. So das ich wenigstens den code mal zum laufen bekomme aber leider auch fehl anzeige

Beitrag wurde zuletzt am 21.09.15 um 20:00:54 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 20:07

Ich kenne den Inhalt Deiner Dateien nicht.
Offenbar ist keine eindeutige Beziehung zwischen diesen Tabellen-Zeilen
anhand der Relations-Spalten einzurichten.

Wie sind diese Tabellen miteinander verknüpft ???
Geht es um die reine/rohe Abfolge/Position der Datensätze in der Datei ???





Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 20:24

Weiß nicht genau was du meinst.

Aber hier vieleicht kannst du dir ja die mal anschauen

csv1.csv
csv2.csv
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 20:38

Hallo!

Alles klar!
Meldung: [I]Die Einschränkung konnte nicht aktiviert werden, weil nicht alle
Werte (in csv2) übergeordnete Werte (in csv1) besitzen.[/I]

Was soll mit den Zeilen in csv2 passieren, die keine relationale Entsprechung
in csv1 besitzen?

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 20:47

Wenn du damit meinst das die Daten in csv 2 nicht vorhanden sind dann einfach ignorieren.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 20:59

Kleine Hinweis:
Die Zahl hinter "Busch" scheint ein Identifizierer zu sein.
Falls diese Annahme zutrifft:
Schreibe eine kleine Schleife, extrahiere diese Zahl bei jedem Satz
und hänge sie hinten am Datensatz als zusätzliche Spalte an.
Das machst Du für beide Dateien.
Diese beiden Zusatzspalten könnten eine brauchbare Verknüpfung
zwischen den Sätzen schaffen.


Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 21:10

Busch ist ja nur ein Beispiel da gibts normal noch andere Namen ich habe die beiden CSV daten nur gekürzt
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 21:24

Dan weiß ich nicht, was in Deinen Dateien drinsteht.
Auf jeden Fall muß jeweils die Überschriftszeile raus.

Ich habe ja bereits dreimal auf den CreateConstraints-Parameter
der Relation hingewiesen, den man auf false setzen kann.
Vielleicht kommt dann etwas brauchbares raus.


Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 21:41

Okay also hier nochmal die beiden dateien sind dieses mal nicht gekürzt und grade frisch erstellt.

csv1.csv
csv2.csv

Also die Überschriftszeile raus nehmen wäre kein problem das kann man ja schnell immer von hand löschen und neu abspeichern.

So im gedanken klingt das total einfach was das Programm machen soll, aber ich merke grade in der umsetztung ist das total schwierrig. Hätte ich nicht gedacht das es doch so kompliziert ist.


Manfred X schrieb:
Zitat:


Ich habe ja bereits dreimal auf den CreateConstraints-Parameter
der Relation hingewiesen, den man auf false setzen kann.
Vielleicht kommt dann etwas brauchbares raus.


Da weiß ich leider nicht wo das sein soll

Beitrag wurde zuletzt am 21.09.15 um 21:42:47 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 21:45

Parameter sind schwer zu finden.
Vielleicht erstellt Microsoft irgendwann eine Dokumentation ...
Dim dr As New DataRelation _
  ("Artikel", ds.Tables(0).Columns("SP_2"), ds.Tables(1).Columns("SP_13"), _
  False)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 21:58

Ah da kommt das hin da hab ich an einer ganz anderen stelle es versucht.

So nun habe ich schon mal eine datei ausgegeben bekommen.

Bekomme momentan es so angezeigt in der neuen Datei.
Busch 12202 2 Mannschaftswagen H0	301738000000
Busch 12204 Rungen-u.Stirnwandwagen H0	291562000000
Busch 1499 Telegrafenmasten H0	291562000000
Busch 41564 MB 170V »Schneeräumfahrzeug«	291562000000
Busch 5090 Batteriekasten/Schalter H0	301738000000
Busch 5905 Absperrschranken H0	291562000000
Busch 5911 Warnkreuze  o. Sch. H0	291562000000
Busch 5935 Blaulicht-Blinkset H0	291562000000
Busch 6048 Motiv-Set »Baustelle« H0	301738000000
Busch 7024 2 E-Lok-Portale H0	301738000000
Busch 7025 2 Dampflok-Portale H0	291562000000
Busch 7052 Streupulver maigrün	291562000000
Busch 7070 Schotter grau H0/N/TT	301738000000
Nur nicht wirklich brauch bar.

Läuft es denn bei dir ?

Fehlt fast nur noch in der Ausgabe datei in Spalte eine das "End" und Spalte 3 das "NotAvailable"

Beitrag wurde zuletzt am 21.09.15 um 22:14:31 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 22:17

Hast Du noch nie in diese Dateien reingeguckt ????
Wie ich bereits erwartet hatte: Das sind völlig unterschiedliche Schreibweisen
und Textzusammenstellungen in den Tabellen.
So lassen diese Sätze sich nicht kombinieren.
Du mußt zunächst für jedes Fabrikat/jede Marke einheitlichhe Identifizierer
(Teilstrings) ermitteln und daraus eine neue Spalte bilden.



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 22:22

Achso jetzt weiß ich was du meinst...

Das kann ignoriert werden denn das stellt sich nun nach und nach um.

Da sind noch alte daten in der csv2 die es so noch nicht gibt in der csv1.

Die werden auch nie in der csv1 vorkommen also kann man die ignorieren.

Also sollte nur na dem gesucht werden wo auch vorhanden ist

Beitrag wurde zuletzt am 21.09.15 um 22:24:42 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 22:35

Schau Dir z.B. mal die BRAWA-Einträge an. Völlig anders.
Brekina gibt es in csv2 nicht. usw.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 22:43

Genau da hast du recht.

Brawa hatte ich mal per Hand eingeben und deswegen sind die komplett anders.

Ich habe mir ein tool programmiert der die Zeilen "in stock" aus csv1 hochlädt.

Da habe ich bis jetzt nur Faller und Busch gemacht deswegen sind nur diese einträge gleich alle anderen sind unterschiedlich.

Die anderen Brekina usw. muss ich noch machen also die kommen noch dazu.

Soweit funktioniert es ja nun habe nur die Daten wo "out of Stock" und vorhanden sind aus der csv2 in meiner neuen ausgabe datei. Das klappt nun prima.

Fehlt nur noch das er in zuerst in Spalte 0 das mit dem "End" macht und in Spalte 2 das mit dem "NotAvailable".

Wenn das noch dabei wäre dann würde ja soweit alles gehen.

Kann man da noch irgendwie was mit einbauen das man sieht was das Programm grade macht ? Denn so sieht man ja nicht obs geklappt hat oder ob er Fertig ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 22:53

Mit Messageboxen ...
    Private Sub frmCSV2_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        ds.Tables.Add(LoadCSV("C:\downloads\csv1.csv"))
        ds.Tables.Add(LoadCSV("C:\downloads\csv2.csv"))
 
        If Not ds.Tables.Count = 2 Then
            MessageBox.Show("Eine Datei konnte nicht gelesen werden")
            Exit Sub
        End If
 
        'Datarelation 
        Dim dr As New DataRelation _
         ("Artikel", ds.Tables(0).Columns("SP_2"), _
          ds.Tables(1).Columns("SP_13"), False)
 
        ds.Relations.Add(dr)
 
        'Spalten in Ausgabedatei erstellen
        dtout = New cDataTableCSV
        dtout.Columns.Add("SP_0") : dtout.Columns.Add("SP_1")
        dtout.Columns.Add("SP_2")
 
        Try
            'Schleife über csv1-Zeilen (=Parent)
            For Each prow As DataRow In ds.Tables(0).Rows
                'Suchkriterium in csv1
                If DirectCast(prow("SP_10"), String) = "out of stock" Then
                    'per Relation zugeordnete Childrow in csv2 
                    For Each crow As DataRow In prow.GetChildRows(dr)
                        'Ausgabedatensatz aufbauen
                        Dim orow As DataRow = dtout.NewRow
                        orow("SP_0") = "End"
                        orow("SP_1") = prow("SP_2")
                        orow("SP_2") = prow("SP_10")
                        dtout.Rows.Add(orow)
                    Next crow
                End If
            Next prow
        Catch ex As Exception
            MessageBox.Show("Abbruch - Fehler: " & ex.Message)
            Exit Sub
        End Try
 
        'Zeilen als Datei ausgeben
        If Not dtout.SaveFile("C:\daten\csv_out.csv", ";"c) Then
            MessageBox.Show("Fehler beim Schreiben der Datei")
        Else
            MessageBox.Show _
            (dtout.Rows.Count.ToString & " Zeilen sind geschrieben worden")
        End If
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 23:05

Wow das ist sehr gut klappt super

Nur ich habe noch was kleines geändert

Dim orow As DataRow = dtout.NewRow
orow("SP_0") = "End"
orow("SP_1") = prow("SP_0")
orow("SP_2") = prow("SP_10")
dtout.Rows.Add(orow)
Habe bei orow("SP_1") = prow("SP_2") eine 0 rein gemacht damit er mir Spalte 0 aus csv2 abspeichert.

Das klappt auch aber die werten stimmen nicht.

4001740000000
4001740000000
4001740000000
4001740000000
4001740000000
4001740000000
4001740000000
4001740000000
4001740000000
4001740000000
4001740000000


Ist immer das gleiche und genau das ist das Wichtigste was ich brauche
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 21.09.15 23:11

prow ist die Row in der Parenttable (csv1).
crow ist die Row in der Childtable (csv2).
Im Werte aus der csv2 in die Ausgabezeile einzutragen:
orow("...") = crow("...")
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 21.09.15 23:25

Okay nun hab ich das verstanden.

Auch so abgeändert.

Aber es werden immer noch nicht richtig die Daten übernommen

So werden sie gespeicher.
301738000000	Busch 12202 2 Mannschaftswagen H0
291562000000	Busch 12204 Rungen-u.Stirnwandwagen H0
291562000000	Busch 1499 Telegrafenmasten H0
291562000000	Busch 1543 Unterstand für Loren H0
291562000000	Busch 41564 MB 170V »Schneeräumfahrzeug«
301738000000	Busch 5090 Batteriekasten/Schalter H0
Aber in csv2 stehen sie so
301738167163	Busch 12202 2 Mannschaftswagen H0
291562057194	Busch 12204 Rungen-u.Stirnwandwagen H0
291562105695	Busch 1499 Telegrafenmasten H0
291562105821	Busch 1543 Unterstand für Loren H0
291562109537	Busch 41564 MB 170V »Schneeräumfahrzeug«
301738223448	Busch 5090 Batteriekasten/Schalter H0
Kann es sein das da beim auslesen irgendwie diese nummer sich ändern ?

Beitrag wurde zuletzt am 21.09.15 um 23:28:18 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 22.09.15 00:05

In der csv-Datei, die ich vorhin runtergeladen habe, steht
in der Spalte Artikelnummer im Satz "Busch 12202" der Wert: 3,01738E+11

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 22.09.15 00:07

Okay habe den fehler gefunden und zwar ist das wenn ich die csv mit excel bearbeite und wenn ich die datei dann neu abspeichere dann verändern sich die zahlen warum auch immer

Naja noch was anderes wie kann ich beim speichern noch ein header einfügen ?

Zeile 1 sollte so aussehen Action;ItemID;EndCode und danach die anderen sachen einfügen

Beitrag wurde zuletzt am 22.09.15 um 00:09:55 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 22.09.15 00:29

Direkt vor dem "try" folgende Code-Zeile einfügen.
dtout.Rows.Add({"Action", "ItemID", "EndCode"})
Bitte keine Strichpunkte anhängen.
Das erledigt die Speicher-Routine !!!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 22.09.15 00:35

Yeaaaaaaah es funktioniert nun alles wie ich vor hatte.

Du bist mein Held

Ich danke dir sehr für deine geduld und mühe mir dabei zu helfen

Jetzt hab ich einen gemischten Code

Einer ist Top (der von dir) und der andere wo diese "in stock" verarbeitet ist so lala
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 24.09.15 00:40

Hey

Hätte da noch eine frage.

Wenn ich nur eine csv datei lade wie kann ich in der dataset alle Spalten speichern ?

Damit ich wie unten mir z.b spalte 4 und 5 dazu ausgeben kann.

 'CSV-Files lesen
        ds.Tables.Add(LoadCSV("E:\csv\csv22.csv"))
 
        If Not ds.Tables.Count = 1 Then
            MessageBox.Show("Eine Datei konnte nicht gelesen werden")
            Exit Sub
        End If
 
        'Datarelation 
        Dim dr As New DataRelation("Artikel", ds.Tables(0).Columns("SP_4"), _
          ds.Tables(0).Columns("SP_5"), False)
        ds.Relations.Add(dr)
 
        'Spalten in Ausgabedatei erstellen
        dtout = New cDataTableCSV
        dtout.Columns.Add("SP_0") : dtout.Columns.Add("SP_1")
        dtout.Columns.Add("SP_2") : dtout.Columns.Add("SP_3")
        dtout.Columns.Add("SP_4")
 
        Try
            'Schleife über csv1-Zeilen (=Parent)
            For Each prow As DataRow In ds.Tables(0).Rows
                'per Relation zugeordnete Childrow in csv 
                For Each crow As DataRow In prow.GetChildRows(dr)
                    'Ausgabedatensatz aufbauen
                    Dim orow As DataRow = dtout.NewRow
                    orow("SP_0") = "End"
                    orow("SP_1") = "test"
                    orow("SP_2") = "NotAvailable"
                    orow("SP_3") = crow("SP_4")
                    orow("SP_4") = crow("SP_5")
                    dtout.Rows.Add(orow)
                    TextBox1.AppendText(CStr(orow("SP_1")) & _
                      Microsoft.VisualBasic.vbCrLf)
                Next crow
                'End If
            Next prow
        Catch ex As Exception
            MessageBox.Show("Abbruch - Fehler: " & ex.Message)
            Exit Sub
        End Try


Beitrag wurde zuletzt am 24.09.15 um 00:46:47 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 24.09.15 09:31

Seltsam.
Wieso steht in Deinem abgewandelten Code eine Datarelation,
wenn Du nur eine Tabelle lädst?
Wenn Du die Zeilen speichern möchtest, benötigst Du den
entfernten Speicherbefehl.
Wenn Du einen größeren Text zur Anzeige aufbauen willst,
sollte das nicht direkt im Control geschehen (ineffizient).
Man verwendet dafür Stringbuilder-Variablen.

   'CSV-File lesen
   ds.Tables.Add(LoadCSV("E:\csv\csv22.csv"))
 
   If Not ds.Tables.Count = 1 Then
      MessageBox.Show("Eine Datei konnte nicht gelesen werden")
      Exit Sub
   End If
 
   'Spalten in Ausgabedatei erstellen
   dtout = New cDataTableCSV
   dtout.Columns.Add("SP_0") : dtout.Columns.Add("SP_1")
   dtout.Columns.Add("SP_2") : dtout.Columns.Add("SP_3")
   dtout.Columns.Add("SP_4")
 
   'Spalteninhalte einer Zeile als Zeichenfolge kombinieren
   Dim line As New System.Text.StringBuilder
   'Zeilen als Zeichenfolge kombinieren
   Dim text As New System.Text.StringBuilder
 
   Try
      'Schleife über Tabellen-Zeilen 
      For Each row As DataRow In ds.Tables(0).Rows
 
          'Ausgabedatensatz aufbauen
          Dim orow As DataRow = dtout.NewRow
          orow("SP_0") = "End"
          orow("SP_1") = "test"
          orow("SP_2") = "NotAvailable"
          orow("SP_3") = row("SP_4")
          orow("SP_4") = row("SP_5")
 
          dtout.Rows.Add(orow)
 
          'Ausgabe-Datensatz als Text aufbereiten
          line.Clear()
          For i As Integer = 0 To orow.ItemArray.Length - 1
              line.Append(orow(i).ToString & ";")
          Next i
 
          text.AppendLine(line.ToString)
 
      Next row
  Catch ex As Exception
      MessageBox.Show("Abbruch - Fehler: " & ex.Message)
      Exit Sub
  End Try
 
  'Ausgabe als Text anzeigen
  textbox1.Text = text.ToString
 
  'Zeilen als csv-Datei ausgeben
  If Not dtout.SaveFile("....\csv_out.csv", ";"c) Then
     MessageBox.Show("Fehler beim Schreiben der Datei")
  Else
     MessageBox.Show _
     (dtout.Rows.Count.ToString & " Zeilen sind geschrieben worden")
  End If
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 24.09.15 21:43

Danke

Von 1 bis 5 werden ja die Header übernommen und wie könnte ich der SP_6 noch einen Header geben ?

orow("SP_0") = row("SP_0")
orow("SP_1") = row("SP_1")
orow("SP_2") = row("SP_2")
orow("SP_3") = row("SP_3")
orow("SP_4") = row("SP_4")
orow("SP_5") = row("SP_5")
orow("SP_6") = "teeeeeeeeeeeest"
Für die Ausgabe der Daten ist ja im moment noch eine Textbox.

Was wäre dafür besser gegeinet ein DataGridView oder ein ListView ?

Ich denke mal ein DataGridView wobei ein ListView mit der Ansicht: Details schöner ausschaut im Programm.

Was denkst du dazu ?

Beitrag wurde zuletzt am 24.09.15 um 21:46:38 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 24.09.15 22:06

Das "Datagridview" beherrscht Datenbindung an diverse Spalten-Datentypen
und das Aussehen des Control kann vielfältig angepaßt werden
(Gestaltung und Farben der Zeilen und Zellen, Gridlines, Header, usw.)
Zudem kann dieses Control umfassend auf den Benutzer reagieren
(Sortieren, Editieren, ...) und dabei zahlreiche Events auslösen
(Formatieren, Zeichnen, ...)
Man muß sich allerdings einarbeiten, um spezielle Ziele damit
realisieren zu können.

Das "Listview"-Control bietet lediglich den Vorteil, daß man auf
einfache Weise dem Nutzer unterschiedliche Listenansichten bieten kann.
Sonst hat es wegen seines eingeschränkten Funktionsumfangs nur Nachteile.

Deine Eingangsfrage habe ich nicht verstanden.




Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 24.09.15 23:44

Okay also werde ich mich mal mit dem Datagridview befassen.

Bei dem anderen code mache ich es ja so

dtout.Rows.Add({"Action", "ItemID", "EndCode"})
Nun bei dem neuen ist ja nun so



Bei Spalte 1 usw wird die Zeile 1 (Header) ja mit übernommen.
Bei Spalte 6 fehlt aber der (Header) so wie auf dem Bild zusehen ist.
Da ja Spalte 6 neu angelegt ist kann ja da nichts übernommen werden.

Achso und die Umlaute werden nicht richtig abgespeichert.

Beitrag wurde zuletzt am 24.09.15 um 23:45:41 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 25.09.15 01:12

In der Ausfgabe-Tabelle "dtout" werden ALLE Spalten neu angelegt
(dtout.columns.add ....)

Wenn Du eine Headerzeile in die Ausgabedatei einfügen willst,
mußt Du vor der Ausgabe der Werte zunächst einen entsprechenden
Datensatz der richtigen Länge in diese Tabelle einfügen:
dtout.rows.add({"Action", "ItemID", "Title", "SiteID", "Currency", "StartPrice", "Test"})

Du kannst im Ladebefehl von cDatatableCSV (LoadFile) im zweiten Parameter
einen geeigneten Textencoder übergeben, damit die Umlaute korrekt gelesen werden.

Im Code der Speichermethode (SaveFile) kannst Du ebenfalls einen Encoder ergänzen
(dritter Parameter der "WriteAllLines"-Methode).

Beitrag wurde zuletzt am 25.09.15 um 01:18:26 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen 
Autor: Vegas85
Datum: 25.09.15 09:13

Okay das mit dem Encoder funktioniert nun.

Bei der Headerzeile habe ich noch ein kleines problem.

Denn nun sind sie immer doppelt vorhanden

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen 
Autor: Manfred X
Datum: 25.09.15 09:23

Da hast Du wohl ZWEI Codezeilen, in denen Header als Row in die Tabelle dtout
eingetragen werden. Für eine der beiden Codezeilen wirst Du Dich wohl entscheiden
müssen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen 
Autor: Vegas85
Datum: 25.09.15 21:01

Habe eigentlich nur einen und zwar den aus deinen vorletzten Beitrag.

Der andere Header wird wohl beim laden übernommen.

Kann man sagen das Zeile 1 beim laden weg gelassen wird und beim speichern neu erstellt wird?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 25.09.15 21:24

Du kannst z.B. aus dieser For-Each-Schleife

'Schleife über Tabellen-Zeilen 
For Each row As DataRow In ds.Tables(0).Rows
    '.....  
Next row
eine Index-gesteuerte Schleife machen:

For rowindex As Integer = 1 To ds.Tables(0).Rows.Count - 1
    'zusätzliche Zeile einfügen
    Dim row As DataRow = ds.Tables(0).Rows(rowindex)
    '.....
Next rowindex
Wenn Du diese Schleife ab 1 startest, wird die Zeile 0 (Header)
nicht in die Ausgabe übernommen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 25.09.15 22:19

Okay danke das hat nun funktioniert.

Ich teste grad ein wenig die DataGridView.

Mit DataGridView1.DataSource = dtout lasse ich mir die ausgabe nun in der DataGriedView anzeigen.

Klappt soweit super nur habe ich da auch ein Problem mit dem Header.



Wie kann ich da die SP_0 usw durch die richtigen Header ersetzten ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 26.09.15 00:10

Naja!
"Professionell" wäre es, wenn Du LoadFile-Methode durch einen zusätzlichen
Parameter ergänzen würdest, der angibt, ob die erste gelesene Zeile der
csv-Datei als Headerzeile zu nutzen ist.
Es wäre in dem Fall zunächst eine Zeile aus der Datei zu lesen, aufzuspalten
und deren Felder dienten als Spalten-Benennungen.


Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 26.09.15 12:46

Aber die erste gelesene Zeile ist ja nicht der Header.

Der Header wird ja manuell erstellt am Schluss bevor die csv gespeichert wird.

dtout.rows.add({"Action", "ItemID", "Title", "SiteID", "Currency", "StartPrice", "Test"})

Noch eine Frage wie kann ich zwei Spalten zu einer machen beim Speichern

Dachte da an sowas:

orow("SP_3") = row("SP_3") And row("SP_4")
Oder 
orow("SP_3") = row("SP_3", "SP_4")
Leider funktioniert beides nicht. Habe schon mehre Varianten versucht.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Manfred X
Datum: 26.09.15 16:40

Wenn die Header-Zeile am Anfang der Datei stehen soll,
mußt Du sie erstellen BEVOR andere Zeilen in die Ausgabe-Tabelle
eingetragen werden.
Wenn Du die Header-Zeile erst beim Speichern am Anfang der Tabelle
einfügen willst, geht das mit der InsertAt-Methode.
Dim headerrow As DataRow = dtout.NewRow
headerrow.ItemArray = _
{"Action", "ItemID", "Title", "SiteID", "Currency", "StartPrice", "Test"}
 
dtout.Rows.InsertAt(headerrow, 0)
Wenn Du den String-Content mehrerer Spalten der Eingabetabelle in einer
Spalte der Ausgabetabelle zusammenfassen willst, geht das mit dem &-Operator.
orow("SP_3") = row("SP_3").ToString & " " & row("SP_4").ToString
Ich mache hier mal Schluß, weil es nicht Zweck dieses Forums ist,
einen einführenden Programmierkurs zu geben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CSV durchsuchen und Inhalt der Zeile/Spalte wiedergeben 
Autor: Vegas85
Datum: 27.09.15 15:36

Okay kein Thema ich danke dir für die viele Hilfe.

Hast mich echt weiter gebracht und habe viel gelernt dabei.

Bald kommt ja mein bestelltes Buch und dann kann ich weiter lernen.

Thema kann geschlossen werden, falls es hier diese Funktion gibt.

Besten Dank

LG Vegas85

Beitrag wurde zuletzt am 27.09.15 um 15:37:30 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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