Datensatz finden und ausgeben

bobbydigital

Mitglied
Hallo,
ich habe eine Textdatei mit Datensätzen, die Felder sind mit Semikolon getrennt.
Diese Daten speicher ich mit einem Formular.
Jetzt möchte ich, wenn ich die 5. Zahl der Kundennummer eingebe, dass nach Datensätzen gesucht wird die diese KNR haben und diese in einer ListBox ausgegeben werden.
Bitte Helft mir!

Das ist mein Konstrukt bis jetzt, aber es t nicht.:

Code:
Private Sub txt_knr_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_knr.TextChanged
        cmdsave.Enabled = True
        Dim x As Integer
        Dim aSuch As String
        ListBox1.Items.Clear()



        If Len(txt_knr.Text) = 5 Then
            For x = 1 To UBound(strDaten)
                aSuch = txt_knr.Text

                If InStr(1, txt_knr.Text, aSuch, vbTextCompare) Then
                    ListBox1.Items.Add(strDaten(x, 1) & " - " & strDaten(x, 2) & " - " & strDaten(x, 3) & " - " & strDaten(x, 4) & " - " & strDaten(x, 5))



                End If
            Next
        End If

    End Sub
 
Am besten fängst du damit an die ein Objekt zu erstellen das die Datensätze aus der Textdatei abbildet.
Code:
public class CustomerItem
{
  public string Number { get;set;}
  public string Prop1 { get;set;}
  public string Prop2 { get;set;}
  public string Prop3 { get;set;}
  public int Prop4 { get;set;}
   ... etc ...
}

Bei starten der Anwendung lädst du dir die Daten aus der Datei in eine generische Liste

Code:
private List<CustomerItem> _CustomerItemList;

// Aufrufen, wenn die Form geladen wird oder wenn _CustomerItemList das erste mal verwendet werden soll
private void loadCustomerItemsFromFile()
{
  _CustomerItemList = new List<CustomerItem>();
  StreamReader reader = new StreamReader({Stream der Datei});

  while(reader.read())
  {
    string[] itemArray = reader.ReadLine().Split(',');
    _CustomerItemList.Add(new CustomerItem(itemArray[0], itemArray[1], ...));  
  }

}

Jetzt hast du die Möglichkeit immer auf die Liste zuzugreifen und dir die benötigten Daten entweder per LINQ oder über das durchlaufen der Items zu ermitteln.

Wenn du mitbekommen willst wenn sich die Datei ändert, dann solltest du dich in die Benutzung des System.IO.FileSystemWatcher() einlesen, der benachrichtigt dich wenn sich deine Datei ändert. Hierauf kannst du dann reagieren und die Liste neu laden.
 
das verstehe ich nicht ganz?
Habe ja schon ein Projekt, wie kann ich das einbauen?
Mal das Projekt im Anhang:
 

Anhänge

  • Kopie von Support_siko.zip
    123,9 KB · Aufrufe: 10
Zuletzt bearbeitet:
Schau mal ob du damit was anfangen kannst - ich hab zwar keine Ahnung von VB, hab aber versucht dir ne kleine Vorlage zu geben wie es gehen könnte
 

Anhänge

  • Support_siko.zip
    121,9 KB · Aufrufe: 10
Sodele, so wie's jetzt ist solltest du nachvollziehen können was passiert...
 

Anhänge

  • Support.zip
    123,7 KB · Aufrufe: 10
Den Abschnitt versteh ich nicht.
Warum genau 4 Zeilen
Code:
  Private Sub loadCustomerData(ByVal fileName As String)

        _CustomerList = New List(Of CustomerDefinition)

        'Auslesen der Textdatei in einer Schleife und die Daten in die Liste eintragen
        'KNR;Name;Telefonnummer;Problem;Seriennummer

        _CustomerList.Add(New CustomerDefinition("I", "Name_fdf", "Telefonnummer", "Problem", "Seriennummer"))
        _CustomerList.Add(New CustomerDefinition("I", "Name f adsfh", "Telefonnummer", "Problem", "Seriennummer"))
        _CustomerList.Add(New CustomerDefinition("I2", "Name fadsgf", "Telefonnummer", "Problem", "Seriennummer"))
        _CustomerList.Add(New CustomerDefinition("I3", "Namehgshfd", "Telefonnummer", "Problem", "Seriennummer"))
    End Sub
 
Das ist der Teil in dem du die Daten aus deiner Textdatei der Collection zuweist. Die Zeilen durchläufst du in einer Schleife und für jede Zeile machst du ein

Code:
_CustomerList.Add(New CustomerDefinition(...))
Deshalb auf der Kommentar darüber (Auslesen der...)

Die Liste _CustomerList ist eine Auflistung aller vorhandenen Datensätze in deiner Datei. Du musst also versuchen Sie immer aktuell zu halten. Wenn du einen neuen Datensatz anlegst, dann schreibst du ihn dazu, wenn du einen löschst dann musst du den Satz ebenfalls aus der Collection werfen. Dabei kannst du das entweder direkt über die Collection machen oder einen FileWatcher auf die Datei setzen und jedes mal wenn sich die Datei ändert die Daten neu laden
 
sorry, aber ich schnall es einfach nicht.
Ich weiß echt nicht an was es liegt
Kannst nochmal drauf schauen bitte?
 

Anhänge

  • sup.zip
    125 KB · Aufrufe: 13
...und dein Problem liegt momentan genau wo? Ich sehe die Stelle nicht in der du die Textdatei zum lesen öffnest und die Daten in die Liste schreiben willst...
 

Neue Beiträge

Zurück