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

[ACCESS] Jak przekazać wartość z formularza do procedury wywołującej?

Duck71 31 Sie 2018 19:00 984 6
REKLAMA
  • #1 17415598
    Duck71
    Poziom 9  
    Posty: 154
    Pomógł: 3
    Ocena: 14
    Proszę o pomoc/poradę

    Wiadomo, że w Accessie można łatwo otrzymać wartość użytego przycisku w MsgBox. Jak uzyskać taki efekt we własnym formularzu?

    Formularz "B" zawierający tylko listę oraz przycisk "Anuluj" wywoływany jest oczywiście z formularza nadrzędnego "A" (w wyniku procedury _Click). metodą DoCmd.OpenForm. Dwukrotne kliknięcie elementu listy w formularzu "B" powoduje wywołanie procedury _AfterUpdate a w niej metody DoCmd.Close acForm. Jak przekazać wybrany element listy do wywołującej procedury _Click w formularzu "A"? Formularz "B" jest "podręczny","modalny" i otwarty jako acDialog.
  • REKLAMA
  • REKLAMA
  • #3 17417002
    Duck71
    Poziom 9  
    Posty: 154
    Pomógł: 3
    Ocena: 14
    Zmienna PUBLIC oczywiście jest rozwiązaniem, ale to definiowanie czegoś na stałe do jednorazowego użytku. Chciałbym raczej tego uniknąć a w zamian tego wykorzystać coś na wzór MsgBox'a:

    Private Sub BtnNowy_Click ()
    Dim Zmienna As Variant
    ....
    Zmienna=MsgBox(tekst, vbOKCancel, tytul)
    ....
    end if
    .....
    End Sub

    Nie wiem czy jest to jednak możliwe, bowiem sposób wywołania/aktywacji jest zupełnie inny
    DoCmd.OpenForm "formWybor_koop", acNormal, "", "", , acDialog

    Pewną nadzieję wzbudza WindowMode (acDialog) bowiem wstrzymuje wykonanie kodu BtnNowy_Click() do czasu zamknięcia formularza formWybor_koop...
  • #4 17417023
    PRL
    Poziom 41  
    Posty: 6914
    Pomógł: 953
    Ocena: 898
    Zapytam w czym Ci przeszkadza 'Public Ala As String'?
    Boisz się o 10 bajtów RAMu?
    Naczytałeś się o nieużywaniu zmiennych globalnych, pewnie.
    Albo po prostu ja nie rozumiem, co chcesz osiągnąć. Własny MsgBox?
    Jak się boisz zmiennych globalnych, to przekazuj dane między obiektami przez tabele, pliki tekstowe... Bez sensu.
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #5 17417075
    Duck71
    Poziom 9  
    Posty: 154
    Pomógł: 3
    Ocena: 14
    Nie chodzi o '10 bajtów RAM'u', bo używam globalnych choćby do przechowywania danych z profilu użytkownika. To raczej chęć utrzymania jakiegoś tam porządku i przejrzystości kodu.
    Zamiast zmiennej globalnej można też użyć niewidocznego textbox'a w formularzu "A" i przesłać do niego wybraną wartość na liście formularza"B" (przed jego zamknięciem), ale wybraną wartość użyję tylko raz jako warunek w kwerendzie, więc nie ma potrzeby ją dłużej przechowywać. Dlatego też pomyślałem o czymś takim jak 'własny MsgBox'. W OpenForm można przesłać argumenty do wykorzystania w procedurze Form_Load formularza, ale jest to tylko w jedną stronę, więc to odpada...
  • REKLAMA
  • #6 17417257
    PRL
    Poziom 41  
    Posty: 6914
    Pomógł: 953
    Ocena: 898
    'Zamiast zmiennej globalnej można też użyć niewidocznego textbox'a w formularzu "A"'

    Nie wiem, czy ja kombinuję, czy Ty.
    Pomogłem? Kup mi kawę.
  • #7 17417440
    Duck71
    Poziom 9  
    Posty: 154
    Pomógł: 3
    Ocena: 14
    Duck71 napisał:
    Proszę o pomoc/poradę

    Wiadomo, że w Accessie można łatwo otrzymać wartość użytego przycisku w MsgBox. Jak uzyskać taki efekt we własnym formularzu?


    Może faktycznie nie byłem precyzyjny.. Ze zmiennych globalnych korzystam, gdy muszę się do czegoś odwołać w kilku miejscach i/lub w różnych formularzach. O ich wadzie (wg mnie) w tym przypadku już pisałem. Tworzenie texbox'a ma podobną wadę, choć jego 'życie' bywa krótsze. Stanąłem właśnie ponownie przed takim problemem i zacząłem się zastanawiać czy jest może jeszcze inny sposób. Kombinowanie nie przyniosło efektu więc poprosiłem o pomoc tu na forum., bo nie jestem zawodowym programistą ani informatykiem z wykształcenia.. Liczę ta no, że ktoś już to rozkminiał i podzieli się doświadczeniem. Czy to zbrodnia? :-)

Podsumowanie tematu

✨ W dyskusji poruszono problem przekazywania wartości z formularza "B" do procedury wywołującej w formularzu "A" w Microsoft Access. Użytkownik poszukiwał sposobu na uzyskanie efektu podobnego do MsgBox, aby przekazać wybraną wartość z listy w formularzu "B" do formularza nadrzędnego "A". Proponowano różne rozwiązania, w tym użycie zmiennych publicznych, niewidocznych textboxów oraz przekazywanie danych przez tabele lub pliki tekstowe. Użytkownik wyraził obawy dotyczące użycia zmiennych globalnych, preferując bardziej uporządkowane podejście do kodu. W końcu podkreślono, że istnieje potrzeba znalezienia alternatywnego rozwiązania, które nie wymagałoby długotrwałego przechowywania danych.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA