Použití Data Environment Designeru ve VB 6.0 |
![]() |
Přidávání záznamů
Obsah tabulky si nyní již umíme vypsat. Přidání záznamů také není příliš složité. Nejprve je nutné založit nový formulář, který bude sloužit pro přidávání záznamů. Takže založte nový formulář a pojmenujte jej frmAdd. Na něj natáhněte ComboBox pro tituly a pojmenujte jej GetTitul. Přidejte tři textboxy s názvy GetJmeno, GetPrijmeni a GetCislo. Samozřejmě nezapomeňte na tlačítka Ok (OkButton) a Storno (CancButton). Formulář by mohl vypadat přibližně takto:
Při tvorbě polí doporučuji využít vlastnosti MaxLength textboxu, do které si nastavte maximální možný počet znaků, zadávaných v poli. Tento počet by měl korespondovat s velikostí pole nadefinovaného v tabulce, ušetříte si pozdější problémy s kontrolou délky dat.
Na událost Form_Load formuláře zapište kód pro inicializaci polí:
Private
Sub Form_Load() GetTitul.ListIndex=0 Do hlavního formuláře si přihoďte toolbar, pomocí kterého budete volat jednotlivé formuláře a ovládat další akce. Asi takhle:
Na tlačítko s přidáním záznamu dejte otevření formuláře pro přidání záznamu:
frmAdd.Show vbModal
Parametr vbModal říká, že okno bude nahoře a dokud ho nezavřete, s jiným oknem v aplikaci nepůjde pracovat. Otestujte si projekt, zda se okno pro přidání otevírá a načítá se combo.
Nyní k základnímu ovládání formuláře. Je slušnost, že po entru skočí kurzor na další pole, takže na událost KeyPress prvků napište:
If
KeyAscii = 13 Then Příkaz Keyascii=0 je tam proto, aby to nepípalo. Problém může trochu nastat při zadávání čísla. Je třeba zabránit, aby tupý uživatel nezadal znaky, které nemá. Jsou dvě možnosti - buď použijete API funkci pro nastavení vlastností Textboxu, nebo si na události Keypress pole GetCislo odfiltrujete klávesy sami. Protože je toto pouze učební příklad, zde je velice jednoduchý filtr: 7 Private
Sub GetCislo_KeyPress(KeyAscii As Integer) KeyAscii vrátí hodnotu stisknutého znaku. Znaky 48 až 57 jsou 0-9. Po entru (13) skočíme dál a pro stisk jiné klávesy ji zruším (case else).
Je také třeba ošetři nepříjemné stavy při ukládání. Nemělo by se ukládat prázdné příjmení a číslo. Číslo by navíc nemělo být duplicitní. Vše se provede při události Click na tlačítku Ok (OkButton). Pokud je test v pořádku, lze záznam uložit a ukončit zadávací formulář:
Private
Sub OkButton_Click() If
Trim(GetCislo.Text) = "" Then De.rssSeznam.MoveFirst With
De.rssSeznam Set
IndX = frmMain.Seznam.ListItems.Add(, , GetPrijmeni.Text) Ke zjištění duplicity. Pokud hledáte nějakou položku a není nalezena, je ukazatel nastaven na EOF. Takže při hledání stačí pak otestovat tento parametr a víte, jak jste dopadli. Zavření (Close) a otevření (Open) recordsetu slouží pro aktualizaci (Pokud píšete síťovou aplikaci, je to obzvláště nutné. O chybě v metodě Requery už jsem se zmiňoval). Poslední řádky zajišťují přidání nové položky do seznamu na hlavním formuláři, její začlenění do třídícího pořadí (Sorted=True) a nastavení, že má na ní stát kurzor a má se celá zobrazit (EnsureVisible). |
![]() |
Autor: The Bozena |