Formuláře základní
Formulář pro materiál - programový kód
 Tisk

Formulář pro materiál - programový kód

Přichází čas oživit formulář frmMaterial. Otevřeme si formulář frmMaterial např. pomocí okna Solution Explorer. Všechny objekty, které náš formulář bude potřebovat, jsme na něj již vložili. Podíváme se, jaký programový kód již formulář obsahuje. Klikneme v Solution Explorer na ikonu View Code .


Na obr. můžeme vidět kód, který se automaticky vygeneroval při vkládání jednotlivých objektů. Událost TblMaterialBindingNavigatorSaveItem.Click zajišťuje uložení dat z formuláře do databáze. Událost Load formuláře zajišťuje načtení dat z databáze do datasetu.


Kód si rozdělíme do regionů pro zvýšení přehlednosti .


V události Load formuláře přidáme kód, který nastaví počáteční hodnoty nových záznamů.

#Region "Udalosti formulare"

    Private Sub frmMaterial_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.Cursor = Cursors.WaitCursor


        'TODO: This line of code loads data into the 'DsData.tblMaterial' table. You can move, or remove it, as needed.

        Me.TblMaterialTableAdapter.Fill(Me.DsData.tblMaterial)


        'nastaveni pocatecnich hodnot pro nove zaznamy

        With DsData.tblMaterial

            .Nazev_MatColumn.DefaultValue = "Název materiálu"

            .Merna_JedColumn.DefaultValue = "ks"

            .Mnoz_Do_PaColumn.DefaultValue = 1

            .Mnoz_PojColumn.DefaultValue = 1

            .DatumColumn.DefaultValue = Date.Today

        End With

        Me.Cursor = Cursors.Default

    End Sub

#End Region


Událost TblMaterialBindingNavigatorSaveItem.Click upravíme tak, že ukládání bude fungovat pouze tehdy, pokud je možné vložená data úspěšně uložit .

#Region "TblMaterialBindingNavigator"

    Private Sub TblMaterialBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TblMaterialBindingNavigatorSaveItem.Click


        Me.Cursor = Cursors.WaitCursor


        If Me.Validate() Then 'zadana data odpovidaji podminkam

            Me.TblMaterialBindingSource.EndEdit()

            Me.TableAdapterManager.UpdateAll(Me.DsData)

        Else

            Me.Cursor = Cursors.Default

            MsgBox("Opravte vstupy", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Chyba")

        End If


        Me.Cursor = Cursors.Default

    End Sub


#End Region


Poklepeme na tlačítko btnZavrit. Vytvoří se prázdná procedura události click. Dopíšeme následující kód .

#Region "Ridici tlacitka"

    Private Sub btnZavrit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZavrit.Click

        If Not IsNothing(Me.DsData.GetChanges) Then 'Test, zdda jsem v datech udelali zmenu

            If MsgBox("Neuložili jste data. Chcete je uložit?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Uložit data?") = MsgBoxResult.Yes Then

                Exit Sub 'preruseni procedury

            End If

        End If

        'otevrit formular frmRidici

        Me.Cursor = Cursors.WaitCursor

        Dim frmRidici As New frmRidici

        frmRidici.MdiParent = MyFrmHlavni

        frmRidici.Show()


        Me.Close() 'zavrit tento formular

        Me.Cursor = Cursors.Default

    End Sub

#End Region


Dalším krokem bude udělat kontroly vstupních dat. Kontrola se bude zajišťovat pomocí objektu dgvTblMaterial. Ke kontrolám standardně slouží v tomto typu objektu událost CellValidating. Proceduru pro tuto událost je možné např. vytvořit tak, jak je ukázáno na obr.


Událost bude obsahovat následující kód :

#Region "DataGridView"

    Private Sub dgvTblMaterial_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles dgvTblMaterial.CellValidating

        Dim newInteger As Integer   'pomocna promenna na test spravneho formatu (integer) zadane hodnoty

        Dim newDate As Date         'pomocna promenna na test spravneho formatu (datum) zadane hodnoty


        Me.dgvTblMaterial.Rows(e.RowIndex).ErrorText = ""   'nastavime pocatecni text chybove hlasky


        Select Case Me.dgvTblMaterial.Columns(e.ColumnIndex).DataPropertyName

            Case "Cislo_Mat"

                If e.FormattedValue.ToString.Length <> 10 Then

                    Me.dgvTblMaterial.Rows(e.RowIndex).ErrorText = "Číslo materiálu musí obsahovat 10 znaků"

                    e.Cancel = True

                End If

            Case "Nazev_Mat"

                If e.FormattedValue.ToString.Length = 0 Then

                    Me.dgvTblMaterial.Rows(e.RowIndex).ErrorText = "Název materiálu musí být zadán"

                    e.Cancel = True

                End If

            Case "Merna_Jed"

                If e.FormattedValue.ToString.Length = 0 Then

                    Me.dgvTblMaterial.Rows(e.RowIndex).ErrorText = "Měrná jednottka musí být zadána"

                    e.Cancel = True

                End If

            Case "Mnoz_Poj", "Mnoz_Do_Pa"

                If Not Integer.TryParse(e.FormattedValue.ToString(), newInteger) OrElse newInteger <= 0 Then

                    Me.dgvTblMaterial.Rows(e.RowIndex).ErrorText = "Množství musí být kladné"

                    e.Cancel = True

                End If

            Case "Datum"

                If Not Date.TryParse(e.FormattedValue.ToString(), newDate) Then

                    Me.dgvTblMaterial.Rows(e.RowIndex).ErrorText = "Zadejte datum ve formátu dd.mm.rrrr"

                    e.Cancel = True

                End If

        End Select

    End Sub


#End Region