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

Private Sub btnTambahItem_Click(sender As Object, e As EventArgs) Handles btnTambahItem.Click Dim harga As Double = Val(txtHarga.Text) Dim qty As Integer = Val(txtQty.Text) Dim subtotal As Double = harga * qty

' 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

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

' Simpan detail For Each row As DataRow In dtDetail.Rows cmd = New OleDbCommand("INSERT INTO detail_penjualan (no_faktur, kode_barang, qty, subtotal) VALUES (@faktur, @kode, @qty, @sub)", conn, trans) cmd.Parameters.AddWithValue("@faktur", txtNoFaktur.Text) cmd.Parameters.AddWithValue("@kode", row("kode_barang")) cmd.Parameters.AddWithValue("@qty", row("qty")) cmd.Parameters.AddWithValue("@sub", row("subtotal")) cmd.ExecuteNonQuery()

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: