Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 7

AF- Pertemuan 3 & 4 (Juni 2003)

File-file : - Table : TblJurnal, TblJurnalDetail - Command : GetJurnal, GetJurnalDetail, CariJurnal, CariJurnalDetail, InsertJurnal, InsertJurnalDetail, DeleteJurnal, DeleteJurnalDetail - Form : FormJurnal 1. General Jurnal Mencatat transaksi akuntansi a. Design Table : TblJurnal dan TblJurnalDetail

b. Code SQL Command GetJurnal


SELECT NoJurnal, Tgl, Periode FROM TblJurnal

GetJurnalDetail
SELECT TblJurnalDetail.NoJurnal, TblJurnalDetail.AccountNo, TblJurnalDetail.Keterangan, TblJurnalDetail.Debet, TblJurnalDetail.Kredit, TblAccount.AccounName FROM TblJurnalDetail INNER JOIN TblAccount ON TblJurnalDetai

CariJurnal
SELECT NoJurnal, Tgl, Periode FROM TblJurnal WHERE (NoJurnal = ?)

CariJurnalDetail
SELECT TblJurnalDetail.NoJurnal, TblJurnalDetail.AccountNo, TblAccount.AccounName, TblJurnalDetail.Keterangan, TblJurnalDetail.Debet, TblJurnalDetail.Kredit FROM TblJurnalDetail INNER JOIN TblAccount ON TblJurnalDetail.AccountNo = TblAccount.AccountNo WHERE (TblJurnalDetail.NoJurnal = ?)

InsertJurnal
INSERT INTO TblJurnal (NoJurnal, Tgl, Periode) VALUES (?, ?, ?)

InsertJurnalDetail
INSERT INTO TblJurnalDetail (NoJurnal, AccountNo, Keterangan, Debet, Kredit) VALUES (?, ?, ?, ?, ?)

DeleteJurnal
DELETE FROM TblJurnal WHERE NoJurnal = ?

DeleteJurnalDetail
DELETE FROM TblJurnalDetail WHERE NoJurnal = ?

c.

Form dan Coding

Transaksi Jurnal yang sudah diinput bisa dipanggil kembali dengan memilihnya pada datacombo di No Jurnal Jumlah Debet dan Kredit akan dicek agar selalu balance Detail Transaksi Jurnal dibuat kedalam file temporary yang disimpan dimemory komputer. Nama Account dimunculkan dengan DataList saat mengisi detail jurnal

Option Explicit Private RsTmpJurDetail As New Recordset Private Sub CmbNoJurnal_Click(Area As Integer) If Area = 2 Then If DEAkuntansi.rsCariJurnal.State = adStateOpen Then DEAkuntansi.rsCariJurnal.Close End If DEAkuntansi.CariJurnal CmbNoJurnal TxtTgl = DEAkuntansi.rsCariJurnal.Fields(1) txtperiode = DEAkuntansi.rsCariJurnal.Fields(2) If RsTmpJurDetail.RecordCount > 0 Then RsTmpJurDetail.MoveFirst Do While Not RsTmpJurDetail.EOF RsTmpJurDetail.Delete RsTmpJurDetail.MoveNext Loop End If If DEAkuntansi.rsCariJurnalDetail.State = adStateOpen Then DEAkuntansi.rsCariJurnalDetail.Close End If DEAkuntansi.CariJurnalDetail CmbNoJurnal If DEAkuntansi.rsCariJurnalDetail.RecordCount > 0 Then DEAkuntansi.rsCariJurnalDetail.MoveFirst Do While Not DEAkuntansi.rsCariJurnalDetail.EOF RsTmpJurDetail.AddNew

RsTmpJurDetail.Fields(0) = DEAkuntansi.rsCariJurnalDetail.Fields(0) RsTmpJurDetail.Fields(1) = DEAkuntansi.rsCariJurnalDetail.Fields(1) RsTmpJurDetail.Fields(2) = DEAkuntansi.rsCariJurnalDetail.Fields(2) RsTmpJurDetail.Fields(3) = DEAkuntansi.rsCariJurnalDetail.Fields(3) RsTmpJurDetail.Fields(4) = DEAkuntansi.rsCariJurnalDetail.Fields(4) RsTmpJurDetail.Fields(5) = DEAkuntansi.rsCariJurnalDetail.Fields(5) RsTmpJurDetail.Update DEAkuntansi.rsCariJurnalDetail.MoveNext Loop End If End If End Sub Private Sub CmbNoJurnal_KeyPress(KeyAscii As Integer) 'dibuat dengan Data Combo di Componen If KeyAscii = 13 Then TxtTgl.SetFocus End Sub Private Sub CmdBaru_Click() CmbNoJurnal = "" TxtTgl = Date txtperiode = "" If RsTmpJurDetail.RecordCount > 0 Then RsTmpJurDetail.MoveFirst Do While Not RsTmpJurDetail.EOF RsTmpJurDetail.Delete RsTmpJurDetail.MoveNext Loop End If End Sub Private Sub CmdHapus_Click() On Error GoTo SalahHapus If Len(Trim$(CmbNoJurnal)) = 0 Then MsgBox "Pilih No. Jurnalnya", vbInformation, "Ayo..." Exit Sub End If DEAkuntansi.ConAkun.BeginTrans DEAkuntansi.DeleteJurnal CmbNoJurnal DEAkuntansi.DeleteJurnalDetail CmbNoJurnal DEAkuntansi.ConAkun.CommitTrans CmbNoJurnal = "" TxtTgl = "" txtperiode = "" If RsTmpJurDetail.RecordCount > 0 Then RsTmpJurDetail.MoveFirst Do While Not RsTmpJurDetail.EOF RsTmpJurDetail.Delete RsTmpJurDetail.MoveNext Loop End If MsgBox "No. Jurnal " + CmbNoJurnal + " telah dihapus", vbInformation, "Hapus" Exit Sub If DEAkuntansi.rsGetJurnal.State = adStateOpen Then DEAkuntansi.rsGetJurnal.Close End If DEAkuntansi.GetJurnal Set CmbNoJurnal.RowSource = Nothing Set CmbNoJurnal.RowSource = DEAkuntansi

SalahHapus: DEAkuntansi.ConAkun.RollbackTrans MsgBox Err.Description, vbInformation, "Hapus" Err.Clear End Sub Private Sub CmdHapusTR_Click() On Error GoTo SalahHapusTR RsTmpJurDetail.Delete RsTmpJurDetail.MoveNext If RsTmpJurDetail.EOF Then RsTmpJurDetail.MoveLast Exit Sub SalahHapusTR: MsgBox Err.Description, vbInformation, "Hapus Transaksi" Err.Clear End Sub Private Sub CmdSimpan_Click() If Len(Trim$(CmbNoJurnal)) = 0 Then MsgBox "Isi No. Jurnal", vbOKOnly + vbInformation, "Tambah Transaksi" Exit Sub End If If Not IsDate(TxtTgl) Then MsgBox "Isi Tanggal", vbOKOnly + vbInformation, "Tambah Transaksi" Exit Sub End If If Not IsNumeric(txtperiode) Then MsgBox "Isi Periode", vbOKOnly + vbInformation, "Tambah Transaksi" Exit Sub End If If RsTmpJurDetail.RecordCount < 0 Then MsgBox "Tidak ada transaksi", vbOKOnly + vbInformation, "Simpan" Exit Sub Else Dim JumDb As Currency Dim JumKR As Currency RsTmpJurDetail.MoveFirst Do While Not RsTmpJurDetail.EOF If Len(Trim$(RsTmpJurDetail.Fields(1))) = 0 Then MsgBox "Transaksi tidak lengkap", vbOKOnly + vbInformation, "Informasi" Exit Sub End If JumDb = JumDb + CCur(RsTmpJurDetail.Fields(4)) 'Koversi ke Currency JumKR = JumKR + CCur(RsTmpJurDetail.Fields(5)) RsTmpJurDetail.MoveNext Loop If JumDb <> JumKR Then MsgBox "Transaksi tidak seimbang", vbOKOnly + vbInformation, "Simpan" Exit Sub End If End If If DEAkuntansi.rsCariJurnal.State = adStateOpen Then 'kalo rs aktif DEAkuntansi.rsCariJurnal.Close 'rs ditutup End If DEAkuntansi.CariJurnal CmbNoJurnal 'jalankan sql utk rs If DEAkuntansi.rsCariJurnal.RecordCount <= 0 Then 'Simpan data baru On Error GoTo SalahSimpanDataBaru

satu

'Transaksi digunakan jika menggunakan tabel lebih dari

DEAkuntansi.ConAkun.BeginTrans 'Memulai transaksi DEAkuntansi.InsertJurnal CmbNoJurnal, TxtTgl, txtperiode RsTmpJurDetail.MoveFirst Do While Not RsTmpJurDetail.EOF DEAkuntansi.InsertJurnalDetail RsTmpJurDetail.Fields(0), RsTmpJurDetail.Fields(1), _ RsTmpJurDetail.Fields(3), RsTmpJurDetail.Fields(4), RsTmpJurDetail.Fields(5) RsTmpJurDetail.MoveNext Loop DEAkuntansi.ConAkun.CommitTrans 'Transaksi sah, simpan berhasil MsgBox "Simpan Jurnal Baru OK", vbOKOnly + vbInformation, "Simpan" If DEAkuntansi.rsGetJurnal.State = adStateOpen Then DEAkuntansi.rsGetJurnal.Close End If DEAkuntansi.GetJurnal Set CmbNoJurnal.RowSource = DEAkuntansi Exit Sub SalahSimpanDataBaru: DEAkuntansi.ConAkun.RollbackTrans 'Transaksi dibatalkan MsgBox Err.Description, vbInformation, "Simpan" Err.Clear Else On Error GoTo SalahSimpanDataLama DEAkuntansi.ConAkun.BeginTrans DEAkuntansi.DeleteJurnal CmbNoJurnal DEAkuntansi.DeleteJurnalDetail CmbNoJurnal DEAkuntansi.InsertJurnal CmbNoJurnal, TxtTgl, txtperiode RsTmpJurDetail.MoveFirst Do While Not RsTmpJurDetail.EOF DEAkuntansi.InsertJurnalDetail RsTmpJurDetail.Fields(0), RsTmpJurDetail.Fields(1), _ RsTmpJurDetail.Fields(3), RsTmpJurDetail.Fields(4), RsTmpJurDetail.Fields(5) RsTmpJurDetail.MoveNext Loop DEAkuntansi.ConAkun.CommitTrans MsgBox "Simpan Jurnal Ulang OK", vbInformation, "Simpan" If DEAkuntansi.rsGetJurnal.State = adStateOpen Then DEAkuntansi.rsGetJurnal.Close End If DEAkuntansi.GetJurnal Set CmbNoJurnal.RowSource = DEAkuntansi Exit Sub SalahSimpanDataLama: DEAkuntansi.ConAkun.RollbackTrans MsgBox Err.Description, vbInformation, "Simpan" Err.Clear End If End Sub Private Sub CmdTambahTR_Click() If Len(Trim$(CmbNoJurnal)) = 0 Then MsgBox "Isi No. Jurnal", vbOKOnly + vbInformation, "Tambah Transaksi" Exit Sub End If If Not IsDate(TxtTgl) Then MsgBox "Isi Tanggal", vbOKOnly + vbInformation, "Tambah Transaksi" Exit Sub

End If If Not IsNumeric(txtperiode) Then MsgBox "Isi Periode", vbOKOnly + vbInformation, "Tambah Transaksi" Exit Sub End If RsTmpJurDetail.AddNew RsTmpJurDetail.Fields(0) = CmbNoJurnal RsTmpJurDetail.Fields(1) = "" RsTmpJurDetail.Fields(2) = "" RsTmpJurDetail.Fields(3) = "" RsTmpJurDetail.Fields(4) = 0 RsTmpJurDetail.Fields(5) = 0 RsTmpJurDetail.Update End Sub Private Sub cmdtutup_Click() Unload Me End Sub Private Sub DataGrid1_AfterColUpdate(ByVal ColIndex As Integer) If ColIndex = 4 Then RsTmpJurDetail.Fields(5) = 0 'DB diisi KR=0 If ColIndex = 5 Then RsTmpJurDetail.Fields(4) = 0 'KR diisi DB=0 End Sub Private Sub DataGrid1_ButtonClick(ByVal ColIndex As Integer) 'Bisa tidak menggunakan ColIndex karena hanya ada satu button DataList1.Visible = True If ColIndex = 2 Then 'Tentukan lokasi penampilan listbox (left,top) DataList1.Move DataGrid1.Left + DataGrid1.Columns(2).Left, _ DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + _ DataGrid1.RowHeight DataList1.Visible = True Else DataList1.Visible = False End If End Sub Private Sub DataList1_DblClick() RsTmpJurDetail.Fields(1) = DataList1.BoundText 'Data dari BoundColumn RsTmpJurDetail.Fields(2) = DataList1 DataList1.Visible = False End Sub Private Sub Form_Load() 'Menggunakan Data List untuk menampilkan AccounName 'Atur RowSource,RowMember,ListField,BoundColumn RsTmpJurDetail.Fields.Append "NoJurnal", adChar, 10 RsTmpJurDetail.Fields.Append "AccountNo", adChar, 5 RsTmpJurDetail.Fields.Append "AccounName", adChar, 25 RsTmpJurDetail.Fields.Append "Keterangan", adChar, 50 RsTmpJurDetail.Fields.Append "Debet", adCurrency RsTmpJurDetail.Fields.Append "Kredit", adCurrency RsTmpJurDetail.Open Set DataGrid1.DataSource = RsTmpJurDetail DataGrid1.Columns(0).Locked = True DataGrid1.Columns(1).Locked = True DataGrid1.Columns(2).Locked = True

DataGrid1.Columns(2).Button = True 'Memunculkan combo di AccounName DataGrid1.Columns(4).NumberFormat = "#,##0" DataGrid1.Columns(4).Alignment = dbgRight DataGrid1.Columns(5).NumberFormat = "#,##0" DataGrid1.Columns(5).Alignment = dbgRight End Sub Private Sub Form_Unload(Cancel As Integer) Set RsTmpJurDetail = Nothing End Sub Private Sub TxtPeriode_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then CmdTambahTR.SetFocus End Sub Private Sub TxtTgl_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtperiode.SetFocus End Sub

You might also like