Formularze Access

0

Cześć, mam taki problem, chciałem zrobić formularz na accessie z ewidencją korespondencji. Zrobiłem 2 tabele, użytkownicy- userzy co beda uzupełaniać oraz ewidencja czyli tabela gdzie bedzie przetrzymywana ewidencja.
Chciałem zrobic formularz w którym użytkownik będzie wybierany z pola kombi i do wybranego użytkownika dopisać resztę danych które są przetrzymywane w tabeli Ewidencja. Nie moge sobie poradzić żeby userzy byli wybierani z listy, jakieś pomysły? Robiąc w SQL takie rzeczy to dziala normalnie, a tutaj nie chce. zapytań pisanych w sql tez nie łapie.

0

Bo to nie wpisujesz w źródło formantu tylko w żróło wierszy.

Dodatkowo, zrób formularz dla tabeli ewidencja i go wstaw jako podformularz, anie osadzaj bezpośrednio tabeli

Skoropiszesz o access to spakuj i podaj plik accdb, wtedy będzie łatwiej pomóc

0

dodaje załącznik, niestety po zmianie o której mówiłeś nie pomogło.

0

Bo to nie tak łatwo i nie wiem czy dobrze rozumiem intencje, ale zobacz: formularz1 z załącznika

0

raczej nie do końca, ma to działać na takiej zasadzie ze z listy wybieramy użytkownika, który ma dodać wpis a potem uzupełniamy pola i dajemy zapisz i pola się czyszczą, czyli przechodzi do kolejnego rekordu. Jak na obrazku z załącznika

0

Witam
Skoro wątek jest to ja się podłącze..
Nie wyznaje się wystarczająco na tym czego potrzebuję więc proszę o pomoc.

Mam formularz, który wstawia dane do tabeli,
a.pngb.png
Pewne pola muszą być wypełnione ( 1,2,3,4)
Chciałbym aby w momencie przechodzenia do następnego rekordu w zdarzeniu "przed aktualizacją formularza" następowało
sprawdzenie wymaganych pól i wyświetlenie sie komunikat o uzupełnieniu danego pola ( np. zlecający)

To co spreparowałem niestety nie działa

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull([T_WZ_HEADER].[driver].) Then
MsgBox "Wypełnij pole Zlecający"
[T_WZ_HEADER].[driver].SetFocus
Cancel = True
Exit Sub
End If
End Sub
0

Witam

Jest jakiś "magiczny" sposób aby zablokować okienko główne access, przed wyłączeniem z "X" ?

screenshot-20220209121818.png

1

Musisz stworzyć formularz i otworzyć go podczas uruchamiania jako ukryty.

Wstawić kod do zdarzenia unload:

Private Sub Form_Unload(Cancel As Integer)
  If MsgBox("Czy chcesz zakończyć pracę?", vbYesNo + vbQuestion + vbDefaultButton2, "Wyjście") = vbNo Then
    Cancel = 1
  end if
End Sub
0

@Panczo: Dzieki, to co napisałeś działa tak jak ma działać.
Ale potrzebowałbym nico zmodyfikować działanie.. na powyższym prtscr pod przyciskiem EXIT zapisane jest :

Private Sub Command7_Click()
       loog_buttons TB_Login, "Close Application"
    Application.Quit
End Sub

Czy i jak zmodyfikować Sub Form_Unload tak aby wyświetlał sie monit że jedynym słusznym jest wciśniecie EXIT .
A po wciśnięciu EXIT zamykałoby ten ukryty formularz i całą aplikację.
Jak wpisałem tam (EXIT) >>>

DoCmd.Close acForm, "Frm_ukryty", acSaveNo

niestety nie działa, wraca do Sub Form_Unload

1

Musisz zrobić to tak, aby procedura unload "wiedziała", czy ma potwierdzać zamknięcie czy nie.

Najprościej w formularzu: Frm_ukryty:

'zmienna trzymająca info o tym czy pytać przed zamknięciem
Private confirm as Boolean

'dodaj własciwość formularza, która pozwoli sterować zmienną confirm
Public Property Let confirmonclose(ByVal value As boolean)
    confirm = value
End Property

Private Sub Form_Unload(Cancel As Integer)
  if confirm then
    If MsgBox("Czy chcesz zakończyć pracę?", vbYesNo + vbQuestion + vbDefaultButton2, "Wyjście") = vbNo Then
      Cancel = 1
    end if
  end if
End Sub

Private Sub Form_Load()
  'przypisz odpowiednią wartość na starcie
  confirm = true
End Sub

I teraz, jak wykonujesz application.quit to dodaj linijke przed:

Forms("Frm_ukryty").confirmonclose = false
0

@Panczo: sorry że truje z banałami , ale nie wiem gdzie mam wpisać /ustawić te 2 pozycje

  • bo raczej nie w procedurę zdarzenia / Przy załadowaniu lub Przy Zwolnieniu/ te są już uzupełnione + linijka przy zakończeniu aplikacji.
'zmienna trzymająca info o tym czy pytać przed zamknięciem
Private confirm as Boolean

'dodaj własciwość formularza, która pozwoli sterować zmienną confirm
Public Property Let confirmonclose(ByVal value As boolean)
    confirm = value
End Property
0

W module formularza, w całości powinien wyglądać mniej więcej tak jak w kodzie.
Dopisz powyżej procedur.

0

@Panczo: wpisałem
Ale jak ustawiłem debagera to widać że : Form_Load zapisuje confirm=True a później przechodzi do Form_Unload i tam już confirm= empty

screenshot-20220211145438.png

0

A nie naciskałeś stop gdzieś po drodze?

Jaku ustawisz debuger na property to też bedzie pusty?

0

nie...nic...tak jak na załączonym obrazku..

0

dopisz na samej górze modułu

Option explicit

Zapisz formularz, zamknij uruchom i przetestuj.

0

@Panczo: ciągle to samo... ( kiedy próbuje zamykac z X) jak wchodzi w Form_Unload jest już empty
W opcji poprzez EXIT w property confirm=Fales
i tu chyba działa OK

1

Coś robisz nie tak, zobacz przykład z załącznika
4p.zip

UPDATE:

Zobacz jeszcze w edytorze VBA z Menu Debug -> compile, czy nie zwraca błędów.

0

@Panczo: dzięki WIELKIE , problem tkwił prawdopodobnie w tym że formularz Frm_ukryty w trakcie uruchamiania zapisałem niestety jako normal a nie ukryty. A że go zapisałem jako małą formatkę i z parametrami wyświetlania ( coby nie rzucał się w oczy), no to się nie rzucał.. Zapomniałem zmienić na Hidden. Raz jeszcze serdecznie dziękuję za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1