Aplikační formulář Přehled materiálu
Přehled materiálu - doplnění formuláře
 Tisk

Přehled materiálu - doplnění formuláře

Do formuláře doplníme zbývající prvky :

Editační tlačítka

Do panelu vložíme skupinu příkazových tlačítek. Panel nazveme pnlEdit. Vlastnosti jednotlivých objektů:


Potvrzovací tlačítka

Do panelu vložíme skupinu tlačítek. Panel nazveme pnlPotvrd. Vlastnosti jednotlivých objektů:


Panel, popisek a textové pole pro číslo zadávaného materiálu

Na formulář umístíme panel, který bude obsahovat popisek a textové pole pro číslo zadávaného materiálu. Pro panel nastavíme vlastnost "viditelný" (visible) ve vlastnostech na false. To znamená, že tyto prvky normálně nebudou viditelné. Vlastnosti jednotlivých objektů:


Tlačítko a textové pole pro komentář

V návrhu formuláře není místo pro komentář. Použijeme malý trik. Vložíme tlačítko, které bude zviditelňovat a zhasínat editační textové pole pro komentář. Vlastnosti jednotlivých objektů:

Zviditelňování a zhasínání editační textové pole pro komentář zajistíme pomocí události klepnutí na tlačítko. Toto událost vložíme do regiónu #Region "Ridici tlacitka"

    Private Sub btnKomentar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKomentar.Click

        Me.txtKoment.Visible = Not Me.txtKoment.Visible

    End Sub


V titulku tlačítka budeme signalizovat malými písmeny, že komentář neexistuje a velkými, že existuje. To lze zařídit vložením kódu do obsluhy události změna řádky (PositionChanged) v objektu, který zpřístupňuje data jednotlivým objektům na formuláři (TblMaterialBindingSource) :


#Region "Zmena zaznamu"

    Private Sub TblMaterialBindingSource_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TblMaterialBindingSource.PositionChanged

        Cursor.Current = Cursors.WaitCursor


        If TblMaterialBindingSource.Current("Koment").ToString.Length > 0 Then

            Me.btnKomentar.Text = "KOMENTÁŘ"    'existuje komentar

        Else

            Me.btnKomentar.Text = "Komentář"    'neexistuje komentar

        End If


        Cursor.Current = Cursors.Default


    End Sub

#End Region


Dalším krokem bude spočítat celkové množství materiálu z jednotlivých palet. K výpočtu použijeme SQL příkaz s agregační funkcí SUM. Výpočet se bude spouštět v události TblMaterialBindingSource.PositionChanged. Výsledná procedura bude vypadat následovně:


#Region "Zmena zaznamu"

    Private Sub TblMaterialBindingSource_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TblMaterialBindingSource.PositionChanged

        Cursor.Current = Cursors.WaitCursor

        If TblMaterialBindingSource.Current("Koment").ToString.Length > 0 Then

            Me.btnKomentar.Text = "KOMENTÁŘ"

        Else

            Me.btnKomentar.Text = "Komentář"

        End If


        'vypocitame celkove mnozstvi pomoci agregacni funkce

        Dim strSQL As String

        strSQL = "SELECT SUM(Mnoz_pa) AS CelkoveMnozstvi FROM tblPalety WHERE Cislo_Mat = '" & _

            Me.TblMaterialBindingSource.Current("Cislo_Mat") & "' GROUP BY Cislo_Mat"


        'nadefinujeme sluzbu pro pristup k databazi

        Dim builder As New System.Data.OleDb.OleDbConnectionStringBuilder

        builder.Provider = "Microsoft.ACE.OLEDB.12.0"   'Pristup do Access typu accdb

        builder.DataSource = "|DataDirectory|\Data\Data.accdb"


        'inicializace objektu spojení na databázi

        Dim oledbcon As New OleDb.OleDbConnection

        oledbcon.ConnectionString = builder.ConnectionString

        oledbcon.Open() 'pomocí dat z ConnectionStringu spojení otevřeme


        Dim cmd As New OleDb.OleDbCommand(strSQL, oledbcon)     'deklarace prikazu nad databazi pomoci SQL

        Dim dataReader As OleDb.OleDbDataReader = cmd.ExecuteReader()   'spuštění dotazu a vytvoření objektu na čtení řádků

        dataReader.Read()   'nacteme data z databaze s definovanym SQL prikazem


         'ziskame celkove mnozstvi

        Dim CelkoveMnozstvi As Integer

        If dataReader.HasRows Then

            'existují palety vybraneho materialu

            CelkoveMnozstvi = dataReader("CelkoveMnozstvi")

        Else

            'neexistují palety vybraneho materialu

            CelkoveMnozstvi = 0

        End If

        Me.txtMnoz_Celk.Text = CelkoveMnozstvi


        dataReader.Close()          '// nejdříve uzavřeme aktuální dotaz

        oledbcon.Close()    '// a pak i spojení

        Cursor.Current = Cursors.Default


    End Sub

#End Region