2.2. Chyba při otevírání dotazu

Otevírání dotazů (Query) v programovém modulu (Module) nemusí být vždy bez problémů. Použijeme běžného otevření dotazu:
Set R = D.OpenRecordset("QVyplatyPracovnici", DB_OPEN_DYNASET)
Objeví se však následující hlášení:

Obr. 16. Hlášení o nemožnosti otevřít dotaz

Jistě to autora nepotěší. Přitom samotný dotaz "QVyplatyPracovnici" je možno bez problémů otevřít, použít jako zdroj formuláře či sestavy. Problém je dobře skryt v definici dotazu, viz obr. 17.

Obr. 17. Dotaz, který nebylo možno v modulu otevřít

Z obrázku nás možná napadne důvod chybového hlášení. Tím je odkaz na položku formuláře, a to i přes to, že tento formulář je přístupný a tutéž položku můžeme v programu běžně adresovat. Nicméně při otevření dotazu v programu je tato položka chápána jako parametr a systém vyhlásil chybu (nezadaná hodnota parametru). Řešení spočívá v úpravě dotazu. Místo přímého odkazu na položku formuláře použijeme volání následující funkce a ihned je vše v pořádku.

Function FarmaAkt () As Variant
' ************************************************************
' Funkce vrací název aktuální farmy z formuláře FFarmy
' ************************************************************
FarmaAkt = Forms![FFarmy]![Farma]
End Function