Použití Data Environment Designeru ve VB 6.0

Aktualizace záznamů

Přidat záznam již umíme, nyní je třeba také jej umět aktualizovat. Pro aktualizaci použijeme původní formulář frmAdd, který uložíme pod jiným jménem a lehce upravíme kód.

 

Na formulář frmAdd klikněte pravým tlačítkem, zvolte Save As a jako nové jméno zapište frmCor. Formulář otevřete a jeho název přepište na frmCor a titulek na Upřesnění záznamu. Teprve po změně jména formuláře přidejte do projektu původní frmAdd, jinak se to potluče.

 

Událost Load formuláře změníme takto:

 

Private Sub Form_Load()

   GetTitul.AddItem " "
   GetTitul.AddItem "Ing."
   GetTitul.AddItem "MUDr."
   GetTitul.AddItem "RNDr."
   GetTitul.AddItem "Bc."
   GetTitul.AddItem "Mgr."
   

   De.rssSeznam.MoveFirst
   De.rssSeznam.Find "Cislo = '" + frmMain.Seznam.SelectedItem.SubItems(2) + "'"
   Pozice = 0

   For i = 0 To GetTitul.ListCount
      If Trim(GetTitul.List(i)) = Trim(De.rssSeznam!Titul) Then
         Pozice = i
         Exit For
      End If
   Next i

   GetTitul.ListIndex = Pozice
   GetJmeno.Text = De.rssSeznam!Jmeno
   GetPrijmeni.Text = De.rssSeznam!Prijmeni
   GetCislo.Text = De.rssSeznam!Cislo

End Sub

Onen na první pohled vypadající nesmyslný cyklus zajišťuje vyhledání správného titulu v combu. Já vím, že je to primitivní a lze to udělat jinak, ale tady to stačí.

 

Nyní je třeba změnit uložení změny při kliknutí na tlačítko Ok:

 

Private Sub OkButton_Click()

   Dim IndX As ListItem

   If Trim(GetPrijmeni.Text) = "" Then
       MsgBox "Příjmení musí být zadáno !!!", vbInformation + vbOKOnly,
       "Upozornění"
       GetPrijmeni.SetFocus
       Exit Sub
   End If
   If Trim(GetCislo.Text) = "" Then
       MsgBox "Číslo musí být zadáno !!!", vbInformation + vbOKOnly,
       "Upozornění"
      GetCislo.SetFocus
      Exit Sub
   End If

   If Not Trim(GetCislo.Text) =    Trim(frmMain.Seznam.SelectedItem.SubItems(2)) Then
         De.rssSeznam.MoveFirst
         De.rssSeznam.Find "Cislo = '" + GetCislo.Text + "'"
         If Not De.rssSeznam.EOF Then
             MsgBox "Toto číslo již bylo uloženo !!!", vbExclamation + vbOKOnly, "Upozornění"
            GetCislo.SelStart = 0
            GetCislo.SelLength = 20
            GetCislo.SetFocus
            Exit Sub
       End If
   End If

   With De.rssSeznam
       .MoveFirst
       .Find "Cislo = '" + frmMain.Seznam.SelectedItem.SubItems(2) + "'"
       !Titul = GetTitul.Text
       !Prijmeni = GetPrijmeni
       !Jmeno = GetJmeno.Text
       !Cislo = GetCislo.Text
       .Update
       .Close
       .Open
   End With

   frmMain.Seznam.SelectedItem.Text = GetPrijmeni.Text
   frmMain.Seznam.SelectedItem.SubItems(1) = GetJmeno.Text
   frmMain.Seznam.SelectedItem.SubItems(2) = GetCislo.Text
   frmMain.Seznam.Sorted = True
   frmMain.Seznam.SelectedItem.EnsureVisible
   Unload Me

End Sub

Jak vidíte, kód se oproti přidání záznamu příliš nezměnil. Důležitý je řádek, kde si testuji, zda je či není číslo stejné jako v seznamu na frmMain. Pokud totiž aktualizujete jiné hodnoty než číslo, je zbytečné hledat duplicitu.

 

Nyní je již jen třeba formulář pro aktualizaci zavolat z hlavního formu. Abyste se vyhnuli následným chybám při vyhledávání záznamu, je dobré se ujistit, že vůbec nějaké záznamy existují a jsou v seznamu. Na tlačítko pro otevření aktualizačního formuláře zapište:

 

If Seznam.ListItems.Count > 0 Then
      frmCor.Show vbModal
End If

Ještě doporučují přidat na událost DblCkick seznamu volání aktualizace:

 

Toolbar1_ButtonClick Toolbar1.Buttons("Open")

Záměrně používám vyvolání události click na toolbaru místo psaní kódu pro otevírání, protože při pozdější změně není třeba hlídat dva kódy.

 Další Zpět

Autor: The Bozena