logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[VBA Access] - filtrowanie po wielu warunkach/ kombinacja filtrów

Pan_Potrzeba 11 Wrz 2014 13:03 2331 6
REKLAMA
  • #1 13951688
    Pan_Potrzeba
    Poziom 8  
    Posty: 12
    Ocena: 2
    Witam.
    Mam następujący problem.
    Wszystko dzieje się w formularzu ciągłym.
    Mam listę ludzi. Każdy z nich ma po 6 komórek (pola tekstowe) o nazwie COM1,COM2,COM3... itd.
    Patrząc ogólnie jako na formularz ciągły wygląda jak by to były kolumny.
    Mam także warunki nałożone że niektóre osoby są zaznaczone na zielono.

    Mam kod w VBA który wyszukuje po tych komórkach nadane przez nas literkę (każdy z ludzi w polach COM ma jakąś literkę)
    Zdaża się że człowiek1 ma w COM1 literę "K" a człowiek2 w COM2 literę "K" i w "COM1" literę "C"
    Mam też kod który wyszukuje osoby które są zaznaczone na zielono.


    Tu ten kod
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Ten kod zadowala mnie tylko z tego punktu widzenia że szuka po wielu komórkach COM nadanej przez zemnie literki. Jednak jak chcę połączyć filtrowanie po COM (po nadanej przezemnie literki) + filtrowanie osób zielonych to filtrowanie po zielonych osobach już nie działa.

    Natomiast jeśli zamnienię ten kawałek
    Kod: text
    Zaloguj się, aby zobaczyć kod


    na to

    Kod: text
    Zaloguj się, aby zobaczyć kod


    to filtrowanie z po zielonych osobach już działa.
    Ale to rozwiąznie nie podoba mi się ponieważ wyszukuje mi literkę np "K" tylko po komórce COM1 chociaż są osoby które literkę "K" ma w COM2


    Czego potrzebuję?
    Chcę osoby które mają w swojej komórce COM (obojętnie w której COM czy 1 czy 2 czy 3 czy....) wyszukiwaną literkę np "K" plus są zielone.

    Sądzę że wystarczy gdzieś dodać prostą logiczną kombinację żeby to zadziałało. Próbowałem kombinować z zmianą or na AND albo xor.

    Był bym bardzo wdzięczny za każdą pomoc.
  • REKLAMA
  • #2 13952069
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Dodać nawiasy - na początku i przed 'AND'
    strwhere = strwhere & "(([COM1] .....
    .......
    ......."([COM6] = """ & Me.FiltrCom & """) )AND "
  • REKLAMA
  • #3 13952116
    Pan_Potrzeba
    Poziom 8  
    Posty: 12
    Ocena: 2
    Niestety nie.


    Błąd

    Run-time error '3075':
    Brak),] lub innego elementu w wyrażeniu kwerendy '(([COM1] = "B") or ([COM2] = "B") or [COM3] = "B") or ([COM4] = "B") or([COM5] = "B") or ([COM6] = "B")'.


    taki błąd wyskoczył

    PS
    to "B" to jest literka której szukałem
  • REKLAMA
  • #4 13952140
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Napisał
    (([COM1] = "B") or ([COM2] = "B") or [COM3] = "B") or ([COM4] = "B") or([COM5] = "B") or ([COM6] = "B"))
    post #2
  • #5 13952161
    Pan_Potrzeba
    Poziom 8  
    Posty: 12
    Ocena: 2
    Przepraszam ale nie za bardzo zrozumiałem
    mam zamiast


    Kod: text
    Zaloguj się, aby zobaczyć kod



    wpisać

    Kod: text
    Zaloguj się, aby zobaczyć kod

    ?

    to B wybieram z listy a nie wpisuje manualnie do makro. Więc to przeczy trochę mojej koncepji.
  • REKLAMA
  • Pomocny post
    #6 13952173
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    
    If Not IsNull(Me.FiltrCom) Then      
     strwhere = strwhere & "(([COM1]   = """ & Me.FiltrCom & """) or "      
     strwhere = strwhere & "([COM2]   = """ & Me.FiltrCom & """) or "       
    strwhere = strwhere & "([COM3]   = """ & Me.FiltrCom & """) or"      
     strwhere = strwhere & "([COM4]   = """ & Me.FiltrCom & """) or "      
     strwhere = strwhere & "([COM5]   = """ & Me.FiltrCom & """) or "       
    strwhere = strwhere & "([COM6]   = """ & Me.FiltrCom & """)) AND "    
    End If
    

    w poscie #2 zmniejszono
  • #7 13953963
    Pan_Potrzeba
    Poziom 8  
    Posty: 12
    Ocena: 2
    Galante!
    Działa jak szalony.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik ma problem z filtrowaniem danych w formularzu ciągłym w VBA Access, gdzie każdy z ludzi ma przypisane pola tekstowe COM1 do COM6. Chciałby zastosować filtr, który uwzględnia wiele warunków, w tym zaznaczenie osób na zielono oraz wyszukiwanie liter w tych polach. W odpowiedziach zasugerowano dodanie nawiasów do kodu, aby poprawić składnię zapytania. Po wprowadzeniu poprawek, filtr działał poprawnie, co zostało potwierdzone przez użytkownika.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA