1.3. Evidence údajů vědecké konference

Máme za úkol vytvořit adresář osob včetně tisku adresních štítků pro pozvánky na odborné akce. Dále budeme evidovat údaje pro jednotlivé akce (ty budeme používat při tisku různých sestav). Jednotlivé osoby budeme přiřazovat jako účastníky k jednotlivým akcím a doplňovat potřebnými údaji jako jsou platby za sborník, stravu apod.

Ze systému budeme tisknout kromě jiného také jmenovky účastníků. Proto jsou účastníci děleni do jednotlivých skupin (účastníci, organizátoři apod.). Tisk jmenovek se často doplňuje logem konference, to je rovněž uloženo u údajů konference.

Obr. 5. Datová struktura evidence vědeckých konferencí

Obr. 6. Formulář pro práci s adresářem

Při práci s adresářem se očekává, že bude nutné vybírat osoby podle různých požadavků. Na obr. 6 je uveden formulář pro práci s adresářem. V horní části je nabídka různých možností výběru. Vybrané osoby je možno označit nebo zrušit jejich označení (odznačit). Pokud se nám totiž nepodaří vybrat osoby jiným způsobem, můžeme je ručně označit a pak vybrat jen označené osoby. Tisk adresních štítků se totiž provádí pro aktuální výběr osob.

V dolní části je rovněž tlačítko, kterým je možno zapsat aktuální osobu k aktuální akci jako účastníka zvoleného typu. Přitom se samozřejmě kontroluje, zda osoba není zapisována na akci opakovaně.

Výběr záznamů probíhá obdobně také při práci s účastníky konkrétní akce. Protože kombinací výběru je velké množství, byla vytvořena funkce, která kontroluje údaje jednoho záznamu (účast osoby na akci) a vrací logickou informaci, zda záznam vyhovuje aktuálnímu požadavku. Ve zdrojovém dotazu pro formulář pak pro každý záznam testujeme, zda funkce vrací hodnotu 1.



Function UcastFiltrDej (Jm As Variant, Org As Variant, St As Variant, Tisk As Variant, Kl As Variant, Poc As Variant) As Integer

*********************************************************

Kontrola aktuálního záznamu, zda vyhovuje filtru

*********************************************************

Dim Mul As Integer
Mul = 0
If IsNull(UJmeno) Or UJmeno = Then
    Mul = Mul + 1
Else
    If IsNull(Jm) Or Jm =  Or InStr(Jm, UJmeno) 0 Then
        Mul = Mul + 1
    End If
End If
If IsNull(UOrganizace) Or UOrganizace = Then
    Mul = Mul + 1
Else
    If IsNull(Org) Or Org = Or InStr(Org, UOrganizace) 0 Then
        Mul = Mul + 1
    End If
End If
If IsNull(UStat) Or Ustat =  Then
    Mul = Mul + 1
Else
    If IsNull(St) Or St =  Or InStr(St, UStat)  0 Then
        Mul = Mul + 1
    End If
End If
If IsNull(UTisk) Or Utisk =  Then
    Mul = Mul + 1
Else
    If IsNull(Tisk) Or Tisk =  Or Tisk = UTisk Then
        Mul = Mul + 1
    End If
End If
If IsNull(USkupina) Or USkupina =  Then
    Mul = Mul + 1
Else
    If IsNull(Kl) Or Kl =  Or InStr(Kl, USkupina) Then
        Mul = Mul + 1
    End If
End If
If IsNull(UUHost) Or UUHost = 0 Then
    Mul = Mul + 1
Else
    If IsNull(Poc) Or UUHost = Poc Then
        Mul = Mul + 1
    End If
End If
If Mul = 6 Then
    UcastFiltrDej = 1
Else
    UcastFiltrDej = 0
End If
End Function

Z výpisu je zřejmé, že funkce pracuje s uloženými požadavky filtru. Ty se ukládají vždy po změně obsahu položky filtru pomocí následující funkce. O který parametr se jedná, určuje vlastnost Tag aktuálního objektu formuláře.



Function UcastFiltrSet ()

*********************************************************

nastavení globální proměnné pro filtr záznamů

*********************************************************

Dim C As Control
Set C = Screen.ActiveControl
Select Case C.Tag
    Case 1
        If IsNull(C.Value) Then
            UJmeno = 
        Else
            UJmeno = C.Value
        End If
    Case 2
        If IsNull(C.Value) Then
            UOrganizace = 
        Else
            UOrganizace = C.Value
        End If
    .....
    Case Else
        MsgBox Chybné volání procedury UcastFiltrSet()
End Select
End Function

Je potřeba nezapomenout na počáteční nastavení proměnných pro filtr. Nejlépe při otevření formuláře, který filtr používá.



Function UcastFiltrInit ()

*********************************************************

Nastavení proměnných pro filtr záznamů

*********************************************************

UJmeno = 
UOrganizace = 
UStat = 
UTisk = Null
USkupina = 
UUHost = Null
End Function