Access - příliš průchodů procedurou

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

policky
nováček
Příspěvky: 15
Registrován: srpen 07
Pohlaví: Nespecifikováno
Stav:
Offline

Access - příliš průchodů procedurou

Příspěvekod policky » 11 zář 2007 09:42

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

Reklama
  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: elninoslov a 3 hosti