Tutorial Membuat Aplikasi Stok Barang Dengan Access 2007

Program STOK Produk menggunakan VB dan Microsoft Access (Episode 5A)


Posted on


Updated on


Bagian Pembelian dan STOK Barang

Sreg Fragmen sebelumnya (Epesiode 4) sudah lalu dibahas cara mengkoneksikan Optis Basic ke Database (MS Acces) dan bagaimana mandu memanajemen record database menggunakan ADO (ActiveX Data Objects).

Program Cadangan kelihatannya ini lebih positif dalam pemrograman dan tetap menjadi media belajar yang santai karena terdapat banyak kemungkinan buat memperbaiki sesuai dengan logika pembaca. Misalkan pada Pembelian (HBeli) digunakan field KODESUP lakukan Suplier sedangkan puas tabel Penjualan (Hjual) digunakan field nama CUSTOMER padahal grafik CUSTOMER (TCUSTOMER) terletak field KodeCust, tentunya diharapkan para pembaca yang memodifikasi acara dan Database agar nan tersimpan adalah kode Customer sebagai mana layaknya basidata yang baik. Secara Umum bikin memperoleh STOK yaitu dengan menghitung semua Pembelian dan dikurangkan dengan semua Penjualan seperti ditulis dalam rumus dibawah ini:


Suplai = Pembelian – Penjualan

Sreg praktiknya agar stok berperilaku Real Time maka setiap terjadi transaksi Pembelian maka field Kuantitas pada Tabel Barang akan di tambahkan dengan jumlah barang yang dibeli. Begitu kembali sebaliknya setiap terjadi transaksi Penjualan maka field Kuantitas akan dikurangkan dengan Jumlah barang yang dijual. Rumus diatas dituangkan kerumahtanggaan rancangan Basisdata Database Stok menunggangi Ms. Access 2003 sbb:

Database Name : STOK.MDB Tabel-Diagram bagaikan berikut: 1. TBarang (Grafik Master dan Stok Produk) 2. HBeli (Diagram Header Pembelian) 3. DBeli (Tabel Detail Pembelian) 4. HJual (Tabel Header Penjualan) 5. Djual (Tabel Detail Penjualan) 6. TSupplier (Tabel Master Supplier) 7. TCustomer (Tabel Master Customer) 8. Tbantu (Tabel Bantu Form Transaksi Pembelian dan Penjualan)

Selain menggunakan tabel-tabel diatas maka pada database digunakan juga bebera query bagi memudahkan manipulasi data yakni sbb:

1. QBeli (Query transaksi Pembelian) 2. QJBeli (Query untuk menghitung Jumlah Pembelian) 3. QJual (Query transaksi Penjualan) 4. QJJual (Query untuk cak menjumlah Jumlah Penjualan) 5. QJMLBRG (Query bikin menghitung Stok Barang)

Pada Bagian ini akan dibahas mengenai struktur diagram dan query database Stok.MDB: 1.
TBarang, Struktur tabulasi ini sbb:

Field Name Data Type Field Properties
KODEBRG Text Field Size 18
NAMA BRG Text Field Size 100
Satuan Text Fiel Size 15
JUMLAH Number Integer
HARGABELI Number Single
HARGAJUAL Number Single

Buatkan index dengan nama XKODEBRG dari field KODEBRG yang bersifat Primarykey

2.
Hbeli, Lakukan menampung data transaksi Pembelian maka dibuatkan 2 Diagram (HBeli dan DBeli), ke 2 tabulasi dihubungkan dengan sebuah field buku yakni NOFAKTUR.


Kali semenjak pembaca ada yang bertanya mengapa harus 2 grafik..?
,

Jawabannya merupakan:

Agar diperoleh Basis Data nan baik maka hindarkan hal-hal yang akan menyebabkan kesalahan dan kesulitan dalam mengakses dan menggelapkan database seperti annomaly, redudance (Field berulang), dsb.

Bakal keperluan tersebut maka Data-data nan berkarakter khas (One) seperti Tanggal Transaksi, Kode Suplier, Manifesto dsb dicatat intern tabel HBeli, sementara data-data yang berulang-ulang (Many) dalam hal ini record barang nan dibeli (KODEBRG, JML, HARGA BELI) dicatat dalam diagram DBeli.

Makara sekali transaksi bisa membeli lebih berbunga 1 barang, Kekeluargaan HBeli dan DBeli disebut “One to Many”

Struktur tabel Hbeli ini sbb:

Field Name Data Type Field Properties
NOFAKTUR Text Field Size 10, (Nomor Faktur Pembelian)
TGL Date/Time Field Size 8 faali (Sungkap Transaksi Pembelian)
KODESUP Text Field Size 5, (Kode Supplier)
KETERANGAN Text Field Size 100 (Mengingat-ingat Kabar Transaksi)

Buatkan index dengan cap XNOFAKTUR dari field NOFAKTUR nan berperangai Primarykey

3.
DBeli, Lakukan menampar data many transaksi Pembelian, Struktur Tabel DBeli ini sbb:

Field Name Data Type Field Properties
NOFAKTUR Text Field Size 10, (Nomor Faktur Pembelian)
KODEBRG Text Field Size 18 (Kode Komoditas)
JML Number Integer,(Jumlah Barang yang di beli)
HARGA Number Single (Harga Beli Dagangan)

Field Nofaktur dapat di index akan tetapi enggak bisa bertabiat Primarykey

4.TSupplier, Kerjakan memukul data Master Supplier,  Struktur Tabel TSupplier sbb:

Field Name Data Type Field Properties
KODESUP Text Field Size 5, (Kode Supplier)
NAMASUP Text Field Size 100 (Label Supplier)
Bulan-bulanan Text Field Size 255,(Incaran Supplier)
TELEPON Text Field Size 15(Nomor Telepon Supplier)
Perhubungan Text Field Size 50(Kontak Person Supplier)

Buatkan index dengan keunggulan XKODESUP dari field KODESUP yang bersifat Primarykey

5.
QBELI, Adalah query bagi menampilkan record data pembelian,

Adapun struktur Query ini adalah melibatkan ke 4 tabel nan sudah dibuat diatas,lihat gambar dibawah ini:

        Query Pembelian
      

Bila kesulitan membaca tulangtulangan maka boleh menempuh cara membentuk query dengan mengcopy isi

statement SQLnya melewati menu SQL View. Akan halnya SLQ Stringnya seperti dibawah ini:

SELECT HBELI.NOFAKTUR, HBELI.TGL, HBELI.KODESUP, TSUPPLIER.NamaSup, HBELI.KETERANGAN, DBELI.KODEBRG, TBARANG.NAMABRG,TBARANG.Asongan, DBELI.JML, DBELI.HARGA, [DBELI]![JML]*[DBELI]![HARGA] AS SUBJUMLAH FROM (DBELI INNER JOIN (TSUPPLIER INNER JOIN HBELI ON TSUPPLIER.KodeSup = HBELI.KODESUP) ON DBELI.NOFAKTUR = HBELI.NOFAKTUR) INNER JOIN TBARANG ON DBELI.KODEBRG = TBARANG.KODEBRG;

Catatan:

Baris perintah diatas tidak dipisahkan dengan enter, hilangkan lalu efek enter tersebut dengan menekan pentol del di setiap diujung baris perintah.

6.
QJBELI, Adalah query cak bagi cak menjumlah total pembelian masing2 komoditas,

Adapun struktur Query pecah berbunga query QBELI, lihat rencana dibawah ini:

        
          Query Jumlah Pembelian
        
      

Manifesto:

Bila kesulitan membaca gambar maka dapat menuntut ganti rugi cara membuat query dengan mengcopy isi statement SQLnya melalui menu SQL View. Adapun SLQ Stringnya begitu juga dibawah ini:


SELECT QBELI.KODEBRG, QBELI.NAMABRG, Sum(QBELI.JML) AS JMLBELI, Sum(QBELI.HARGA) AS HARGABELI, Sum(QBELI.SUBJUMLAH) AS SUBJUMLAHBELI FROM QBELI GROUP BY QBELI.KODEBRG, QBELI.NAMABRG;

Catatan:

Baris perintah diatas tidak dipisahkan dengan enter, hilangkan dahulu efek enter tersebut dengan menekan tombol del diujung larik perintah sehingga baris ke dua naik mengeluh dengan baris pertama.

PROGRAM STOK

Perancangan program dimulai dengan membuat Project baru dan beri nama Pasokan, selanjutnya tambahkan modul dengan nama Modul1 (secara default VB akan memberikan nama ini).

Isi modul1.bas sebagai halnya dibawah ini Public VFrmbeli As Boolean '------ BOF Modul1.bas ---------------------------------------    Public VFrmJual As Boolean    Public CN As ADODB.Connection    Public rSB As ADODB.Recordset 'Recordset Komoditas    Public rSDBeli As ADODB.Recordset 'Recordset Dbeli    Public rsHBeli As ADODB.Recordset 'Recordset Hbeli    Public rSDJual As ADODB.Recordset 'Recordset Djual    Public rsHJual As ADODB.Recordset 'Recordset Hjual    Public rSBantu As ADODB.Recordset 'Recordset Tbantu   'Sub program ini buat merubah pengkhususan tombol enter bernilai TAB   Sub TekanEnter(Ntekan)   If Ntekan = 13 Then      SendKeys "{TAB}"      Ntekan = 0   End If End Sub
' Mulanya startup program...   Sub Main()   Set CN = New ADODB.Connection     CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Cadangan.mdb;              Persist Security Info=False     MDIForm1.Show   End Sub '-------------- EOF Modul1.BAS ----------------

FRMBELI
(Form Pembelian) Form ini digunakan lakukan berbuat transaksi pembelian, Desain dan Layout form sebagaimana rencana dibawah:

        
Form Pembelian
frmbeli megadata ce indonesia
Penjelasan:
'General Declarations  Public Mtotal As Single  Public RBaru As Boolean  Public SubHLama As Single   'Hapus Tbantu Sub HapusTbantu()   If Adodc1.Recordset.State = 1 Then    Adodc1.Recordset.Close   End If   CN.Execute "delete * from Tbantu"   Adodc1.Recordset.Open "SELECT * FROM TBANTU", CN   Adodc1.Refresh   Me.DataGrid1.ReBind   Derita.DataGrid1.Refresh End Sub   ' sub rutin ini memeriksa apakah user melakukan edit data pada datagrid ' ini terdahulu lakukan deteksi total harga  Private Sub Adodc1_WillChangeRecord(ByVal adReason As   ADODB.EventReasonEnum, ByVal cRecords As Long,   adStatus As ADODB.EventStatusEnum, ByVal pRecordset   As ADODB.Recordset) ' Paramater diatas bukan dipisahkan dengan enter   If adReason = adRsnAddNew Then     RBaru = True   Else     RBaru = False   End If End Sub  ' fungsi = diatas Private Sub Adodc1_WillChangeRecordset(ByVal adReason As     ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum,     ByVal pRecordset As ADODB.Recordset)     'Variabel diatas tak dipisahkan dengan enter   If adReason = adRsnAddNew Then     RBaru = True   Else    RBaru = False   End If End Sub
Private Sub cadd_Click()    Me.Text1.Text = ""    Derita.Text2.Text = ""    Berpenyakitan.Text3.Text = ""    Berpenyakitan.Text4.Text = ""    Berpenyakitan.Text5.Text = ""    cESave.Caption = "&Save"    Call HapusTbantu   ' agar grid tak empty (nihil) tambahkan 1 record data hidari   ' error number 6016      Adodc1.Recordset.AddNew    Adodc1.Recordset!KOdeBrg = ""    Adodc1.Recordset.Update    Me.Refresh    Text1.SetFocus    Mtotal = 0 End Sub
Private Sub cESave_Click()   If cESave.Caption = "&Save" Then    cESave.Caption = "&Edit"    Set rsHBeli = New ADODB.Recordset    rsHBeli.Open "select * from HBeli", CN, adOpenKeyset,                  adLockOptimistic,adCmdText    rsHBeli.AddNew    rsHBeli!NoFaktur = Trim(Text1.Text)    rsHBeli!tgl = DtBeli.Value    rsHBeli!KodeSup = Trim(Text2.Text)    rsHBeli!makrifat = Trim(Text3.Text)        Set rSDBeli = New ADODB.Recordset    rSDBeli.Open "select * from DBeli ", CN,                  adOpenKeyset, adLockOptimistic,adCmdText    With Adodc1.Recordset      .MoveFirst     Do Until .EOF        If Len(Trim(!KOdeBrg)) > 0 Then          rSDBeli.AddNew          rSDBeli!NoFaktur = Trim(Text1.Text)          rSDBeli!KOdeBrg = !KOdeBrg          rSDBeli!Jml = !Jml          rSDBeli!Harga = !HrgJual         Set rSB = New ADODB.Recordset        rSB.Open "select * from Tbarang where KODEBRG='" &                  !KOdeBrg & "'", CN, adOpenKeyset, adLockOptimistic,                  adCmdText                  'Fleksibel diatas tidak dipisahkan dengan enter          If rSB.EOF And rSB.BOF Then          Else            ' ini perintah mengoreksi Kuantitas barang pada tabel Tbarang            rSB!JUMLAH = rSB!Total + !Jml            rSB.Update          End If          rSDBeli.Update        End If       .MoveNext     Loop    'Yakin jika cak  semau Detail mentah Hbeli di update     rsHBeli.Update    End With    MsgBox "Data Pembelian mutakadim tersimpan"   End If  End Sub
Private Sub cexit_Click()    Unload Me End Sub
Private Sub DataGrid1_AfterColEdit(ByVal ColIndex As Integer)    Dim Kobrg As String    If ColIndex = 0 Then     Kobrg = Trim(DataGrid1.Columns(0).Text)     Set rSB = New ADODB.Recordset     rSB.Open "select * from Tbarang where KodeBrg ='" & Kobrg & "'",               CN, adOpenKeyset, adLockOptimistic, adCmdText               'Parameter diatas tidak dipisahkan dengan enter     If rSB.EOF And rSB.BOF Then       MsgBox "Kode Barang ini bukan ada"     Else       With DataGrid1        .Columns(1).Text = rSB!NamaBrg        .Columns(2).Text = rSB!Asongan        .Columns(3).Text = rSB!HargaBeli       End With       'Tekan cembul Right 4 mana tahu       SendKeys "{RIGHT 4}"     End If    End If    If ColIndex = 4 Then    With DataGrid1     .Columns(5).Text = Val(.Columns(3).Text) * Val(.Columns(4).Text)          If RBaru Then       Mtotal = Mtotal + Val(.Columns(5).Text)     Else      'Jika tidak data yunior maka Mtotal harus dikurangi dengan       'Subharga yang lama        Mtotal = (Mtotal - SubHLama) + Val(.Columns(5).Text)     End If     SubHLama = 0     Text4.Text = Dimensi(Mtotal, "#,##0")    End With    SendKeys "{DOWN}"    SendKeys "{HOME}"   End If End Sub
Private Sub DataGrid1_BeforeColEdit(ByVal ColIndex As Integer,                    ByVal KeyAscii    As Integer, Cancel As Integer)                    'Fleksibel tidak dipisahkan dengan enter   If ColIndex = 4 Then    SubHLama = Val(DataGrid1.Columns(5).Text)   End If End Sub
Private Sub DtBeli_KeyDown(KeyCode As Integer, Shift As Integer)    TekanEnter (KeyCode) End Sub
Private Sub Form_Load()    VFrmbeli = True    Me.Width = 9420    Berpenyakitan.Height = 5550    Me.Left = (Screen.Width - Me.Width) \ 2    Me.Top = 1000     Adodc1.Recordset.Close    CN.Execute "delete * from Tbantu"    Adodc1.Recordset.Open "select * from Tbantu"    Me.Adodc1.Refresh    Me.DataGrid1.Refresh End Sub
Private Sub Form_Unload(Cancel As Integer)    VFrmbeli = False End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)    KeyAscii = Asc(UCase(Chr(KeyAscii)))    TekanEnter (KeyAscii) End Sub
Private Sub Text1_LostFocus()  Dim Tanya As Integer  Mtotal = 0  If Len(Trim(Text1.Text)) > 0 Then    Set rsHBeli = New ADODB.Recordset    rsHBeli.Open "select * from QBELI where NOFAKTUR ='" & Trim     (Text1.Text) & "'", CN, adOpenKeyset, adLockOptimistic, adCmdText     'Elastis diatas tidak dipisahkan dengan enter      If rsHBeli.EOF And rsHBeli.BOF Then    Else      cESave.Caption = "&Edit"      Tanya = MsgBox("Faktur Sudah interelasi ada, Cak hendak ditampilkan.? ",                      vbQuestion + vbYesNo, "FAKTUR GANDA")                     'Lentur diatas bukan dipisahkan dengan enter        If Pertanyaan = vbYes Then       Text2.Text = rsHBeli!KodeSup       DtBeli.Value = rsHBeli!tgl       Text3.Text = rsBeli!butir-butir       Text5.Text = rsHBeli!NamaSup       CN.Execute "delete * from Tbantu"       Set rSBantu = New ADODB.Recordset       rSBantu.Open "select * from Tbantu", CN, adOpenKeyset,                     adLockOptimistic,adCmdText                     'Variabel enggak dipisahkan dengan enter      rsHBeli.MoveFirst       Do Mencicil rsHBeli.EOF        rSBantu.AddNew        rSBantu!KOdeBrg = rsHBeli!KOdeBrg        rSBantu!NamaBrg = rsHBeli!NamaBrg        rSBantu!Ketengan = rsHBeli!Runcitruncit        rSBantu!HrgJual = rsHBeli!Harga        rSBantu!Jml = rsHBeli!Jml        rSBantu!Subjumlah = rsHBeli!Subjumlah        Mtotal = Mtotal + rsHBeli!Subjumlah        rSBantu.Update        rsHBeli.MoveNext       Loop       Set rsHBeli = Nothing       Set rSBantu = Nothing       Adodc1.Recordset.Close       Adodc1.Recordset.Open "sELECT * FROM TBANTU", CN       Adodc1.Recordset.Requery -1       Adodc1.Refresh       DataGrid1.ReBind       DataGrid1.Refresh       Text4.Text = Format(Mtotal, "#,##0")       Me.Refresh     End If    End If  End If End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)    KeyAscii = Asc(UCase(Chr(KeyAscii)))    TekanEnter (KeyAscii) End Sub
Private Sub Text2_LostFocus()    Dim RsSup As ADODB.Recordset    Set RsSup = New ADODB.Recordset    RsSup.Open "select * from TSUPPLIER where KodeSup ='" &         Trim(Text2.Text) & "'", CN, adOpenForwardOnly, adLockReadOnly    If RsSup.EOF And RsSup.BOF Then      MsgBox "Lepas Kode Supplier ini lain ada"      Text2.SetFocus      Exit Sub     Else      Text5.Text = RsSup!NamaSup    End If End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)    KeyAscii = Asc(UCase(Chr(KeyAscii)))    TekanEnter (KeyAscii) End Sub '--------- EOF File Form Transaksi ---------------

PENJELASAN:

Pada Source Acara yg di download terdapat form tambahan begitu juga form Input Barang (FrmTBarang, FrmTSupplier, FrmTCustomer), form ini dibuat dengan menggunakan Menu VB Data Form Wizard, dimana dengan menu ini hanya dibutuhkan untuk mengarahkan database (Suplai.MDB) seumpama mata air databasenya

Demikian pembahasan transaksi pembelian dan akan dilanjutkan plong bagian ke dua tulisan ini untuk mengomongkan transaksi penjualan dan menyorongkan data pada komputer.

Silakan meninggalkan pesan buat sesuatu yang mesti dijelaskan..

Klik ini bakal Download Source program:

Salam

Admin

Source: https://twitsyarifuddin.wordpress.com/2010/06/08/program-stok-barang-menggunakan-vb-dan-microsoft-access-episode-5a/comment-page-3/