Přichází čas oživit formulář frmPalety. Otevřeme si formulář frmPalety 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 TblPaletyBindingNavigatorSaveItem.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 frmPalety_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)
'TODO: This line of code loads data into the 'DsData.tblStav_Pa' table. You can move, or remove it, as needed.
Me.TblStav_PaTableAdapter.Fill(Me.DsData.tblStav_Pa)
'TODO: This line of code loads data into the 'DsData.tblTyp_Pa' table. You can move, or remove it, as needed.
Me.TblTyp_PaTableAdapter.Fill(Me.DsData.tblTyp_Pa)
'TODO: This line of code loads data into the 'DsData.tblPalety' table. You can move, or remove it, as needed.
Me.TblPaletyTableAdapter.Fill(Me.DsData.tblPalety)
'nastaveni pocatecnich hodnot pro nove zaznamy
With DsData.tblPalety
.Typ_paColumn.DefaultValue = "M"
.Stav_PaColumn.DefaultValue = "Z"
.Mnoz_PaColumn.DefaultValue = 0
End With
Me.Cursor = Cursors.Default
End Sub
#End Region
Událost TblPaletyBindingNavigatorSaveItem.Click upravíme tak, že ukládání bude fungovat pouze tehdy, pokud je možné vložená data úspěšně uložit .
#Region "TblPaletyBindingNavigator"
Private Sub TblPaletyBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TblPaletyBindingNavigatorSaveItem.Click
Me.Cursor = Cursors.WaitCursor
If Me.Validate() Then
'zadana data odpovidaji podminkam
Me.TblPaletyBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.DsData)
Else
Me.Cursor = Cursors.Default
MsgBox("Opravte vstupy", MsgBoxStyle.Exclamation + 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
If MsgBox("Neuložili jste data. Chcete je uložit?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Uložit data?") = MsgBoxResult.Yes Then
Exit Sub
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
Při zavírání formuláře se může objevit chybová hláška související s tím, že se v nevhodném pořadí uvolňují z paměti data uložená v datasetu. Přidáme formuláři událost FormClosing, kde nejdříve z datasetu uvolníme data z tabulky tblPalety. Ostatní tabulky z datasetu se uvolní zavřením formuláře .
Private Sub frmPalety_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Me.DsData.tblPalety.Clear()
Me.DsData.tblPalety.Dispose()
End Sub
Dalším krokem bude udělat kontroly vstupních dat. Kontrola se bude zajišťovat pomocí objektu dgvTblPalety. Ke kontrolám standardně slouží v tomto typu objektu událost CellValidating. Událost bude obsahovat následující kód :
#Region "DataGridView"
Private Sub dgvTblPalety_CellValidating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles dgvTblPalety.CellValidating
Dim newInteger As Integer 'pomocna promenna na test spravneho formatu (integer) zadane hodnoty
Me.dgvTblPalety.Rows(e.RowIndex).ErrorText = "" 'nastavime pocatecni text chybove hlasky
Select Case Me.dgvTblPalety.Columns(e.ColumnIndex).DataPropertyName
Case "Cislo_Pa"
If e.FormattedValue.ToString.Length <> 4 Then
Me.dgvTblPalety.Rows(e.RowIndex).ErrorText = "Číslo palety musí obsahovat 4 znaky"
e.Cancel = True
End If
Case "Mnoz_Pa"
If Not Integer.TryParse(e.FormattedValue.ToString(), newInteger) OrElse newInteger < 0 Then
Me.dgvTblPalety.Rows(e.RowIndex).ErrorText = "Množství musí být nezáporné"
e.Cancel = True
End If
End Select
End Sub
#End Region