Aplikační formulář Přehled materiálu
Přehled materiálu - přidat záznam
 Tisk

Přehled materiálu - přidat záznam

Tlačítko Vložit

Vložení materiálu provedeme opět transakčním zpracováním. Po klepnutí na tlačítko vložit se zobrazí popisek a pole pro zápis čísla materiálu . Pole se přednastaví prázdným řetězcem a nastaví se na ně fokus.


Kód vložíme do regiónu #Region "Editace zaznamu" - #Region "Ridici tlacitka":

    Private Sub btnVlozit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVlozit.Click

        'zablokovat jiné možnosti, než změnu materiálu

        Me.pnlNavig.Enabled = False

        Me.pnlEdit.Enabled = False

        Me.btnZavrit.Enabled = False

        Me.grbRazeni.Enabled = False

        Me.dgvTblMaterial.Enabled = False


        Me.pnlVlozit.Visible = True

        Me.txtVlozit.Text = "" 'vlozeni prazdneho retezce

        Me.txtVlozit.Focus()


    End Sub


Vyplnění pole s číslem vkládaného materiálu

Pro pole s číslem vkládaného materiálu připravíme obsluhu vlastnosti ztráta fokusu tohoto pole:


Kód vložíme do regiónu #Region "Editace zaznamu":

#Region "Vlozeni noveho zaznamu"

    Private Sub txtVlozit_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtVlozit.LostFocus

        Dim foundIndex As Integer

        Dim VkladanyText As String = Me.txtVlozit.Text


        foundIndex = TblMaterialBindingSource.Find("Cislo_Mat", VkladanyText)


        If foundIndex >= 0 Then

            MsgBox("Takový materiál již existuje", MsgBoxStyle.Exclamation, "Nelze vložit")

            Me.pnlNavig.Enabled = True

            Me.pnlEdit.Enabled = True

            Me.btnZavrit.Enabled = True

            Me.grbRazeni.Enabled = True

            Me.dgvTblMaterial.Enabled = True

        Else

            'zablokovat jiné možnosti, než změnu materiálu

            Me.pnlNavig.Enabled = False

            Me.pnlEdit.Enabled = False

            Me.btnZavrit.Enabled = False

            Me.grbRazeni.Enabled = False

            Me.dgvTblMaterial.Enabled = False


            'zviditelnit potvrzovací skupinu

            Me.pnlPotvrdit.Visible = True


            'uvolnit pole pro editaci

            Me.cmbMerna_Jed.Enabled = True

            Me.txtNazev_Mat.Enabled = True

            Me.txtMnoz_Poj.Enabled = True

            Me.txtMnoz_Do_Pa.Enabled = True

            Me.txtKoment.Enabled = True


            'nastaveni pocatecnich hodnot pro nove zaznamy

            With DsData.tblMaterial

                .Cislo_MatColumn.DefaultValue = Me.txtVlozit.Text.Trim

                .Merna_JedColumn.DefaultValue = "ks"

                .Mnoz_Do_PaColumn.DefaultValue = 1

                .Mnoz_PojColumn.DefaultValue = 1

                .DatumColumn.DefaultValue = Date.Today

            End With


            Me.TblMaterialBindingSource.AddNew()    'vytvori se novy zaznam


            Me.txtMnoz_Celk.Text = 0


            Me.txtNazev_Mat.Focus()

        End If

        Me.pnlVlozit.Visible = False

    End Sub

#End Region


Další zpracování je shodné se změnou záznamu (tlačítka Uložit a Vrátit).


Kontrola vstupních dat

Nadefinujeme kontrolu vstupních dat pro datová pole Mnoz_Poj a Mnoz_Do_Pa. Je možné zadávat pouze čísla >1. Ještě předtím musíme vložit objekt ErrorProvider .

Vložený kód je následující do regiónu #Region "Editace zaznamu":

#Region "Kontrola vstupnich dat"


    Private Sub txtMnoz_Poj_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtMnoz_Poj.Validating

        If Not KontrolaNaKladnyInteger(sender, 1, Integer.MaxValue) Then

            e.Cancel = True

        End If


    End Sub


    Private Sub txtMnoz_Do_Pa_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtMnoz_Do_Pa.Validating

        If Not KontrolaNaKladnyInteger(sender, 1, Integer.MaxValue) Then

            e.Cancel = True

        End If

    End Sub


    Private Function KontrolaNaKladnyInteger(ByRef sender As Object, ByVal MinHodnota As Integer, ByVal MaxHodnota As Integer) As Boolean

        Me.ErrorProvider1.SetError(sender, "")

        Dim num As Integer

        'If Not IsNumeric(Me.txtMnoz_Poj.Text) Then

        If Not Integer.TryParse(sender.text, num) OrElse num < MinHodnota OrElse num > MaxHodnota Then

            Me.ErrorProvider1.SetError(sender, "Musíte zadat celé číslo v rozsahu " & MinHodnota.ToString & " až " & MaxHodnota.ToString)

            Me.pnlPotvrdit.Enabled = False

            Return False

        Else

            Me.pnlPotvrdit.Enabled = True

            Return True

        End If

    End Function

#End Region


Přidáme kontrolu na nové číslo materiálu (musí obsahovat 10 znaků) a název materiálu (musí být zadán) do regiónu #Region "Editace zaznamu" - #Region "Kontrola vstupnich dat":

    Private Sub txtVlozit_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtVlozit.Validating

        Me.ErrorProvider1.SetError(sender, "")

        If sender.text.Length <> 10 Then

            Me.ErrorProvider1.SetError(sender, "Číslo materiálu musí obsahovat 10 znaků")

            e.Cancel = True

        End If


    End Sub


    Private Sub txtNazev_Mat_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtNazev_Mat.Validating

        Me.ErrorProvider1.SetError(sender, "")

        If sender.text.Length = 0 Then

            Me.ErrorProvider1.SetError(sender, "Název materiálu musí být zadán")

            e.Cancel = True

        End If

    End Sub