vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 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

Visual-Basic Einsteiger
Re: Suchfunktion mit Checkboxen 
Autor: Wowbagger
Datum: 15.11.14 10:14

Hallo zurück,

ich danke dir schonmal für deine Antwort. Mir ist es inzwischen gelungen die Suche umzusetzen. Für eventuelle Mitleser poste ich ein paar Tips und entscheidene Code Schnipsel. Bitte immer dran denken, dass das ganze ohne VBA Vorkenntnisse entstanden ist und z.B. die Array Längen immernoch Hardcoded sind und einige andere Sachen sind ebenfalls "unschön". ABER: Es tut das was es soll.

Ich habe Daten in einer Exceltabelle (zurzeit<90 Zeilen). Diese werden in einen Array eingelesen, für meine Zwecke nur die Städte mit den dazugehörigen Typ. Die nächsten 6 Spalten des Arrays (also nach Stadt und Typ) sind Boolean Werte wobei jede Spalte einen Typ repräsentiert. Mit einer If abfrage habe ich dann jeweils einen Wert auf True gesetzt abhängig vom Typ. Später dann alle doppelten Städte zusammengefasst und alle True Werte übernommen. So ist eine Art Suchcode entstanden: (010101) In dem Array Test habe ich auf 6 Stellen die Werte der Checkboxen übernommen


Die Eigentliche Suchabfrage war dann doch recht einfach:

    For d = 1 To 100 'wie gesagt alles hardcoded, wird noch verbessert wenn 
    ' Zeit ist/schlechter Stil
    For i = 0 To 5
     If Staedte(d, i + 3) <= Test(i) Then      
     Else: GoTo NaechsteZeile
     End If
     Next i
 
     ErgebnisZeile(y) = d
     y = y + 1
 
NaechsteZeile:
Next d
Verbesserungsvorschläge etc. nehme ich gerne an. Ich hoffe auf weitere Arbeitsaufträge in Richtung VBA, werde also bestimmt bald nochmal eine Frage haben. Bis dahin,
Lg
David





Andere Codeschnipsel für Interessierte:

Einlesen des Tabellenblatts in den Daten Array
For d = 1 To 100
 
Daten(d, 1) = Tabelle1.Cells(d, 7).Value
Daten(d, 2) = Tabelle1.Cells(d, 13).Value
'MsgBox Daten(d, 1) & "  " & Daten(d, 2)
Next d
Hier der Teil in dem ich meinen Suchcode erstelle, Zunächst wird geprüft ob identische Einträge vorhanden sind. Also 1 Stadt mehrmals mit dem gleichen Typ gelistet ist und doppelte Einträge werden durch LEER im Stadtfeld ersetzt,anschließend werden die Werte für die Suchcodes ausgelesen.

For d = 1 To 100
    For e = 1 To 100
        If e <> d Then
        If Daten(d, 1) = Daten(e, 1) And Daten(d, 2) = Daten(e, 2) Then
          Daten(e, 1) = "LEER"
          Daten(e, 2) = "LEER"
        End If
        End If
    Next e
        If Daten(d, 2) = "TYP1" Then
            Daten(d, 3) = True
            Else: Daten(d, 3) = False
        End If
        If Daten(d, 2) = "Typ2" Then
            Daten(d, 4) = True
            Else: Daten(d, 4) = False
        End If
        If Daten(d, 2) = "Typ3" Then
           Daten(d, 5) = True
           Else: Daten(d, 5) = False
        End If
        If Daten(d, 2) = "Typ4" Then
           Daten(d, 6) = True
           Else: Daten(d, 6) = False
        End If
        If Daten(d, 2) = "Typ5" Then
           Daten(d, 7) = True
           Else: Daten(d, 7) = False
        End If
        If Daten(d, 2) = "Typ6" Then
           Daten(d, 8) = True
           Else: Daten(d, 8) = False
        End If
 
Next d
Hier werden dann aus merhern Einträgen für eine Stadt ein Eintrag.

z.B. 10000 und 001000 zu 101000
Schöner wäre direkt keine leeren Felder zu haben, da hab ich noch was zu tun.

For d = 1 To 100
 
 
    For x = 1 To 100                        ' Doppelte Einträge finden
        If Daten(x, 1) = Daten(d, 1) And d <> x Then    '
         If Daten(x, 1) = "LEER" Then GoTo LeeresFeld
                    For e = 3 To 8                  'Alle Trues Hochkopieren in 
                    ' ersten Treffer
                        If Daten(x, e) = True Then  '
                        Daten(d, e) = True      '
                        End If                      '
                    Next e
            Daten(x, 1) = "LEER"
 
         End If
 
LeeresFeld:
     Next x
 
 
If Daten(d, 1) <> "LEER" Then
                z = 1
                For z = 1 To 8
                        HilfsDaten(w, z) = Daten(d, z)
 
                Next z
                  w = w + 1
End If
 
 
Next d


Beitrag wurde zuletzt am 15.11.14 um 10:16:32 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Suchfunktion mit Checkboxen2.541Wowbagger14.11.14 13:35
Re: Suchfunktion mit Checkboxen1.154Blackbox14.11.14 17:59
Re: Suchfunktion mit Checkboxen1.227Wowbagger15.11.14 10:14

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