Article View: pl.comp.bazy-danych.msaccess
Article #137775Re: Maska Wprowadzania dla nr dokumentu.
From: Zbigniew Bratko
Date: Sun, 28 Jun 2020 10:44
Date: Sun, 28 Jun 2020 10:44
123 lines
5544 bytes
5544 bytes
W dniu 26.06.2020 o 14:18, Ryszard Tober pisze:
> W dniu środa, 24 czerwca 2020 13:20:34 UTC+2 użytkownik Zbigniew Bratko napisał:
>> W dniu 24.06.2020 o 11:36, Ryszard Tober pisze:
>>> Dziękuję bardzo.
>>> Mam przynajmniej jasność, że w masce wprowadzania nie da się tego zagadnienia rozwiązać.
>>>
>>> Próbowałem generalnie uprościć też ten kod, tak żeby zawęzić go wyłącznie do samej spacji na końcu zeskanowanego tekstu.
>>> Wydłubałem coś takiego:
>>>
>>> Private Sub Nr_Paczki_Change()
>>> Dim Nr_D As String
>>>
>>> Nr_D = Nz(Me.Nr_Paczki.Text)
>>>
>>> If Right$(Nr_D, 1) = " " Then
>>>
>>> Me.Nr_ListuPrzew.SetFocus
>>>
>>> Else
>>>
>>> MsgBox "Nr_Dokumentu - Coś nie tak"
>>>
>>> End If
>>> End Sub
>>>
>>> Po wklejeniu danych ze spacją na końcu to działa, ale na skanerze nie.
>>> Mógłby pan rzucić okiem czy czegoś nie pominąłem?
>>> Byłbym wdzięczny i z góry dziękuję.
>>>
>>> Ryszard Tober-Marczewski
>>>
>>
>> Nasuwają mi się pytania:
>> 1. Czy po zapisie danych ze skanera zachodzi zdarzenie "Change" ?
>> Sprawdź np.
>> '______________________________
>> Private Sub Nr_Paczki_Change()
>> Dim Nr_D As String
>>
>> MsgBox "Działa " & Nr_D
>>
>>
>>
>> 2. Czy okno przed wczytaniem ze skanera MUSI posiadać Fokus,
>> czy zapis odbywa się inaczej.
>> 3. Być może zachodzi zdarzenie BeforeUpdate i AfterUpdate i wtedy
>> w zdarzeniu BeforeUpdate coś da się zrobić.
>>
>>
>> --
>> Pozdrawiam
>> Zbigniew Bratko
>
> Próbowałem umieścić kod w zdarzebue "Przed aktualizacją" i "po aktualizacji" ale to też przy skanowaiu nie działało.
>
> Przyszło mi do głowy inne rozwiązanie, ale nie wiem jak je ugryźć, czy jest możliwość np umieszczenia w zdarzeniu "Po zmianie" w kodzie, pętli sprawdzającej, czy pole zostało wypełnione i jeśli tak to wówczas dopiero uruchamiała by się procedura weryfikacji, czy na końcu jest spacja.
>
Odpowiem sam sobie:
1. Nie zachodzi zdarzenie "Change"
2. Pole tekstowe NrPrzesylki nie musi mieć "Fokusu".
3. Nie zachodzą zdarzenia BeforeUpdate i AfterUpdate dla formantu.
Nie sądzę, by "Skaner" zapisywał dane poprzez Recordset,
raczej bezpośrednio poprzez Me.txtNrPrzesylki.Value = "NowaWartość"
i dlatego żadne z wymienionych zdarzeń nie zachodzi.
Można próbować monitorować zmiany poszczególnych pól w Timerze formularza.
Przykładowy kod dla jednego pola
' zmienna na poziomie modułu
Private m_sNrPrzesylkiOld As String
' __________________________________
' przycisk włączający Timer
Private Sub btnWlaczTimer_Click()
' Przed uruchomieniem skanera Zapamiętaj wartość pola "txtNrPrzesyłki"
m_sNrPrzesylkiOld = Nz(Me.txtNrPrzesylki.Value, "")
Me.TimerInterval = 100
'uruchom skaner !!!
End Sub
'______________________________
Private Sub Form_Timer()
' istnieje niebezpieczeństwo, że przy ponownym skanowaniu
' tej samej wartości, zmian nie będzie i cały czas będzie zachodziło
' sprawdzanie. Można przed ponownym skanowaniu wyzerować sprawdzane
' pole, uruchomić Timer i Skaner
If StrComp(Nz(Me.txtNrPrzesylki.Value, ""), _
m_sNrPrzesylkiOld, vbBinaryCompare) <> 0 Then
' wyłącz Timer, bo pole uległo zmianie
Me.TimerInterval = 0
MsgBox "NrPrzesylki uległ zmianie i wynosi " & vbNewLine & _
Nz(Me.txtNrPrzesylki.Value, "")
End If
End Sub
Jeżeli zapis danych odbywa się poprzez
Me.txtNrPrzesylki.Value = "NowaWartość"
to ewentualnie końcowe sprawdzanie WSZYSTKICH pól możesz zrobić
w zdarzeniu Form_BeforeUpdate
'_________________________________________________
Private Sub Form_BeforeUpdate(Cancel As Integer)
' Tutaj kod. Jak coś jest nie tak
Cancel=TRUE
' MsgBox "Jakieś informacje dla użytkownika"
End Sub
Z tą spacją na końcu możesz mieć problem. O ile skaner zapisze
NrPrzesylki ze spacją na końcu, to ręczna edycja tego pola w formularzu
spowoduje usunięcie spacji końcowej przez MS Access
--
Pozdrawiam
Zbigniew Bratko
Technical Details
Message-ID:
<5ef874a3$0$526$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news-2.dfn.de!news.dfn.de!2.eu.feeder.erje.net!feeder.erje.net!border1.nntp.ams1.giganews.com!nntp.giganews.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<7ea3907a-1d5e-4aeb-982b-b0a89ae2931eo@googlegroups.com> <af7beae8-dec3-4bbe-994e-131311b0ef65o@googlegroups.com> <5ef33701$0$549$65785112@news.neostrada.pl> <190dbbff-d9b1-474d-baaa-05b44b595b0fo@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news-2.dfn.de!news.dfn.de!2.eu.feeder.erje.net!feeder.erje.net!border1.nntp.ams1.giganews.com!nntp.giganews.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Subject: Re: Maska Wprowadzania dla nr dokumentu. Newsgroups: pl.comp.bazy-danych.msaccess References: <7ea3907a-1d5e-4aeb-982b-b0a89ae2931eo@googlegroups.com> <af7beae8-dec3-4bbe-994e-131311b0ef65o@googlegroups.com> <5ef33701$0$549$65785112@news.neostrada.pl> <190dbbff-d9b1-474d-baaa-05b44b595b0fo@googlegroups.com> From: Zbigniew Bratko <adminBEZTEGO@accdb.pl> Date: Sun, 28 Jun 2020 12:44:50 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 MIME-Version: 1.0 In-Reply-To: <190dbbff-d9b1-474d-baaa-05b44b595b0fo@googlegroups.com> Lines: 149 Message-ID: <5ef874a3$0$526$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 37.248.158.60 X-Trace: 1593341091 unt-rea-b-01.news.neostrada.pl 526 37.248.158.60:25973 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit