Imports System.Data.OleDb Module ModKoneksi Public conn As OleDbConnection Public cmd As OleDbCommand Public da As OleDbDataAdapter Public dt As DataTable Public rd As OleDbDataReader
Private Sub btnSimpanTransaksi_Click(sender As Object, e As EventArgs) Handles btnSimpanTransaksi.Click Koneksi() Dim trans As OleDbTransaction = conn.BeginTransaction() Try ' Simpan ke header penjualan cmd = New OleDbCommand("INSERT INTO penjualan (no_faktur, tgl, id_customer, total_bayar) VALUES (@faktur, @tgl, @idcust, @total)", conn, trans) cmd.Parameters.AddWithValue("@faktur", txtNoFaktur.Text) cmd.Parameters.AddWithValue("@tgl", dtpTanggal.Value) cmd.Parameters.AddWithValue("@idcust", cmbCustomer.SelectedValue) cmd.Parameters.AddWithValue("@total", total) cmd.ExecuteNonQuery()
' Kurangi stok cmd = New OleDbCommand("UPDATE barang SET stok = stok - @qty WHERE kode_barang = @kode", conn, trans) cmd.Parameters.AddWithValue("@qty", row("qty")) cmd.Parameters.AddWithValue("@kode", row("kode_barang")) cmd.ExecuteNonQuery() Next trans.Commit() MsgBox("Transaksi berhasil disimpan") dtDetail.Clear() total = 0 lblTotal.Text = "0" Catch ex As Exception trans.Rollback() MsgBox("Error: " & ex.Message) End Try TutupKoneksi() End Sub End Class Gunakan PrintDocument dan PrintPreviewDialog . Contoh sederhana untuk mencetak teks nota:
Imports System.Drawing.Printing Public Class frmNota Private WithEvents pd As New PrintDocument() Private teksNota As String contoh aplikasi program penjualan dengan vb.net 2008
Private Sub txtKodeBarang_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtKodeBarang.KeyPress If e.KeyChar = Chr(13) Then Koneksi() cmd = New OleDbCommand("SELECT nama_barang, harga FROM barang WHERE kode_barang=@kode", conn) cmd.Parameters.AddWithValue("@kode", txtKodeBarang.Text) rd = cmd.ExecuteReader() If rd.Read() Then txtNamaBarang.Text = rd("nama_barang").ToString() txtHarga.Text = rd("harga").ToString() Else MsgBox("Barang tidak ditemukan") End If rd.Close() TutupKoneksi() txtQty.Focus() End If End Sub
Public Sub Koneksi() conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db_penjualan.mdb") If conn.State = ConnectionState.Closed Then conn.Open() End If End Sub
Sub CetakNota(noFaktur As String) ' Ambil data dari database teksNota = "NOTA PENJUALAN" & vbCrLf & "No Faktur: " & noFaktur & vbCrLf & "==================" ' ... tambahkan detail barang ... PrintPreviewDialog1.Document = pd PrintPreviewDialog1.ShowDialog() End Sub Imports System
Private Sub btnSimpan_Click(sender As Object, e As EventArgs) Handles btnSimpan.Click If txtKode.Text = "" Then MsgBox("Kode barang harus diisi!") Return End If Koneksi() cmd = New OleDbCommand("INSERT INTO barang (kode_barang, nama_barang, harga, stok) VALUES (@kode, @nama, @harga, @stok)", conn) cmd.Parameters.AddWithValue("@kode", txtKode.Text) cmd.Parameters.AddWithValue("@nama", txtNama.Text) cmd.Parameters.AddWithValue("@harga", Val(txtHarga.Text)) cmd.Parameters.AddWithValue("@stok", Val(txtStok.Text)) cmd.ExecuteNonQuery() TutupKoneksi() TampilkanData() MsgBox("Data barang tersimpan") End Sub
Private Sub pd_PrintPage(sender As Object, e As PrintPageEventArgs) Handles pd.PrintPage e.Graphics.DrawString(teksNota, New Font("Arial", 12), Brushes.Black, 100, 100) End Sub End Class Cara termudah tanpa Crystal Reports: Buat form frmLaporan.vb dengan DateTimePicker dari tanggal sampai tanggal, lalu tampilkan di DataGridView:
dtDetail.Rows.Add(txtKodeBarang.Text, txtNamaBarang.Text, harga, qty, subtotal) total += subtotal lblTotal.Text = Format(total, "C2") txtKodeBarang.Clear() txtNamaBarang.Clear() txtHarga.Clear() txtQty.Clear() End Sub PrintPreviewDialog1
Sub TampilkanData() Koneksi() da = New OleDbDataAdapter("SELECT * FROM barang", conn) dt = New DataTable() da.Fill(dt) dgvBarang.DataSource = dt TutupKoneksi() End Sub
' Load customer ke ComboBox Koneksi() da = New OleDbDataAdapter("SELECT id_customer, nama FROM customer", conn) dt = New DataTable() da.Fill(dt) cmbCustomer.DataSource = dt cmbCustomer.DisplayMember = "nama" cmbCustomer.ValueMember = "id_customer" TutupKoneksi() End Sub