Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Access - pole listy wielokrotny wybór

Hauzer1 24 Feb 2018 15:32 2040 12
  • #1
    Hauzer1
    Level 9  
    Witam,
    wiem, że temat bardzo stary ale nic podobnego nie mogłem znaleźć.
    Mam podobny problem jak wyżej opisany.

    W formularzu mam pole listy wielokrotnego wyboru z kolumnami od 1 do 8 (dane pobierane z kwerendy "X") oraz 5 pól tekstowych niezwiązanych.



    Chciałbym po wyborze jednego lub kilku wierszy z listy zapisać w tabeli "Y" kolumny 1 do 8 i do każdego wiersza przypisać te same dane z pól tekstowych.

    Udało mi się zrobić tak, że zapisuje mi tyle wierszy ile wybieram z listy + pola niezwiązane ale powtarza dane kolumn 1 do 8 z ostatniego zaznaczenia.
    Code: vbscript
    Log in, to see the code

    Moderated By adamas_nt:

    Wydzielono z Link

  • #2
    Hauzer1
    Level 9  
    Widać po ilości odpowiedzi temat łatwy i przyjemny :D

    Poniżej to jak sobie z tym poradziłem - może się komuś przyda.

    W tabeli (źródło dla kwerendy "X") dodałem pole z niepowtarzalnym indeksem dla każdego wiersza.
    1 wiersz listy wielokrotnego wyboru = indeks
    + 5pól niezwiązanych

    Część kodu

    Code: vbscript
    Log in, to see the code


    Teraz zapisuje tak jak chciałem ale mam jeszcze jeden problem. Jak odświeżyć listę tak żeby niebyło aktywnego zaznaczenia (lista odświeża się o nowe dane zgodne z kwerendą ale zostaje to właśnie zaznaczenie) - mam nadzieję że mówię z sensem :D :D :D
  • #3
    JRV
    VBA, Excel specialist
    Me.Lista39.ListIndex = -1
  • #4
    Hauzer1
    Level 9  
    Dostaję błąd: :(

    Run-Time error "7777"
    Właściwość ListIndeks została użyta niepoprawnie

    "Wchodzi" bez błędu jak:

    Me.Lista39.SetFocus
    Me.Lista39.ListIndeks = -1

    Ale :D brak zakładanego efektu - zaznaczenie zostaje.
  • #5
    Andie
    Level 22  
    Hauzer1 wrote:
    Ale brak zakładanego efektu - zaznaczenie zostaje.

    Myślę, że to nie jest zaznaczenie (chociaż tak może wyglądać) tylko efekt uzyskanego przez formant listy fokusu.
    Może po prostu ustaw fokus na innym formancie.


    adnie
  • #6
    Hauzer1
    Level 9  
    Nie działa.

    W przypadku listy bez wielokrotnego wyboru ze źródłem danych Lista wartości wystarczyło jak zrobiłem tak Me.ListaX = ""

    Może opiszę dokładniej skąd są pobierane dane do listy wielokrotnego wyboru.

    Na formularzu "F" mamy listę "X" oraz pole "Y"
    Źródłem danych listy jest kwerenda "Z" która ma kilka kolumn a jedna znich ma kryterium pola "Y"
    Code: vbscript
    Log in, to see the code

    Pole "Y" ma ustawione odświeżanie po aktualizacji
    Code: vbscript
    Log in, to see the code


    Po wpisaniu w pole Y odpowiednich danych uzupełnia się lista "X" zaznaczam wybrane wiersze z listy dopisuję pozostałe wartości (opisane wyżej w pierwszym i drugim poście) klikam zapisz i BUM :D
    Zapisuje tak jak chciałem przy okazji taki zapis zmienia dane na liście ale chciałbym aby to "czarne zaznaczenie" znikało. Przeszkadza w dalszej pracy na tych samych danych. Ręcznie mogę raz jeszcze wpisać w pole "Y" kryterium i wyzeruje mi się lista ale to działanie głupiego :D
    Samo Requery tylko odświeża listę (dane).
  • Helpful post
    #7
    Andie
    Level 22  
    Do procedury podpiętej pod "zapisz" spróbuj dodać na końcu:

    Code: vbscript
    Log in, to see the code


    andie
  • #8
    Hauzer1
    Level 9  
    Działa :)
    bardzo dziękuje
  • #9
    Hauzer1
    Level 9  
    Witam,
    odświeżam temat ponieważ następny mój problem dotyczy pola wielokrotnego wyboru.

    Za pomocą takiej listy chciałbym filtrować dane kwerendy/formularza.
    Przy liście z pojedynczym wyborem nie mam problemu - dodaję do kryterium, w kwerendzie, ścieżkę do listy + Requery po aktualizacji.

    Ten sam sposób nie działa dla wielokrotnego wyboru.
  • #10
    Andie
    Level 22  
    Hauzer1 wrote:
    dodaję do kryterium, w kwerendzie, ścieżkę do listy

    C o to znaczy 'ścieżkę do listy'? Pokaż kod vba/sql, który to obsługuje.

    andie
  • #11
    Hauzer1
    Level 9  
    Może źle się wyraziłem poniżej jak wygląda ta kwerenda w SQL

    Code: vbscript
    Log in, to see the code
  • Helpful post
    #12
    Andie
    Level 22  
    Trudno jest w standardowej kwerendzie accessowej zastosować kilka kryteriów z listy wielokrotnego wyboru - nie można do nich odwołać się bezpośrednio w kwerendzie.

    Aby zastosować takie kryteria, musisz je najpierw zapisać w formie odpowiedniego ciągu znaków w jakiejś zmiennej VBA/tablicy (za pomocą pętli), a następnie – w zależności od tego, do czego kwerenda ma być zastosowana, albo wykonać ją z poziomu VBA albo - jeśli ma być zastosowana do wyświetlenia danych w formularzu - użyć innych sposobów, np. właściwości formularza Filter.

    Musisz napisać coś więcej, a najlepiej załączyć plik z przykładowym formularzem i danymi jakie mają zostać obsłużone.



    andie
  • #13
    Hauzer1
    Level 9  
    Przepraszam że tak późno odpisuję.

    Może się komuś przyda:
    Poradziłem sobie w taki sposób że dane (indeks) z pola wielokrotnego wyboru zapisuję na tabeli pomocniczej a potem dane z tabeli idą do kwerendy w VBA jako warunek
    Code: vbscript
    Log in, to see the code