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.
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
dodaje załącznik, niestety po zmianie o której mówiłeś nie pomogło.
Bo to nie tak łatwo i nie wiem czy dobrze rozumiem intencje, ale zobacz: formularz1 z załącznika
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
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,
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
Witam
Jest jakiś "magiczny" sposób aby zablokować okienko główne access, przed wyłączeniem z "X" ?
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
@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
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
@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
W module formularza, w całości powinien wyglądać mniej więcej tak jak w kodzie.
Dopisz powyżej procedur.
@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
A nie naciskałeś stop gdzieś po drodze?
Jaku ustawisz debuger na property to też bedzie pusty?
nie...nic...tak jak na załączonym obrazku..
dopisz na samej górze modułu
Option explicit
Zapisz formularz, zamknij uruchom i przetestuj.
@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
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.
@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.