Halaman

Sabtu, 20 November 2010

Membuat Aplikasi pembelian dengan Visual FoxPro

     Untuk membuat program pembelian, hal ini adalah hal yang biasa dan sering banyak dibahas di banyak artikel. Tapi untuk kali ini, tetap membahas pembelian tapi dengan cara yang berbeda.

     Pengertian Pembelian :
     Pembelian dapat diartikan sebagai urutan kerja atau salah satu proses yang berkaitan dengan pengadaan barang dagangan.


 Persiapan untuk membuat program transaksi pembelian sbb :
1.  Buat project : PjPembelian
2.  Dabatase :dbPembelian
3.  Buat beberapa tabel, berikut struktur sbb:
Tabel Souvenir
kdbrg : Primary key







Isi record pada tabel souvenir sbb :













Tabel Supplier
kdsup : Primary key 







Tabel Pembelian
nofak : Primary Key
kdbrg : Foreign Key (Regular)









Tabel dtBeli
nofak : Foreign Key (Regular)
kdbrg : Foreign Key (Regular)









Design Form pembelian : 




     

Keterangan :
1,2,4,5, 11  : textbox
9                : Listbox
6,7,12        :  CommandButton

1  :  txtNoFak
2  :  txtTglFak
3  :  Combo1
4  :  txtNmSup
5  :  txtQty
6  :  CInput
7  :  cmdFirst, cmdBack, cmdNext, cmdLast
8  :  Text1
9  :  List1
10 : Grid1
11 : txtTotal, txtUbay, txtKembali
12 : cTambah, cSimpan, cKeluar



Untuk setiap textbox yang menampilkan angka, maka akan diubah tipe datanya menjadi numerik melalui builder











Untuk combobox
Klik kanan pada combo
Pilih Builder, lalu masukkan kdsup ke “selected field”






Untuk ListBox, sama seperti combo
KLik kanan pada List
Pilih Builder, lalu masukkan semua field ke "Selected Field"










:: Listing :: 


Form  Aktif
thisform.combo1.Enabled= .T.
thisform.txtNmsup.Enabled= .T.
thisform.text1.Enabled= .T.
thisform.list1.Enabled= .T.
thisform.txtQty.Enabled= .T.
thisform.cinput.Enabled= .T.
thisform.cmdfirst.Enabled= .T.
thisform.cmdback.Enabled= .T.
thisform.cmdnext.Enabled= .T.
thisform.cmdlast.Enabled= .T.


Form  Aturgrid
SELECT Tmpbeli
thisform.grid1.Enabled= .F.
thisform.grid1.RecordSource='Tmpbeli'
thisform.grid1.RecordSourceType= 1
*Atur Grid   
thisform.grid1.column1.Width=85
thisform.grid1.column2.Width=160
thisform.grid1.column3.Width=70
thisform.grid1.column4.Width=50
thisform.grid1.column5.Width=70
           
thisform.grid1.column1.header1.Caption="Kode Barang"
thisform.grid1.column2.header1.Caption="Nama Barang"
thisform.grid1.column3.header1.Caption="Harga"
thisform.grid1.column4.header1.Caption="Qty"
thisform.grid1.column5.header1.Caption="Subtotal"

     
Form  Auto
SELECT pembelian

IF  RECCOUNT() = 0
      no="001"
ELSE
      GO BOTTOM 
      urut=VAL(RIGHT(nofak,3))+1
      DO CASE
      CASE urut > 10
            no="00"+(LTRIM(STR(urut,1)))
      CASE urut > 100
            no="0"+(LTRIM(STR(urut,2)))
      OTHERWISE 
            no=LTRIM(STR(urut,3))
      ENDCASE          
ENDIF

*Menghitung bulan
bl=LTRIM(STR(MONTH(DATE())))
IF VAL(bl) > 10
      bulan="0"+bl
ELSE
      bulan=bl
ENDIF

*Menghitung tahun
th=RIGHT(STR(YEAR(DATE())),2)

*menghitung tanggal
tgl=LEFT(DTOC(DATE()),2)

thisform.txtNoFak.Value="NF"+th+bulan+tgl+no
thisform.Refresh()


Form  Awal
thisform.combo1.Enabled= .F.
thisform.list1.Enabled= .F.
thisform.txtQty.Enabled= .F.
thisform.cinput.Enabled= .F.
thisform.cmdfirst.Enabled= .F.
thisform.cmdback.Enabled= .F.
thisform.cmdnext.Enabled= .F.
thisform.cmdlast.Enabled= .F.
thisform.SetAll("Enabled",.F.,"TextBox")
thisform.SetAll("Value",0,"TextBox")
thisform.text1.Value=""
thisform.txtnmsup.Value=""
thisform.txttotal.Value=0
thisform.txtNmsup.Value=""
thisform.aturgrid()
thisform.ctambah.Enabled= .T.
thisform.csimpan.Caption="Simpan"
thisform.ckeluar.Caption= "Keluar"



Form  Load
CLOSE TABLES ALL
SET DEFAULT TO "C:\Materi_VFP\PraUAS" 
USE pembelian EXCLUSIVE IN 0
USE dtbeli EXCLUSIVE IN 0
USE souvenir EXCLUSIVE IN 0
USE supplier EXCLUSIVE IN 0

CREATE TABLE Tmpbeli(kodebrg char(9),namabrg char(20),;
                   hrg numeric, Tqty byte, Tsubtotal numeric);
        
SELECT Tmpbeli
USE Tmpbeli


Form  Unload
IF USED("pembelian")
      USE IN pembelian
ENDIF

IF USED("dtbeli")
      USE IN dtbeli
ENDIF

IF USED("souvenir")
      USE IN souvenir
ENDIF

IF USED("supplier")
      USE IN supplier
ENDIF


DROP TABLE Tmpbeli



Form  Activate
thisform.awal()


Ctambah     Click
thisform.auto()
thisform.aktif()
thisform.ckeluar.caption= "Batal"
thisform.csimpan.Caption="Hapus Item"
thisform.ctambah.Enabled= .F.




Combo1               Click
SELECT supplier
SET ORDER TO kdsup

IF SEEK(thisform.combo1.Value)
      thisform.txtnmsup.Value=nmsup
      thisform.text1.SetFocus()
ENDIF


Text1        InterActiveChange
cari=TRIM(thisform.text1.Value) + ' % '
thisform.list1.RowSource=''
     
SELECT kdbrg,nmbrg,harga,stok ORDER BY kdbrg;
FROM Souvenir WHERE nmbrg LIKE ?cari INTO CURSOR tmpCari
     
thisform.list1.RowSource='tmpCari'
thisform.Refresh()


List1  dblClick
SELECT Tmpbeli
APPEND BLANK
thisform.grid1.Enabled= .T.
thisform.grid1.RecordSource='Tmpbeli'
thisform.grid1.RecordSourceType= 1

SELECT souvenir
SET ORDER TO TAG kdbrg
SEEK(TRIM(this.Value))
IF FOUND()
      thisform.grid1.column1.text1.Value=souvenir-> kdbrg
      thisform.grid1.column2.text1.Value=souvenir-> nmbrg
      thisform.grid1.column3.text1.Value=souvenir-> harga
      thisform.text1.Value=""
      thisform.list1.Refresh()
      thisform.txtQty.SetFocus()
ENDIF
thisform.list1.RowSource="souvenir"


List1 GotFocus
thisform.list1.ListIndex=1
txtQty      Lostfocus
SELECT Tmpbeli
thisform.grid1.RecordSource='Tmpbeli'
thisform.grid1.RecordSourceType= 1

thisform.grid1.column4.text1.Value=thisform.txtqty.Value
thisform.grid1.column5.text1.Value=thisform.grid1.column4.text1.Value*thisform.grid1.column3.text1.Value
thisform.txttotal.Value=thisform.txttotal.Value+ thisform.grid1.column5.text1.Value

*menambah stok barang

SELECT souvenir
SET ORDER TO kdbrg
LOCATE FOR kdbrg=ALLTRIM(thisform.grid1.column1.text1.Value )
IF FOUND()
      REPLACE stok WITH stok+thisform.txtQty.Value
      thisform.list1.Refresh()
ENDIF
thisform.txtqty.Value =0


Tombol Navigasi
Cmdfirst    Click
SELECT Tmpbeli
GO TOP
thisform.grid1.Refresh()
thisform.grid1.SetFocus


cdmback      Click
SELECT Tmpbeli
SKIP -1
thisform.grid1.SetFocus
IF BOF()
      GO TOP
      thisform.grid1.Refresh()
     
ENDIF


Cmdback     click
SELECT Tmpbeli
SKIP -1
thisform.grid1.SetFocus
IF BOF()
      GO TOP
      thisform.grid1.Refresh()     
ENDIF


Cmdnext     Click
SELECT Tmpbeli
SKIP 1
thisform.grid1.SetFocus
IF EOF()
      GO BOTTOM
      thisform.grid1.Refresh()     
ENDIF


Cmdlast     Click
GO BOTTOM
thisform.grid1.Refresh()
thisform.grid1.SetFocus


cInput      Click
thisform.txtubay.Enabled= .T.
thisform.txtubay.SetFocus()
thisform.csimpan.Caption="Simpan"




txtUbay     KeyPres
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nkeycode=13
      t=thisform.txttotal.Value
      b=thisform.txtubay.Value
      IF bTHEN
            MESSAGEBOX("Uang Bayar kurang!!",48,"Kesalahan")
            b=""
            RETURN
      ELSE
            thisform.txtkembali.Value=b-t
            thisform.csimpan.Caption="Simpan"          
      ENDIF
ENDIF


Csimpan     Click
SELECT pembelian
SET ORDER TO nofak
IF thisform.csimpan.Caption="Hapus Item"
      SELECT Tmpbeli
      SET DELETED ON
      DELETE 
      PACK
      thisform.aturgrid()
ELSE

      SELECT Tmpbeli
      SCAN
      SELECT dtbeli
      APPEND BLANK
      REPLACE nofak WITH thisform.txtnofak.Value
      REPLACE kdbrg WITH Tmpbeli.kodebrg
      REPLACE qty WITH Tmpbeli.Tqty
      REPLACE subtotal WITH Tmpbeli.Tsubtotal
      ENDSCAN

      SELECT pembelian
      SET ORDER TO nofak     
      APPEND BLANK
      REPLACE nofak WITH thisform.txtnofak.Value
      REPLACE tglfak WITH DATE()
      REPLACE kdsup WITH thisform.Combo1.Value
      REPLACE total WITH thisform.txtTotal.Value
      REPLACE ubay WITH thisform.txtUbay.Value
      REPLACE kembali WITH thisform.txtKembali.Value

      SELECT Tmpbeli
      DELETE ALL
      PACK
      thisform.awal()
      thisform.Refresh()
ENDIF




Ckeluar     Click
IF thisform.ckeluar.Caption="Batal"
      thisform.ckeluar.Caption="Keluar"
     
      SELECT Tmpbeli
      IF RECCOUNT() <> 0 THEN
            SELECT souvenir
            SET ORDER TO kdbrg
            LOCATE FOR kdbrg=ALLTRIM(thisform.grid1.column1.text1.Value )
            IF FOUND()
                  REPLACE stok WITH stok-(Tmpbeli.Tqty)
                  thisform.list1.Refresh()
            ENDIF 
          
            SELECT Tmpbeli
            DELETE ALL
            PACK 
            thisform.awal()
      ELSE
            thisform.awal()
      ENDIF
ELSE
IF thisform.ckeluar.Caption="Keluar"
      thisform.Release
ENDIF
ENDIF


Timer1      Timer
*Menghitung tahun
th=LTRIM(STR(YEAR(DATE())))

*Menghitung bulan
bl=CMONTH(DATE())

*menghitung tanggal
tgl=LEFT(DTOC(DATE()),2)

thisform.txttglfak.Value=tgl+"  "+bl+" "+th
» Read more → Membuat Aplikasi pembelian dengan Visual FoxPro

Selasa, 26 Oktober 2010

Membuat Program Rekening Akuntansi Dengan Visual Foxpro


Kali ini, kita membuat program sederhana untuk Master Rekening, yaitu akun-akun yang  akan dipakai untuk penjurnalan

Sebelumnya buat terlebih dahulu Project dan database.Kemudian buat table dalam database tsb dengan nama TBakun.dbf dengan struktur sbb :











jangan lupa, jadikan koderek sebagai Primary Key

Lalu Design form seperti berikut


















Objek yang digunakan dan properties yang di ubah





Ketentuan dan Logika jalannya Program
1. Pada saat form pertama kali tampil, maka semua objek textbox,combo box dan option button nonaktif
    tombol simpan nonaktif dan grid hanya bisa dilihat (Read Only)
2. Klik tambah untuk menambah data
    maka semua objek textbox, combo dan option menjadi aktif
    tombol tambah dan hapus menjadi nonaktif
    tombol simpan menjadi aktif
    tombol "keluar" berubah menjadi "batal"
    a. Pilih ComboBox, maka tampil nama kelompok sesuai dengan kode rekening
    b. Masukkan nama rekening
    c. Pilih posisi
    d. Masukkan Saldo
    e. Klik Simpan
        Jika kode rekening sudah ada dalam tabel maka tampil pesan bahwa kode sudah ada
        Jika kode rekening belum ada dalam tabel maka data tersimpan dan kondisi kembali ke awal
3. Klik tombol Hapus
    maka tampil pesan InputBox seperti berikut :







4. Klik tombol Batal, maka akan kembal;i ke kondisi awal
    Klik tombol Keluar, maka akan keluar dari program



:: Listing ::
Form                    Nonaktif
thisform.combo1.Enabled= .F.
thisform.txtkelompok.Enabled= .F.
thisform.txtnamarek.Enabled= .F.
thisform.optiongroup1.Enabled = .F.
thisform.txtsaldo.Enabled= .F.
thisform.cmdsimpan.Enabled= .F.


Form                          Aktif
thisform.combo1.Enabled= .T.
thisform.txtkelompok.Enabled= .T.
thisform.txtnamarek.Enabled= .T.
thisform.optiongroup1.Enabled = .T.
thisform.txtsaldo.Enabled= .T.

Form                          bersih
thisform.combo1.value= ""
thisform.txtkelompok.value= ""
thisform.txtnamarek.value=""
thisform.optiongroup1.value= 0
thisform.txtsaldo.value= 0

KET : untuk aktif, nonaktif dan bersih buatkan prosedur dengan cara
         Buka jendela code
         Menu Form >> New Method 
         buat untuk aktif, nonaktif, bersih 

form                          Activate
thisform.nonaktif()
thisform.bersih()

FOR a=11101 TO 11106
      thisform.combo1.AddItem (ALLTRIM(STR(a)))
ENDFOR

FOR k=21101 TO 21104
      thisform.combo1.AddItem (ALLTRIM(STR(k)))
ENDFOR

FOR m=31101 TO 31102
      thisform.combo1.AddItem (ALLTRIM(STR(m)))
ENDFOR

FOR p=41101 TO 41102
      thisform.combo1.AddItem (ALLTRIM(STR(p)))
ENDFOR

FOR b=51101 TO 51106
      thisform.combo1.AddItem (ALLTRIM(STR(b)))
ENDFOR


cmdTambah                           Click
thisform.aktif()
thisform.bersih()
thisform.cmdsimpan.Enabled= .T.
thisform.cmdtambah.Enabled= .F.
thisform.cmdhapus.Enabled= .F.
thisform.cmdkeluar.Caption="Batal"
thisform.combo1.SetFocus()

cmdSimpan                           Click
SELECT tbakun
SET ORDER TO koderek

LOCATE FOR koderek=ALLTRIM(thisform.combo1.Value)
IF FOUND()
      MESSAGEBOX("Rekening Sudah Ada",48,"Info")
ELSE
      APPEND BLANK
      REPLACE koderek WITH thisform.combo1.Value
      REPLACE kelompok WITH thisform.txtkelompok.Value
      REPLACE namarek WITH thisform.txtnamarek.Value
      IF thisform.optiongroup1.opD.Value=1
            REPLACE posisi WITH "D"
      ELSE
      IF thisform.optiongroup1.opD.Value=1
            REPLACE posisi WITH "K"
      ENDIF
      ENDIF
     
      REPLACE saldo WITH thisform.txtsaldo.Value
      thisform.cmdtambah.Enabled= .T.
      thisform.cmdhapus.Enabled= .T.
      thisform.cmdkeluar.Caption="Keluar"
      thisform.nonaktif()
ENDIF
thisform.grdTbakun.Refresh() 

cmdHapus                            Click
y=INPUTBOX("Kode yang ingin dihapus?","Info","")

LOCATE FOR tbakun.koderek=y
IF FOUND()
      DELETE 
      PACK
      GO TOP
ENDIF
thisform.Refresh()

cmdKeluar                           click
IF thisform.cmdkeluar.Caption="Batal"
      thisform.cmdkeluar.Caption="Keluar"
      thisform.nonaktif()
      thisform.cmdtambah.Enabled= .T.
      thisform.cmdhapus.Enabled= .T.
      thisform.bersih()
ELSE
IF thisform.cmdkeluar.Caption="Keluar"
      thisform.Release()
ENDIF
ENDIF

Combo1                              Click
no=LEFT(thisform.combo1.Value,1)

IF no="1"
      thisform.txtKelompok.Value="Aktiva"
ELSE
IF no="2"
      thisform.txtKelompok.Value="Kewajiban"
ELSE
IF no="3"
      thisform.txtKelompok.Value="Modal"
ELSE
IF no="4"
      thisform.txtKelompok.Value="Pendapatan"
ELSE
IF no="5"
      thisform.txtKelompok.Value="Beban" 
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
thisform.Refresh()
thisform.txtNamarek.SetFocus()

Option1                 Click
thisform.txtsaldo.SetFocus()

Option2                 Click
thisform.txtsaldo.SetFocus()


» Read more → Membuat Program Rekening Akuntansi Dengan Visual Foxpro

Rabu, 20 Oktober 2010

Tips membuat program sederhana Visual Foxpro

Dalam membuat program perhitungan sederhana di visual foxpro memerlukan sebuah konversi agar bisa dilakukan perhitungan. Karna setiap objek yang ada di dalam form bertipe data string.

Contoh Soal Program:

























Dari Form diatas kita dapat mengetahui bahwa form tersebut untuk menghitung berat ideal.
  1. Masukkan tinggi badan
  2. Masukkan berat badan
  3. Klik hitung, maka didapat berat ideal dan tampilan kategori (pada label 4) 
     

Contoh Program saat Running

























Untuk listing diatas perhitungannya antara lain
  1. 110 dikurang tinggi badan, maka didapatkan berat ideal
  2. Berat badan – berat ideal
a.  Jika Berat badan < berat ideal, maka termasuk kategori Kurus
b.  Jika Berat badan = berat ideal, maka termasuk kategori Ideal
c.  Jika Berat badan > berat ideal, maka termasuk kategori Gemuk

Ada 2 cara dalam membuat perhitungan tsb antara lain :
1.  Dengan Cara Mengkonversi ke VAL melalui listing

Jika mengkonversi dengan cara ini, yang harus diperhatikan adalah perhitungannya. Tidak semua textbox menggunakan VAL.

Pertama, untuk textbox berat dan textbox tinggi di konversi maka secara otomatis kedua textbox tersebut bertipe numeric

Lalu untuk mencari berat ideal didapat dari 110 – berat, hasil tersebut diberikan ke textbox berat ideal (text3) secara otomatis menjadi numeric juga.



Untuk pencarian keterangan pada label4, dibuatkan listing :







Text3 tersebut adalah text berat ideal. Mengapa text tsb tidak dikonversi?? Jawabannya adalah karena pada saat perhitungan 110-berat akan menghasilkan nilai yang numeric. Oleh karena itu pada saat pemberian syarat tidak di konversi lagi.


2.  Dengan cara Mengkonversi melalui Builder

a.klik kanan pada textbox => pilih builder















b. Data type pilih numeric
       

Perhatikan untuk setiap textbox yang di ubah menjadi numeric. Posisinya berada di sebelah kanan, dan hal ini yang membuat perhitungan tidak perlu di konversi lagi

» Read more → Tips membuat program sederhana Visual Foxpro