Aplikační formulář Přehled palet
Přehled palet - programový kód - Nastavení formuláře podle hodnot
 Tisk

Přehled palet - programový kód - Nastavení formuláře podle hodnot

Již nám fungují základní navigační tlačítka. Je však vidět, že se nezobrazuje celkové množství v paletách. Výpočet uděláme v proceduře CelkoveMnozstvi pomocí SQL příkazu, kde využijeme agregační funkci SUM. Pokud celkové množství klesne pod pojistnou zásobu, zobrazíme na formuláři u celkového množství vykřičník (pomocí objektu ErrorProvider) s informací "Pozor, jste pod pojistnou zásobou".

Na formulář proto musíme nejdříve vložit objekt ErrorProvider, který i tak nazveme.


Programový kód bude následující:


#Region "Uprava zaznamu"

    Private Sub TblPaletyBindingSource_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TblPaletyBindingSource.PositionChanged

        Cursor.Current = Cursors.WaitCursor

        'paleta bez materiálu - bez zobrazení názvu, s možností rezervace

        If IsDBNull(Me.TblPaletyBindingSource.Current("cislo_mat")) Then

            Me.btnRezervace.Enabled = True

            Me.btnZmenaObsahuPalety.Enabled = False


        Else ' zobrazení názvu materiálu, možnost přidávat a ubírat

            Me.btnRezervace.Enabled = False

            Me.btnZmenaObsahuPalety.Enabled = True


            'vypocitame celkove mnozstvi pomoci agregacni funkce

            CelkoveMnozstvi()

        End If


        ' zobrazení stavu a nastavení možnosti jeho změny

        Select Case Me.TblPaletyBindingSource.Current("Stav_Pa")

            Case "V"

                Me.btnVyskladnit.Enabled = False

                Me.btnZaskladnit.Enabled = True

                Me.btnVyskladneno.Enabled = False

                Me.btnZaskladneno.Enabled = False

            Case "Z"

                Me.btnVyskladnit.Enabled = True

                Me.btnZaskladnit.Enabled = False

                Me.btnVyskladneno.Enabled = False

                Me.btnZaskladneno.Enabled = False

            Case "D"

                Me.btnVyskladnit.Enabled = False

                Me.btnZaskladnit.Enabled = False

                Me.btnVyskladneno.Enabled = True

                Me.btnZaskladneno.Enabled = True

        End Select

        Cursor.Current = Cursors.Default

    End Sub


    Private Sub CelkoveMnozstvi()

        'vypocitame celkove mnozstvi pomoci agregacni funkce

        Dim CelkoveMnozstvi As Integer


        If Not IsDBNull(Me.TblPaletyBindingSource.Current("cislo_mat")) Then

            Dim strSQL As String

            strSQL = "SELECT SUM(Mnoz_pa) AS CelkoveMnozstvi FROM tblPalety WHERE cislo_mat = '" & Me.TblMaterialBindingSource.Current("cislo_mat") & "'"

            Dim oledbcon As New OleDb.OleDbConnection


            oledbcon.ConnectionString = TblPaletyTableAdapter.Connection.ConnectionString

            oledbcon.Open()

            Dim cmd As New OleDb.OleDbCommand(strSQL, oledbcon)

            Dim dr As OleDb.OleDbDataReader = cmd.ExecuteReader()

            'ziskame celkove mnozstvi

            dr.Read()

            CelkoveMnozstvi = IIf(IsDBNull(dr("CelkoveMnozstvi")), "0", dr("CelkoveMnozstvi"))

            oledbcon.Close()


            If CelkoveMnozstvi <= CInt(Me.txtMnoz_Poj.Text) Then

                ErrorProvider.SetError(Me.txtMnoz_Celk, "Pozor, jste pod pojistnou zásobou")

            Else

                ErrorProvider.SetError(Me.txtMnoz_Celk, "")

            End If

        Else

            CelkoveMnozstvi = 0

        End If

        Me.txtMnoz_Celk.Text = CelkoveMnozstvi


    End Sub


#End Region