Source Code Contoh From Transaksi Penjualan VB .NET

Pada tutorial kali ini saya akan memberikan Logika dalam Membuat Form Transaksi Penjualan pada VB .NET. Koding form transaksi memang biasanya lebih panjang dari form master lainnya. Karena pada form transaksi lebih kompleks dan banyak yang harus di kendalikan pada Dataridview Visual Basic .NET agar form transaksi ini berjalan dengan semestinya.

Hasil dari from transaksi penjualan adalah seperti gambar dibawah ini :
Download Source Code Contoh From Transaksi Penjualan VB .NET
Bagaimana apakah anda tertarik untuk membuat Form transaksi diatas?

Berikut langkahnya :
Silahakn buka VB .NET anda
Bautlah sebuah project VB .NET
Jika sudah muncul Form1, silahkan design form1 seperti gambar dibawah ini :
Download Source Code Contoh From Transaksi Penjualan VB .NET
Pada gambar diatas terdapat :
DataGridView yang diganti namanya menjadi : dgvData
Button Tambah : btnAdd
Button Hapus : btnRemove
Label Total
dan TexBox : txtSumTotal

JIka sudah selesai membuat Form seperti gambar diatas,
Silahkan Masukan Koding pada Form1 dibawah ini :

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.CenterToScreen()
        Me.Text = "Contoh Form Transaksi Penjualan - www.javanetmedia.com"
        txtSumTotal.Text = "0.00"
        SetupGridView()
        Dim row As String() = New String() {1, "BRG0001", "Nama Barang 1", 1, 0.0, 0.0}
        ' Add First Row
        dgvData.Rows.Add(row)
        ' Focus
        dgvData.Focus()
        dgvData.CurrentCell = dgvData.Rows(dgvData.RowCount - 1).Cells(3)
        ' / Summary Cell Index = 5
        CalSumTotal()
    End Sub

    ' / --------------------------------------------------------------------------------
    Private Sub SetupGridView()
        With dgvData
            .RowHeadersVisible = False
            .AllowUserToAddRows = False
            .AllowUserToDeleteRows = False
            .AllowUserToResizeRows = False
            .MultiSelect = False
            .ReadOnly = False
            ' Columns Specified
            dgvData.ColumnCount = 6
            dgvData.Columns(0).Name = "No"
            'dgvData.Columns(0).Visible = False  ' Don't show Primary Key
            dgvData.Columns(1).Name = "Kode_Barang"
            dgvData.Columns(2).Name = "Nama_barang"
            dgvData.Columns(3).Name = "Jumlah"
            dgvData.Columns(3).ValueType = GetType(Integer)
            dgvData.Columns(4).Name = "Harga"
            dgvData.Columns(4).ValueType = GetType(Double)
            dgvData.Columns(5).Name = "Total"
            dgvData.Columns(5).ValueType = GetType(Double)
            ' Hidden column index 0 ... It's Primary Key for DataBase
            .Columns("No").Visible = True ' False
            .Columns("Kode_Barang").HeaderText = "Kode_Barang"
            .Columns("Nama_Barang").HeaderText = "Nama_Barang"
            .Columns("Jumlah").HeaderText = "Jumlah"
            .Columns("Harga").HeaderText = "Harga"
            ' Total Column
            With .Columns("Total")
                .HeaderText = "Total"
                .ReadOnly = True
                .DefaultCellStyle.BackColor = System.Drawing.Color.LightGoldenrodYellow
                .DefaultCellStyle.ForeColor = System.Drawing.Color.Red
                .DefaultCellStyle.Font = New Font(dgvData.Font, FontStyle.Bold)
            End With
            ' Adjust Column width
            .Columns(0).Width = 35
            .Columns(1).Width = dgvData.Width \ 5
            .Columns(2).Width = dgvData.Width \ 5
            .Columns(3).Width = dgvData.Width \ 5 - 20
            .Columns(4).Width = dgvData.Width \ 5 - 20
            .Columns(5).Width = dgvData.Width \ 5 ' + 2
            ' Header Own Style
            With .ColumnHeadersDefaultCellStyle
                .BackColor = Color.Navy
                .ForeColor = Color.White
                .Font = New Font(dgvData.Font, FontStyle.Bold)
            End With
            ' Alignment only columns 3 to 5
            For i As Byte = 3 To 5
                ' Header Alignment
                .Columns(i).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
                ' Cell Alignment
                .Columns(i).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            Next
        End With
    End Sub

    ' / --------------------------------------------------------------------------------
    Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        With dgvData
            .Width = Me.Width - 22
        End With
        txtSumTotal.Left = Me.Width - (txtSumTotal.Width + 20)
        Label1.Location = New Point(txtSumTotal.Left - Me.Label1.Width, txtSumTotal.Top + 3)
    End Sub

    ' / --------------------------------------------------------------------------------
    ' / Add new row
    Private Sub btnAddRow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        Dim Position As Integer = dgvData.Rows.Count - 1
        Dim LastRow = (From Items In dgvData.Rows.Cast(Of DataGridViewRow)() Select Items).ElementAt(Position)

        Dim PK As Long = LastRow.Cells(0).Value + 1
        Dim row As String() = New String() {PK, "BRG000" & PK, "Nama Barang " & PK, 1, 0.0, 0.0}
        dgvData.Rows.Add(row)
        ' Focus
        dgvData.CurrentCell = dgvData.Rows(dgvData.RowCount - 1).Cells(3)
        dgvData.Focus()
        ' /
        CalSumTotal()
    End Sub

    ' / --------------------------------------------------------------------------------
    ' / Remove selected row
    Private Sub btnDelRow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemove.Click
        If dgvData.RowCount = 1 Then Exit Sub
        dgvData.Rows.Remove(dgvData.CurrentRow)
        dgvData.Refresh()
        ' / 
        CalSumTotal()
    End Sub

    ' / --------------------------------------------------------------------------------
    ' / Calcualte sum of Total (Column Index = 5)
    Private Sub CalSumTotal()
        txtSumTotal.Text = "0.00"
        For i As Byte = 0 To dgvData.RowCount - 1
            ' CDbl = Convert to Double
            txtSumTotal.Text = CDbl(txtSumTotal.Text) + CDbl(dgvData.Rows(i).Cells(5).Value)
        Next
        txtSumTotal.Text = Format(CDbl(txtSumTotal.Text), "#,##0.00")
    End Sub

    ' / --------------------------------------------------------------------------------
    ' / Before Edit Data
    Private Sub dgvData_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles dgvData.CellBeginEdit
        Dim Quantity As Integer = dgvData.Rows(e.RowIndex).Cells(3).Value
        Dim UnitPrice As Double = dgvData.Rows(e.RowIndex).Cells(4).Value
        dgvData.Rows(e.RowIndex).Cells(5).Value = (Quantity * UnitPrice).ToString("#,##0.00")
        ' / 
        CalSumTotal()
    End Sub

    ' / --------------------------------------------------------------------------------
    ' / After you press Enter
    Private Sub dgvData_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvData.CellEndEdit

        Select Case e.ColumnIndex
            Case 3, 4 ' Column Index = 3 (Quantity), Column Index = 4 (UnitPrice)
                ' Quantity
                ' If Null Value
                If IsDBNull(dgvData.Rows(e.RowIndex).Cells(3).Value) Then dgvData.Rows(e.RowIndex).Cells(3).Value = 0
                Dim Quantity As Integer = dgvData.Rows(e.RowIndex).Cells(3).Value
                ' Keep original value in temporary. (Tag Properties)
                dgvData.Tag = Quantity
                If Quantity <= 0 Then
                    dgvData.Rows(e.RowIndex).Cells(3).Value = dgvData.Tag
                    Quantity = dgvData.Tag
                End If

                ' UnitPrice
                ' If Null Value
                If IsDBNull(dgvData.Rows(e.RowIndex).Cells(4).Value) Then dgvData.Rows(e.RowIndex).Cells(4).Value = 0.0
                Dim UnitPrice As Double = dgvData.Rows(e.RowIndex).Cells(4).Value
                dgvData.Tag = UnitPrice
                If UnitPrice < 0 Then
                    dgvData.Rows(e.RowIndex).Cells(4).Value = dgvData.Tag
                    UnitPrice = dgvData.Tag
                End If
                ' Quantity x UnitPrice
                dgvData.Rows(e.RowIndex).Cells(5).Value = (Quantity * UnitPrice).ToString("#,##0.00")
                CalSumTotal()
        End Select
    End Sub

    ' / --------------------------------------------------------------------------------
    Private Sub dgvData_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dgvData.EditingControlShowing
        Select Case dgvData.Columns(dgvData.CurrentCell.ColumnIndex).Name
            ' / Can use both ColumeIndex or Field Name
            Case "Quantity", "UnitPrice"
                RemoveHandler e.Control.KeyPress, AddressOf ValidKeyPress
                AddHandler e.Control.KeyPress, AddressOf ValidKeyPress
        End Select
    End Sub

    ' / --------------------------------------------------------------------------------
    Private Sub ValidKeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        Dim tb As TextBox = sender
        Select Case dgvData.CurrentCell.ColumnIndex
            Case 3  ' Quantity is Integer
                Select Case e.KeyChar
                    Case "0" To "9"   ' digits 0 - 9 allowed
                    Case ChrW(Keys.Back)    ' backspace allowed for deleting (Delete key automatically overrides)
                    Case ChrW(Keys.Delete)  ' Delete key

                    Case Else ' everything else ....
                        ' True = CPU cancel the KeyPress event
                        e.Handled = True ' and it's just like you never pressed a key at all
                End Select

            Case 4  ' UnitPrice is Double
                Select Case e.KeyChar
                    Case "0" To "9"
                        ' Allowed "."
                    Case "."
                        ' can present "." only one
                        If InStr(tb.Text, ".") Then e.Handled = True

                    Case ChrW(Keys.Back)
                    Case ChrW(Keys.Delete)
                    Case Else
                        e.Handled = True

                End Select
        End Select
    End Sub
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        Me.Dispose()
        Application.Exit()
    End Sub
End Class
Jika sudah silahkan anda Save dan Jalankan Project VB .NET anda

Demikian Source Code Contoh From Transaksi Penjualan VB .NET, semoga bermanfaat untuk anda
Silahkan KLIK DISINI untuk download Project diatas

0 Response to "Source Code Contoh From Transaksi Penjualan VB .NET"

Post a Comment