vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 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
Abfrage verkürzen 
Autor: Marty**
Datum: 24.07.16 19:34

Hallo,

mit folgenden Code mache ich eine Abfrage in einer Listview.
Gibt es eine Möglichkeit das ganze zu verkürzen ?

For Each lva As ListViewItem In lv.Items
            If lva.SubItems(1).Text = "5" And lva.SubItems(3).Text = "41" Then
                lva.SubItems(7).Text = "Typ1"
            End If
        Next
 
        For Each lva As ListViewItem In lv.Items
            If lva.SubItems(1).Text = "5" And lva.SubItems(3).Text = "59" Then
                lva.SubItems(7).Text = "Typ1"
            End If
        Next
 
        For Each lva As ListViewItem In lv.Items
            If lva.SubItems(1).Text = "5" And lva.SubItems(3).Text = "91" Then
                lva.SubItems(7).Text = "Typ1"
            End If
        Next
 
        For Each lva As ListViewItem In lv.Items
            If lva.SubItems(1).Text = "5" And lva.SubItems(3).Text = "283" Then
                lva.SubItems(7).Text = "Typ1"
            End If
        Next
 
        For Each lva As ListViewItem In lv.Items
            If lva.SubItems(1).Text = "5" And lva.SubItems(3).Text = "315" Then
                lva.SubItems(7).Text = "Typ1"
            End If
        Next
 
        For Each lva As ListViewItem In lv.Items
            If lva.SubItems(1).Text = "5" And lva.SubItems(3).Text = "347" Then
                lva.SubItems(7).Text = "Typ1"
            End If
        Next
Diese sechs Zeile sind immer untereinander vorhanden, sobald die 5 und 41 vorhanden sind.

Und wie kann ich die gefunden Zeilen farbig makieren ?

Gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Abfrage verkürzen 
Autor: Manfred X
Datum: 24.07.16 21:19

Dim kritvals() As String = {"41", "59", "91", "283", "315", "347"}
 
For Each lva As ListViewItem In lv.Items
   With lva
      If .SubItems.Count >= 8 Then
         If .SubItems(1).Text = "5" AndAlso _
            kritvals.Contains(.SubItems(3).Text) Then
 
            .SubItems(7).Text = "Typ1"
            '.backcolor = ....
         End If
      End If
   End With
Next lva
Das Konstrukt ist kein Abfrage, sondern eine Bedingung.
Ob und ggf. wo genau der Count-Check hingehört, hängt vom Aufbau der Liste ab.
Eventuell erst hinter "Contains".
Ob es Sinn macht, die Subitem-Indices "hart" zu kodieren, kann ich nicht beurteilen.
Das gleiche gilt für die in der Liste enthaltenen bzw. zugewiesenen Werte (Strings).

Das Listview-Control arbeitet auch mit Schlüsseln.
Bei Änderungen der Datenstruktur ist das wesentlich flexibler.

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

Re: Abfrage verkürzen 
Autor: Marty**
Datum: 31.07.16 21:01

Sers,

ich habe jetzt ca 50 solcher Abfragen.
Leider macht das den Code sehr unübersichtlich.
Kann man das ganze irgendwie in eine Klasse auslagern ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Abfrage verkürzen 
Autor: Manfred X
Datum: 31.07.16 21:41

Niemand versteht, was mit "solchen Abfragen" gemeint ist.

Das "Auslagern" in eine Klasse macht unstrukturierten
Spaghetti-Code nicht übersichtlicher.

Du solltest erklären, was Du erreichen willst.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Abfrage verkürzen 
Autor: Marty**
Datum: 31.07.16 21:54

Sers,

hauptsächlich möchte ich den Werten in der Listview eine Beschreibung hinzufügen.
Damit die Zeile eindeutig zu identifizieren ist.

Erreichen möchte ich damit, das der Code in der Form übersichtlicher wird.
Desweiteren benötige ich diese ca. 50 Abfragen 2 mal im Code
(Datei>öffnen und bei einem direkten Eingabe des Dateinamens)

Jetzt habe ich die gleichen Abfragen 2 mal drinnen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Abfrage verkürzen 
Autor: Manfred X
Datum: 31.07.16 22:18

Das ist nicht verständlich.

Woher beziehst Du die Werte in den Listview-Zeilen (Quelle, Ursprung)
denen eine Beschreibung hinzuzufügen ist?

Du benötigst vermutlich eine Datei oder Datenbank, in der die
Beziehung zwischen den zu ergänzenden Beschreibungen und
den entsprechenden IDs der Listviewitems eingetragen ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Abfrage verkürzen 
Autor: Marty**
Datum: 31.07.16 22:44

Die Daten stammen von einer Hobby CNC Maschine.
http://www.cncecke.de/bilder/uploadFiles/20987_115271991102_cnc-wooddy.jpg
Um den Code an manchen stellen besser lesbar machen zu können, soll er halt eine Beschreibung hinzufügen.


Es funktioniert ja mit den Abfragen schon recht gut.
Leider ist es halt sehr umständlich die Abfragen zu editieren.
Manfred X schrieb:
Zitat:


Du benötigst vermutlich eine Datei oder Datenbank, in der die
Beziehung zwischen den zu ergänzenden Beschreibungen und
den entsprechenden IDs der Listviewitems eingetragen
ist.


Genau so eine Möglichkeit suche ich. Bin für jeden Tipp dankbar.
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