Dobrý den,
mám formulář a k němu přižazený kód (viz. níže). Na formuláři mám tlačítko, které spustí makro. V makru se provede přechod na další záznam a následně se zavolá procedura. A tato procedura proběhne, nevím proč, 3x.
Dělá mi to jen tehdy, když proceduru volám z makra přes SpustitKod.
Mohl by mi někdo poradit se dvěma věcma?
1. jak se dá ošetřit chybové hlášení makra, pokud se dostanu při pohybech po položkách před první, resp. za poslední záznam?
2. jak lze zajistit, aby procedura proběhla jen jednou (proměnné, které jsou v proceduře nedefinované, jsou nastaveny při spuštění formuláře)
Děkuji
Volaná procedura:
Public Sub filtr()
Dim ZTnazev As String 'přenesení hodnoty pole txt_ZT1NazevPolozky z formuláře frml_1_ZT1 - aktuální položka k vyhledání
Presnost = ComboPresnost.Value 'načtení požadované přesnosti
ZTnazev = UCase(Mid(Replace(Replace(Replace(txt_ZT1NazevPolozky.Value, ",", ""), " ", ""), ".", ""), 1, Presnost)) 'porovnávací (původni) _
výraz bez mezer, teček a čátek
A = Len(ZTnazev) 'zjištění délky porovnávacího řetězce ZTNazev
Zpravy1.BackColor = bluepoz 'nastavení základní barvy pozadí pro zprávy1
Zpravy2.BackColor = bluepoz 'nastavení základní barvy pozadí pro zprávy2
Zpravy1.ForeColor = blackfont 'nastavení základní barvy písma pro zprávy1
Zpravy2.ForeColor = blackfont 'nastavení základní barvy písma pro zprávy2
Zpravy1.FontBold = False
Zpravy2.FontBold = False
Zpravy1.TextAlign = 0
If Presnost > A Then 'Kontrola délky porovnávacího výrazu oproti přesnosti a hlášení pokud je
Zpravy1.Value = "POZOR" 'přesnost větší než délka porovnávacívýrazu
Zpravy2.Value = "Nastavená přesnost je " & Presnost & ", ale délka Názvu je jen " & A & ". Přesnost byla nastavena na " & A & "."
Zpravy1.BackColor = redpoz
Zpravy2.BackColor = redpoz
Zpravy1.ForeColor = yellowfont
Zpravy2.ForeColor = yellowfont
Zpravy2.FontBold = True
Zpravy1.FontBold = True
Zpravy1.TextAlign = 2
Presnost = A 'pokud je délka porovnávacího výrazu menší než přesnost, nastaví se přesnost
' na hodnotu rovnající se délce porovnávacího výrazu
ZTnazev = UCase(Mid(Replace(Replace(Replace(txt_ZT1NazevPolozky.Value, ",", ""), " ", ""), ".", ""), 1, Presnost)) 'porovnávací (původni) _
výraz bez mezer, teček a čátek
End If
b = 0
For i = 0 To PocetPorovnavacichPolozek
strA = UCase(Replace(Replace(Replace(Porovnavacidata(0, i), ",", ""), " ", ""), ".", "")) 'Porovnávací položka bez _
teček, čárek a mezer
c = Len(strA) - Presnost
For y = 1 To c
If Mid(strA, y, Presnost) = ZTnazev Then
ReDim Preserve Predvyber(1, b)
Predvyber(1, b) = Porovnavacidata(0, i)
b = b + 1
y = c
End If
Next y
Next i
PocetPolozekPredvyberu = b - 1
MsgBox PocetPolozekPredvyberu
End Sub
Access - příliš průchodů procedurou
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
-
Příliš velké teplo Příloha(y)
od Dreake236 » 23 srp 2023 19:44 » v Rady s výběrem hw a sestavením PC - 13
- 1594
-
od šulda
Zobrazit poslední příspěvek
24 srp 2023 17:07
-
-
- 7
- 1509
-
od atari
Zobrazit poslední příspěvek
28 lis 2023 11:26
-
- 0
- 819
-
od _FalcoN_
Zobrazit poslední příspěvek
22 kvě 2023 19:21
-
-
Datový model - aktualizace po přidání dalšího sloupce do Access
od MK_Vs » 27 črc 2023 12:05 » v Kancelářské balíky - 0
- 1809
-
od MK_Vs
Zobrazit poslední příspěvek
27 črc 2023 12:05
-
Kdo je online
Uživatelé prohlížející si toto fórum: elninoslov a 3 hosti