@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
1
Modul belajar pemograman mandiri .. Indra Erawan Sanjaya
VB6 Program Penjualan
My emotion….Naruto
Update: 15-OKTOBER-2012
Indra erawan sanjaya
Dosen programming parttimer,
Aktif dalam membangun system untuk system Produksi Penuh ramah, manis, periang, hangat, harmonis, penyayang, seru, lucu, imut, aseek, dll…… Semoga ilmu ini membawa mamfaat & mendapat RIDHO dari ALLAH SWT…… amin
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
2
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
3
Daftar isi PDF ini
No Materi Halaman
1 Halaman muka 1
2 Halaman pembuka 2
3 Daftar isi 3
4 Untuk siapa PDF ini 6
5 [Foto] Yuuuuk menikah.. jangan pacaran 7
6 Ane nih; sekarang & dulu 8
7 [Judul] membuat program penjualan dan stok dengan SQL Server 10
8 [ngobrol] sekitar database access, sql server 12
9 [Ngobrol] Daftar jenis field dan Gambarang koneksi ke database 13,14
OLEH DATA DASAR
10 Olah dasar database sql serve 2000 16
Membuat database SQL server,lokasi 17,18
Membuat table, edit, input table sql server 19,20
Attach database, Copy database ke flashdisk 21,24
Input data, Edit field SQL server 18
11 [Foto] Mirip afgan 26
12 VB6: Program penjualan dan Stok toko 28
13 Membuat database toko 29
14 Membuat koneksi ODBC (jika menggunakan odbc, latihan PDF ini dengan OLEDB) 31
15 [Info penting] Pengaturan regional setting tanggal dan angka 36
16 VB6 ADODB penjualan 38
17 Membuat PROCEDURE, ADODB dan aktifasi code REFERENSI ADODB 39,42,43
18 Input data baru; data barang 45
Kode koneksi ke SQL Server dengan modul 48
Kode-kode di form,procedure,di tombol untuk input data baru 55-60
19 Penyempurnaan kode dan form 61
Membuat perpindahan cusor dengan enter 62-67
Membatasi panjang input untuk type data varchar/text 69-70
20 Menampilkan data dengan LISTVIEW 72-78
21 Mencari data INTERAKTIVE 79-82
22 Code dasar CARI, HAPUS, EDIT dan UPDATE data 86
Mencari data 88
Meng-DELETE data 90
Meng-Edit data & Simpan UPDATE data 91,92
23 Latihan-latihan 1 table (Input,Edit,Delete,Find,Listview, Cari interaktiv) 95,96
24 Membuat CRYSTAL REPORT 1 table 98
Susunan report dan design 102-104
Langkah membuat report 105-111
Design report : halaman, tgl, jam, logo, format,grandtotal,kertas,margin 112-121
25 Menampilkan report dengan VB6 122-126
26 Latihan-latihan report ; laporan data customer 127
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
4
27 VB6 dengan STORE PROCEDURE (SP) sql server 129
[Ngobol] Gambaran store procedure 130
Code vb6 untuk store procedure; input data baru dan update 131-138
Membuat store procedure di SQL Server 139-142
PROSES TRANSAKSI
1 Transaksi dasar; penambahan table di database 148-151
2 [Ngobrol] Informasi seputar transaksi 153-157
3 Perintah SQL untuk update transaksi 158
4 Transaksi dasar stok 160
Form pembelian update stok barang dan code transaksi 161-169
5 Latihan transaksi dasar : Pengambilan uang ATM 171
6 Login dan Menu 174
Login biasa (Tanpa database) 176
Login menggunakan database 177
Menu utama 179
7 Transaksi master detail (1-many) dengan LISTVIEW 182
Form master-detail penjualan 184
Code modul, procedure di form 185-194
Code di tombol penjualan 195-200
Code di tombol barang (Detail) 201-204
8 Membuat Pencarian form interaktif 206-209
9 Cetak Bon stuk penjualan dengan cystal report 211
Tampilan struk penjualan 212
Langkah pembuatan struk penjualan dengan crystal report 8.5 213-224
10 Laporan transaksi harian dengan seleksi 2 tanggal (RANGE TGL) 227-229
11 [Info penting] Perubahan regional setting 230
12 Selesai – Alhamdulillah.. 231
13 [Foto-foto] Beberapa foto-foto sewaktu mengajar, kenang-kenangan selesai mengajar
233-236
14 [Foto] ane 237
DONASI
15 Jika ingin ber-DONASI silahkan di BCA rekening ane… 238
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
5
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
6
UNTUK SIAPA PDF INI
PDF ini ane susun untuk mengajar di beberapa kampus di bekasi, jurusan komputer
PDF dibuat bagi pelajar, mahasiswa atau kalangan
umum yang MULAI belajar visual basic database untuk tingkat DASAR dan tingkat MENENGAH
Silahkan.. PDF ini bebas di sebarkan, di copy untuk
kepentingan belajar dan mengajar
Semoga PDF ini BERMAMFAAT..
Update ter-akhir pdf Bekasi, 19-11-2012
Indra_Keren
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
7
Hayoooo.. MENIKAH jangan PACARAN.. ^_^
Dengan MENIKAH hati menjadi tenang karena si –yayang- sudah HALAL diapain aja boleh…disentuh, dipegang, diremas,dibejeg bejeg, dilipat dll.. karena menikah Sunnah
Rosul mendapat PAHALA & RIDHO dari Allah SWT bukan pacaran. Bagi pemuda/i yg belum sanggup untuk menikah & ber-tegangan TINGGI dianjurkan
oleh Nabi untuk BERPUASA bukan pacaran.. MENIKAH-lah diusia MUDA (umur 20-25) karena DARAH lagi PANAS-PANAS nya dan
membuat pribadi jadi matang dewasa serta memberikan Semangat juang pantang menyerah..
(saya nikah diumur 25 thn-lg GANTENG GANTENG nya.. lihat poto
dibawah)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
8
Ane nih.. sekarang & dulu…
Wihhhhhh… nih orang
KEREN banget.. mirip Gue
lagi.., wah pasaran MODEL
bisa turun nih..
Bisa minta Tanda
Tangannya ga yah… atau
Foto bareng dehhh..
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
9
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
10
Visual Basic 6 Terapan
Membuat program toko:
PENJUALAN &
STOK
Database: SQL Server 2000 Tools : Visual Basic 6
Report : Crystal report 8.5
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
11
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
12
*Ngobrol dulu: DATABASE Ngobrol-ngonrol tentang database yang sering digunakan yuuukkkkkkkkkkkkkkkk….
ACCESS Adalah database BUKAN SERVER, database yang mudah, ringan, tidak memerlukan installasi, maintenance database mudah, dll untuk digunakan dalam pemograman. Access juga ada dalam paket Microsoft OFFICE jadi hampir semua computer mempunyai database Access VERSI ACCESS Versi access mulai access 97, 2000, 2002, 2003, 2007 dan seterusnya mengikuti versi ms.Office. Tapi untuk keperluan pemograman database dari pengalaman yang sudah-sudah… lebih baik menggunakan VERSI 2003 (Office 2003) CONTOH SYSTEM Program – program hanya dalam 1 departemen, usaha kecil, UKM, sekalipun lintas dept. tapi tidak memerlukan data yang besar. Contohnya: usaha-usaha kecil, program toko, program untuk service HP, Program penjualan konter, Program gudang, Program apotek, dll
SQL SERVER Adalah database SERVER untuk SKALA MENENGAH ~ BESAR, memang dipersiapkan untuk menangani system yang luas dan komplek. VERSI SQL SERVER Versi SQL server dimulai dari SQL server 7, SQL 2000 versi ini adalah favorit para programmer karena pada versi ini database tidak membutuhkan SPEK KOMPUTER yang tinggi dan TIDAK membutuhkan FRAMEWORK, SQL 2005, SQL 2008 mulai versi 2005 database SQL membutuh spek computer yang tinggi dan membutuhkan FRAMEWORK 2.0 ke-atas VERSI GRATIS SQL SERVER (Express) SQL server mempunyai versi GRATIS… yah benar kita TIDAK PERLU MEMBAYAR LISENCE ke Microsoft karena memang betul2 gratis, bias digunakan untuk edukasi, pribadi ataupun pengembangan system. Yaitu versi SQL 2005 EXPRESS (maximum ukuran database 4 Gb), SQL 2008 EXPRESS (maximum ukuran database 10 Gb) CONTOH SYSTEM Program – program besar yang biasanya sudah lintas dept, melibatkan banyak user. Contoh: program pabrik /perusahaan (penjualan, pembelian, gudang, dll), SAP, dll DATABASE LAINNYA : ORACLE, DB2, MYSQL, POSTGRESQL, FIREBIRD, Dll
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
13
*Ngobrol dulu: DAFTAR JENIS FIELD
Disini menampilkan daftar FIELD yang ada di ACCESS dengan field serupa pada SQL SERVER, ini berguna jika ingin meng-konversi database dari access ke sql server ataupun untuk code2 lainnya. Ini merupakan field2 yang sering digunakan dalam pemograman
No ACCESS SQL SERVER KETERANGAN
1 TEXT VARCHAR Field untuk text. Contoh: nama, kode, alamat, dll
2 DATETIME DATETIME Field untuk tanggal. Contoh: tanggal lahir, tanggal pendaftaran, Tgl pembayaran SMALLDATETIME tahun terbatas DATETIME tahun tidak terbatas
3 AUTONUMBER INT (increment=1)
Field untuk nomer urut otomatis Setiap data bertambah, maka table otomais akan membuat angka urut yg unik
4 NUMBER (DOUBLE)
FLOAT MONEY
Field untuk angka dengan DESIMAL Contoh: harga untuk matauang selain RP, berat barang, subtotal invoice, total penjualan, dll MONEY angka dg 4 desimal FLOAT jumlah decimal bebas (bias angka bulat/ ada decimal nya jad flexible)
5 NUMBER (LONG INTEGER)
FLOAT
Field untuk angka BULAT (tidak ada decimal) Contoh: harga dalam RP, jumlah barang
6 OLE IMAGE
Field untuk menyimpan gambar
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
14
*Ngobrol dulu: KONEKSI VB ke DATABASE
Untuk koneksi VB ke database ada banyak cara lohhhh; 1.dengan OLEDB 2.dengan ODBC ILUSTRASI : OLEDB ILUSTRASI : ODBC (favorit ane nih…)
Visual Basic Database
Code koneksi
database ada
di MODULE
Visual Basic
Database
Code koneksi
database ada
di MODULE
ODBC di control
panel windows
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
15
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
16
OLAH DASAR Database SQL Server 2000
a.membuat database b.attach database c.copy file Database ke flashdisk/lokasi lain d.registrasi local komputer
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
17
a.Membuat Database
1.Membuat Database SQL Server
(Klik kanan di database + NEW Database)
2.Mengetik Nama Database
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
18
(Klik NAMA DATABASE nya)
3.Menyimpan Lokasi File Database SQL Server
Klik kotak.. Location, dan pilih folder
untuk simpan database
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
19
4.Membuat TABLE
(Klik kanan di TABLE + pilih NEW TABLE)
5.Input FIELD
(Ketik nama FIELD dan TYPE nya, jika sudah KLIK ICON SAVE)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
20
6.Input DATA di table
(klik KANAN di table BARANG + OPEN TABLE + RETURN ALL ROWS )
INGAT… input datanya per BARIS , jangan per KOLOM
7.Edit FIELD (modifikasi field : hapus/tambah)
( Klk KANAN di table BARANG + DESIGN TABLE )
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
21
b.Attach Database
Memasukkan file database SQL server kita kedalam Enterprise Manager SQL Server
1
2
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
22
3.ambil file database sql nya (*.MDF)
3
4
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
23
B
5
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
24
c.Copy file db ke flashdisk
Jika ingin meng-copy file database ke FLASHDISK / ke tempat lainnya, langkah sbb:
1.MATIKAN SERVICE SQL SERVER
1
2
3
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
25
Service sql sudah mati…. Sekarang tinggal COPY DEH FILE DATABASE SQL nya ke FLASHDISK
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
26
=
Mirip …. Sama2 keren, BEDA tipis..
Ihhhh dosen nya
manis Beuttt..
Dosennya mirip
AFGAN dehh
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
27
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
28
VB6. Program Penjualan & Stok Toko
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
29
1.SYSTEM PENJUALAN TOKO
Database SQL Server
Table: BARANG No NAMA FIELD JENIS LEBAR KET
1 KDBARANG VARCHAR 20 PrimaryKey
2 NMBARANG VARCHAR 50
3 HARGA FLOAT
4 STOK FLOAT
Table: CUSTOMER No NAMA FIELD JENIS LEBAR KET
1 KDPELANGGAN VARCHAR 20 PrimaryKey
2 NMPELANGGAN VARCHAR 50
3 ALAMAT VARCHAR 100
4 TELP VARCHAR 50
5 KONTAK_PERSON VARCHAR 50
Isi data sebanyak 5 data
Untuk SQL SERVER jangan lupa untuk MERUBAH LOKASI PENYIMPANAN DATA DATABASE nya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
30
ODBC
(jika koneksi database menggunakan ODBC)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
31
2.membuat koneksi ODBC
Buka CONTROL PANEL ADMINISTRATION TOOLS ODBC
(Klik tombol ADD )
1
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
32
(Klik SQL SERVER –untuk SQL server 2000--, jika menggunakan SQL2005, pilih SQL NativeClient)
(Ketik NAME ODBC_TOKO ..untuk nama odbc nya,nama ini digunakan dalam MODULE VB)
(Ketik SERVER (local) atau TITIK ―.‖ …karena LOKASI DB di local komp, jika di server,
maka ketik NAMA SERVER nya
2
3
4
5
6
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
33
(Untuk LOCAL, klik NEXT aja, tapi jika DB di SERVER di input USER-PASSWORD nya)
(ketik/ pilih NAMA DATABASE nya –9) NEXT – FINISH - OK
7
8
9
10
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
34
Hasil setting ODBC
Muncul nama baru ODBC_TOKO yang baru kita buat
Jika ada MODIFIKASI klik tombol CONFIGURE
Penting 1
Nama Odbc (ODBC_TOKO) akan digunakan dalam MODULE VB, Jadi NAMA ODBC ini akan sama dengan
code koneksi di modul (jangan sampe SALAH)
Penting 2
Nama Odbc (ODBC_TOKO) harus dibuat terlebih dahulu di Komputer nya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
35
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
36
Info penting; Sebaiknya jika menggunakan SQL Server
REGIONAL SETTING dirubah ke ENGLISH UNITED STATED, agar format angka dan tanggal menjadi format
bahasa inggris
Control Panel + +
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
37
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
38
Vb6 ADODB
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
39
yang sering dilakukan..
MEMBUAT PROCEDURE
Membuat procedure yang umum ada di 2 lokasi:
(1) Procedure di FORM a. Procedure untuk form itu sendiri (PRIVATE / SUB) b. Procedure hanya di kenal di form itu saja
(2) Procedure di MODULE/ClassModule
a. Procedure umum (PUBLIC) b. Bisa digunakan di semua form dalam project
Badan procedure (umum) :
SUB NamaProcedure() …. …. END SUB
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
40
Cara Membuat PROCEDURE di FORM;
1. Bisa dengan KLIK 2x di FORM // klik ICON VIEW CODE (kotak project) 2. Lalu muncul kotak kode…. Geser ke bawah sampe mentok // menu=tool+add proc 3. Lalu ketikan nama procedure nya
Cara Membuat PROCEDURE di MODULE;
1. Bikin module baru (Menu=Project+Add module) // Buka module nya 2. Cari ruang kosong 3. Langsung aja ketik nama procedurenya,
Contoh:
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
41
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
42
Tehnik pemograman VB database dg AdoDB
3.sekitar ADODB
Tahapan menggunakan ADODB dalam pemograman, Secara umum tahapan Adodb yang biasa kita gunakan dalam CODE sbb :
No Langkah Keterangan
DIFINISI
0 Jangan LUPA meng-aktifkan REFERENSI ADODB nya
Menu= Project + Reference
1 Difinisikan VARIABLE PUBLIC KONEKSI untuk: -Koneksi DATABASE
(code di module) Public Conn As ADODB.Connection
2 Difinisikan VARIABLE PUBLIC TABLE untuk: -Koneksi MEMBUKA TABLE Jumlah VARIABLE tergantung kebutuhan untuk membuka jumlah table nya. Misalnya jika hanya ada 1 table maka VARIABEL juga cukup 1 saja, jika ada 3 table, maka VARIABLE bisa dibuat 3
(code di module) Public Rs As ADODB.Recordset Atau Public Rs_Barang As ADODB.Recordset Public Rs_supplier As ADODB.Recordset
3 Membuat KONEKSI DATABASE di MODULE (code di module) Sub BUKA_DB
PENGGUNAAN, MEMBUKA DATA 4 Panggilah KONEKSI pada saat ingin meng-akses
data/table (Code di Form) Call BUKA_DB
5 Buat SQL Query untuk membaca table/ mengambil data yg diperlukan
Aa=” SELECT……”
6 Aktifkan VARIABEL TABLE Set Rs = New ADODB.Recordset
7 Buka TABLE nya Rs.Open AA, Conn, adOpenStatic, adLockOptimistic
8 ….jika telah selesai, jangan lupa TUTUP KEMBALI variable table nya, agar dapat digunakan kembali
Rs.Close Set Rs = Nothing
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
43
a.ADODB. Aktifkan referensi Buatlah sebuah PROJECT Aktifkan REFERENSI ADODB terlebih dahulu, sbb:
(Klik menu PROJECT + REFERENCES )
[X] Microsoft active data objects 2.8 Library [X] Microsoft active data objects RECORDSET 2.8 Library
penting
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
44
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
45
INPUT DATA
BARU
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
46
1.Membuat FORM DASAR: INPUT DATA BARANG
INI adalah FORM DASAR untuk input data baru. Form TIDAK DIGABUNGKAN dengan fungsi-fungsi yang lain, hanya INPUT-SAVE saja.
Setelah MENGERTI, maka fungsi TAMBAH DATA akan digabungkan dengan fungsi-fungsi yang lain (Edit,Delete, Find)
LANGKAH PADA SAAT proses SIMPAN DATA BARU:
1. CEK PRIMARY KEY, apakah data sudah ada? Jika sudah ada
Munculkan pesan & batalkan proses
2. CEK input data ANGKA jika ada input angka (contohnya=
jumlah,harga,stok,dll) apakah user input data nya sudah benar. Gunakan fungsi ISNUMERIC, jika IsNumeric bernilai FALSE artinya user input data angka salah (ada hurufnya), batalkan proses
3. Setelah semua CEK ok, baru data di SIMPAN
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
47
Form input data barang baru:
Name:
TOMBOL INPUT, TOMBOL_SAVE, TOMBOL_CANCEL, TOMBOL_CLOSE
DATA BARANG
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
48
Membuat
KONEKSI ke SQL server
di MODULE
TAMBAHKAN MODULE : menu PROJECT + MODULE
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
49
CONTOH – CONTOH KONEKSI KE DATABASE
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
50
Modul koneksi ke SQL 2000 (pake ini PDF)
Ini BUDI ehhhh…salah; ini adalah code untuk koneksi ke database
Public Conn As ADODB.Connection '/ untuk koneksi keDB Public Rs As ADODB.Recordset '/untuk buka TABLE,bisa banyak Public KONEKSI_string As String
'/----- ini adalah PROCEDURE untuk koneksi ke database
Sub BUKA_db()
On Error GoTo CEK Set Conn = New ADODB.Connection Conn.CursorLocation = adUseClient
KONEKSI_string = "Provider=SQLOLEDB.1;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=TOKO;" & _
"Data Source=(local)" '/ Jika koneksi TERPUTUS (0), maka BUKA kembali
If Conn.State = 0 Then
Conn.Open KONEKSI_string
End If Exit Sub '/ Jika ada ERROR munculkan pesan CEK: MsgBox "KONEKSI ke DATABASE ERROR : " & Err.Description, vbCritical End
END SUB
Kode string ini diambil
dari ADODC
TOKO=nama DB
DataSource=nama
komp.server
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
51
Modul koneksi ke SQL 2005
Ini BUDI ehhhh…salah; ini adalah code untuk koneksi ke database dengan tehnik ODBC
Public Conn As ADODB.Connection '/ untuk koneksi keDB Public Rs As ADODB.Recordset '/untuk buka TABLE,bisa banyak Public KONEKSI_string As String
'/----- ini adalah PROCEDURE untuk koneksi ke database
Sub BUKA_db()
On Error GoTo CEK Set Conn = New ADODB.Connection Conn.CursorLocation = adUseClient
KONEKSI_string = "Provider=SQLNCLI.1;" & _ "Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=TOKO;" & _
"Data Source=(local)" '/ Jika koneksi TERPUTUS (0), maka BUKA kembali
If Conn.State = 0 Then
Conn.Open KONEKSI_string
End If Exit Sub '/ Jika ada ERROR munculkan pesan CEK: MsgBox "KONEKSI ke DATABASE ERROR : " & Err.Description, vbCritical End
END SUB
Kode string ini diambil
dari ADODC
TOKO=nama DB
DataSource=nama
komp.server
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
52
Modul koneksi DATABASE SQL dg ODBC
Ini BUDI ehhhh…salah; ini adalah code untuk koneksi ke database dengan tehnik ODBC
Public Conn As ADODB.Connection '/ untuk koneksi keDB Public Rs As ADODB.Recordset '/untuk buka TABLE,bisa banyak Public KONEKSI_string As String
'/----- ini adalah PROCEDURE untuk koneksi ke database
Sub BUKA_db()
On Error GoTo CEK Set Conn = New ADODB.Connection Conn.CursorLocation = adUseClient
KONEKSI_string = "DSN=ODBC_TOKO;uid=;pwd="
'/ Jika koneksi TERPUTUS (0), maka BUKA kembali
If Conn.State = 0 Then
Conn.Open KONEKSI_string
End If Exit Sub '/ Jika ada ERROR munculkan pesan CEK: MsgBox "KONEKSI ke DATABASE ERROR : " & Err.Description, vbCritical End
END SUB
Kode string ini diambil
dari ADODC
ODBC_TOKO= Adalah nama ODBC
yang kita buat di ODBC – CONTROL
PANEL. Yg isi nya meng-hubungkan ke
DATABASE (lihat panduan bikin
odbc)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
53
Modul koneksi ke ACCESS 2000/2003
Ini BUDI ehhhh…salah; ini adalah code untuk koneksi ke database dengan tehnik ODBC
Public Conn As ADODB.Connection '/ untuk koneksi keDB Public Rs As ADODB.Recordset '/untuk buka TABLE,bisa banyak Public KONEKSI_string As String
'/----- ini adalah PROCEDURE untuk koneksi ke database
Sub BUKA_db()
On Error GoTo CEK Set Conn = New ADODB.Connection Conn.CursorLocation = adUseClient
KONEKSI_string = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\TOKO.mdb;" & _
"Persist Security Info=False"
'/ Jika koneksi TERPUTUS (0), maka BUKA kembali
If Conn.State = 0 Then
Conn.Open KONEKSI_string
End If Exit Sub '/ Jika ada ERROR munculkan pesan CEK: MsgBox "KONEKSI ke DATABASE ERROR : " & Err.Description, vbCritical End
END SUB
Kode string ini diambil
dari ADODC
TOKO=nama DB
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
54
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
55
Code di Form
Code di FORM
Code : FORM – LOAD
'/-----PANGGIL PROCEDURE UNTUK KOSONGKAN INPUT
CALL KOSONG '/-----MUNCULKAN TOMBOL TOMBOL
Me.TOMBOL_input.Visible = TRUE Me.TOMBOL_CLOSE.Visible = TRUE '/-----HILANGKAN TOMBOL TOMBOL Me.TOMBOL_simpan.Visible = FALSE Me.TOMBOL_cancel.Visible = FALSE
Code PROCEDURE
Procedure untuk mengosongkan input
SUB KOSONG() Me.TXT_KDBARANG = "" Me.TXT_NMBARANG = "" Me.TXT_HARGA = "" Me.TXT_STOK = "" END SUB
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
56
Code di Form
Code di
TOMBOL
Code TOMBOL INPUT
'/-----PANGGIL PROCEDURE UNTUK KOSONGKAN INPUT
CALL KOSONG '/-----HILANGKAN TOMBOL TOMBOL
Me.TOMBOL_input.Visible = False Me.TOMBOL_CLOSE.Visible = False '/-----MUNCULKAN TOMBOL TOMBOL Me.TOMBOL_simpan.Visible = True Me.TOMBOL_cancel.Visible = True '/-----LETAKKAN KURSOR DI KDBARANG
Me.TXT_KDBARANG.Enabled = True Me.TXT_KDBARANG.SetFocus
Pastikan data PK aktif.
KODE BARANG diaktifkan.
ENABLED=TRUE
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
57
Code TOMBOL SAVE
'/=====================================/
'/ #1, CEK INPUT DATA Primary Key
'/ jika kode barang blm diinput,beri pesan '/=====================================/ If ME.TXT_KDBARANG=‖‖ Then MsgBox "KODE BARANG BELUM DIINPUT", vbInformation Exit Sub End If
'/=====================================/
'/ #2, CEK INPUT ANGKA
'/=====================================/
If IsNumeric(Me.TXT_HARGA) = False Then
MsgBox "INPUT HARGA DENGAN ANGKA", vbInformation Exit Sub End If
If IsNumeric(Me.TXT_STOK) = False Then
MsgBox "INPUT STOK DENGAN ANGKA", vbInformation Exit Sub End If
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
58
'/=====================================/
'/ #3, CEK primarykey tidak boleh sama
'/=====================================/ Call BUKA_db IMUT = "" IMUT = " SELECT * FROM BARANG " & _
" WHERE KDBARANG='" & Me.TXT_KDBARANG & "' "
Set Rs = New ADODB.Recordset Rs.Open IMUT, Conn, adOpenStatic, adLockOptimistic
If Not Rs.EOF Then ‗--Apakah data ada?
'/====================================/ '/ kode sudah ada '/ proses di batalkan, keluar kembali ke form '/====================================/ MsgBox "KODE BARANG SUDAH ADA..", vbInformation Exit Sub ‗—keluar dari code kembali ke form End If Rs.Close Set Rs = Nothing
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
59
'/=====================================/
'/ #4, SIMPAN DATA Dehhhh..
'/=====================================/ IMUT = ""
IMUT = " SELECT * FROM BARANG " & _
" WHERE KDBARANG='" & Me.TXT_KDBARANG & "' "
Set Rs = New ADODB.Recordset Rs.Open IMUT, Conn, adOpenStatic, adLockOptimistic
Rs.AddNew ‘--siapkan data baru Rs("KDBARANG") = Trim(Me.TXT_KDBARANG) Rs("NMBARANG") = Me.TXT_NMBARANG Rs("HARGA") = Me.TXT_HARGA Rs("STOK") = Me.TXT_STOK
Rs.Update ‘—simpan data
Rs.Close ‘—tutup table
Set Rs = Nothing ‘—hapus data dr memori '/=========================================================/ '/ atur kembali tombol tombol '/=========================================================/ '/-----MUNCULKAN TOMBOL TOMBOL
Me.TOMBOL_input.Visible = TRUE Me.TOMBOL_CLOSE.Visible = TRUE
PENTING. Input data
baru dengan
Rs.ADDNEW
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
60
'/-----MATIKAN TOMBOL TOMBOL Me.TOMBOL_simpan.Visible = FALSE Me.TOMBOL_cancel.Visible = FALSE MsgBox "DATA TELAH DI SIMPAN..", vbInformation
Code TOMBOL CANCEL
'/-----PANGGIL PROCEDURE UNTUK KOSONGKAN INPUT
CALL KOSONG '/-----MUNCULKAN TOMBOL TOMBOL
Me.TOMBOL_input.Visible = False Me.TOMBOL_CLOSE.Visible = False '/-----HILANGKAN TOMBOL TOMBOL Me.TOMBOL_simpan.Visible = True Me.TOMBOL_cancel.Visible = True MsgBox "CANCEL..", vbInformation
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
61
PENYEMPURNAAN
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
62
Membuat perpindahan
cursor ke textbox berikut
nya Jika di ENTER..
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
63
Ilustrasiiiiiiiiiiiiii….
Ada 2 cara tehnik :
1. Menggukan code : SETFOCUS
2. Menggunakan INDEX dan SENDKEYS ―{TAB}‖
Pada sata KURSOR
di TXT_KDBARANG
lalu kita ENTER
maka CURSOR
pindah ke
TXT_NMBARANG
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
64
Code di TEXTBOX:
TEHNIK 1: dengan SETFOCUS
Code : TXT_KDBARANG – KEYDOWN
‗/-----Jika di TEKAN ENTER di TXT_KDBARANG, ‗/-----maka cursor pindah ke TXT_NMBARANG
IF KEYCODE=VbKeyReturn THEN
Me.TXT_NMBARANG.Setfocus
END IF
Code : TXT_NMBARANG – KEYDOWN
‗/-----Jika di TEKAN ENTER di TXT_NMBARANG, ‗/-----maka cursor pindah ke TXT_HARGA
IF KEYCODE=VbKeyReturn THEN
Me.TXT_HARGA.Setfocus
END IF
…begitu seterusnya, disemua textbox: TXT_HARGA, TXT_STOK
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
65
TEHNIK 2: dengan TABINDEX
#1, SETTING TABINDEX Aturlah TABINDEX (di properties) masing2 textbox, buat URUT dari input pertama bernilai=1… sampai ke input akhir. Nomer urut ini merupakan URUTAN PERPINDAHAN CURSOR
1
2
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
66
TXT_KDBARANG tabindex = 1 TXT_NMBARANG tabindex = 2 TXT_HARGA tabindex = 3 TXT_STOK tabindex = 4
Begitu seterusnya sampai data terakhir….
#2, CODE DI TEXTBOX
Code : TXT_KDBARANG – KEYDOWN
‗/-----Jika di TEKAN ENTER di TXT_KDBARANG, ‗/-----maka jalankan fungsi ―TAB‖ ‗/-----yg MEMINDAHKAN CURSOR sesuai urutan TABINDEX
IF KEYCODE=VbKeyReturn THEN
SENDKEYS ―{TAB}‖ END IF
3 4
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
67
Code : TXT_NMBARANG – KEYDOWN
‗/-----Jika di TEKAN ENTER di TXT_NMBARANG, ‗/-----maka jalankan fungsi ―TAB‖ ‗/-----yg MEMINDAHKAN CURSOR sesuai urutan TABINDEX
IF KEYCODE=VbKeyReturn THEN
SENDKEYS ―{TAB}‖ END IF
Begitu seterus nya… di TXT_HARGA, TXT_STOK
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
68
PENYEMPURNAAN
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
69
Membatasi PANJANG input
data.. agar tidak melebihi
panjang field (khusus untuk type field text/varchar)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
70
Keterangan: Untuk type data FIELD VARCHAR; panjang input data di TEXTBOX harus sama (=) atau TIDAK BOLEH MELEBIHI panjang FIELD nya. Contoh; 1.Field KDBARANG mempunyai type VARCHAR lebar 20, jangan sampai pada saat input kodebarang datanya > 20 karakter, karena nanti akan error. Untuk itu kita setting PROPERTIES di TXT_KDBARANG, yaitu: MAXLENGTH = 20
Jadi untuk :
TXT_NMBARANG MaxLength = 50 (sesuai panjang FIELD)
HARGA dan STOK tidak perlu diatur maxlength nya karena TYPE data NUMBER
Inget nih… hanya type data TEXT / VARCHAR yang diatur MaxLEngth nya … yahhhhhhhhhhhh
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
71
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
72
2.Menampilkan data dg
LISTVIEW
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
73
Menampilkan data dari TABLE ke FORM LISTVIEW
LISTVIEW1
Name: TOMBOL_REFRESH Name: TXT_CARI
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
74
TAMBAH COMPONENT :
[v] Microsoft WINDOWS COMMON CONTROL 6.0 buat LISTVIEW
[v] Microsoft WINDOWS COMMON CONTROL 2.6 buat TANGGAL
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
75
Code di FORM
Buatlah PROCEDURE
Procedure menampilkan data dari sql ke listview
Sub TABLE_to_LISTVIEW() Call BUKA_db ‘—buka koneksi ke database
KEREN = "SELECT * FROM BARANG " ‘—pilih data barang
Set Rs = New ADODB.Recordset Rs.Open KEREN, Conn, adOpenStatic, adLockOptimistic ‘—buka table dg select..
If Not Rs.EOF Then ‘—cek apakah data nya ada
'/--------------------------------------------------------/ '/SETTING LISTVIEW '/--------------------------------------------------------/ With ListView1 .ListItems.Clear ‘—kosongkan isi listview .ColumnHeaders.Clear ‘—kosongkan judul kolom .View = lvwReport ‘—tampilan listview .FullRowSelect = True ‘—seleksi per baris penuh .GridLines = True .ColumnHeaders.Add , , "KODE BARANG", 1500 ‘—bikin JUDUL KOLOM .ColumnHeaders.Add , , "NAMA BARANG", 2500 ‘—sesuai field nya .ColumnHeaders.Add , , "HARGA", 1000, 1 ‘—1500,2500 =lebar kolom .ColumnHeaders.Add , , "STOK", 1000, 1 ‘—0=rata kiri, 1=kanan, 2=tgh End With
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
76
'/--------------------------------------------------------/ '/LOOPIING '/MASUKKAN DATA TABEL KE LISTVIEW '/--------------------------------------------------------/
Dim xx As ListItem
While Not Rs.EOF
'/ KET: '/ RS(“kdbarang”) , RS(“Nmbarang”) nama FIELD, '/ IsNULL fungsi untuk cek, apakah data NULL, karena jika NULL listview akan ERROR
Set xx = ListView1.ListItems.Add(, , Rs("KDBARANG")) xx.SubItems(1)=IIf(IsNull(Rs(“NMBARANG”)),"-", Rs("NMBARANG")) xx.SubItems(2) = IIf(IsNull(Rs(“HARGA”)), "-", Rs("HARGA")) xx.SubItems(3) = IIf(IsNull(Rs("STOK")), "-", Rs("STOK"))
Rs.MoveNext ‘/ baca data berikutnya Wend End If Rs.Close Set Rs = Nothing End Sub
Code di FORM
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
77
Procedure untuk MENAMPILKAN data di LISTVIEW ke FORM jika lisview di KLIK
Sub LISTVIEW_to_FORM() On Error Resume Next With Me.ListView1
Me.TXT_KDBARANG = .SelectedItem.Text ‘/kdbarang Me.TXT_NMBARANG = .SelectedItem.ListSubItems.Item(1) '/nmbarang Me.TXT_HARGA = .SelectedItem.ListSubItems.Item(2) Me.TXT_STOK = .SelectedItem.ListSubItems.Item(3) End With End Sub
Code di TOMBOL Code : TOMBOL REFRESH
'/-----Panggil procedure data table - listview
Call TABLE_to_LISTVIEW
Code di FORM Code : LISTVIEW1 - ItemClik
'/-----Panggil procedure listview KE FORM
Call LISTVIEW_ke_FORM
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
78
Code : FORM - Load
'/-----kosongkan textbox Call KOsong
'/-----atur tombol yg aktif pertama kali Me.TOMBOL_input.Visible = True Me.TOMBOL_simpan.Visible = False Me.TOMBOL_cancel.Visible = False Me.TOMBOL_CLOSE.Visible = True
'/-----munculkan data ke listview
Call TABLE_to_LISTVIEW
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
79
3.MENCARI
data INTERAKTIVE
(pas di ketik data yang cari, maka data hasil langsung ter-seleksi / ter-filter muncul di
form….
Seperti di kasir atau di kasir toko buku)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
80
MENCARI DATA INTERAKTIF (di ketik langsung muncul, filter data langsung)
Data KODE BARANG yang dicari, di KETIK di textbox ini Dan data akan LANGSUNG TER-FILTER di ListView
Code di FORM
Name: TXT_CARI
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
81
Buatlah PROCEDURE
Ket:Procedure menampilkan data dari sql ke listview secara INTERAKTIF
Sub CARI_DATA_INTERAKTIF () ON ERROR RESUME NEXT ‘—kalo ada error maka diabaikan Call BUKA_db ‘—buka koneksi ke database
‘-- buka table BARANG dg WHER dan LIKE untuk mencari INTERAKTIF
AA = " select * from BARANG " & _
" where KDBARANG LIKE '" & Me.TXT_CARI & "%' " & _ " order by KDBARANG" Set Rs = New ADODB.Recordset Rs.Open AA, Conn, adOpenStatic, adLockOptimistic ‘—buka table dg select..
If Not Rs.EOF Then ‘—cek apakah data nya ada
'/--------------------------------------------------------/ '/SETTING LISTVIEW '/--------------------------------------------------------/ With ListView1 .ListItems.Clear ‘—kosongkan isi listview .ColumnHeaders.Clear ‘—kosongkan judul kolom .View = lvwReport ‘—tampilan listview .FullRowSelect = True ‘—seleksi per baris penuh .GridLines = True .ColumnHeaders.Add , , "KODE BARANG", 1500 ‘—bikin JUDUL KOLOM .ColumnHeaders.Add , , "NAMA BARANG", 2500 ‘—sesuai field nya .ColumnHeaders.Add , , "HARGA", 1000, 1 ‘—1500,2500 =lebar kolom .ColumnHeaders.Add , , "STOK", 1000, 1 ‘—0=rata kiri, 1=kanan, 2=tgh End With
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
82
'/--------------------------------------------------------/ '/LOOPIING '/MASUKKAN DATA TABEL KE LISTVIEW '/--------------------------------------------------------/
Dim xx As ListItem
While Not Rs.EOF
'/ KET: '/ RS(“kdbarang”) , RS(“Nmbarang”) nama FIELD, '/ IsNULL fungsi untuk cek, apakah data NULL, karena jika NULL listview akan ERROR
Set xx = ListView1.ListItems.Add(, , Rs("KDBARANG")) xx.SubItems(1)=IIf(IsNull(Rs(“NMBARANG”)),"-", Rs("NMBARANG")) xx.SubItems(2) = IIf(IsNull(Rs(“HARGA”)), "-", Rs("HARGA")) xx.SubItems(3) = IIf(IsNull(Rs("STOK")), "-", Rs("STOK"))
Rs.MoveNext ‘/ baca data berikutnya Wend End If Rs.Close Set Rs = Nothing End Sub
Code di TEXTBOX Code : TXT_CARI – Change
Call CARI_DATA_INTERAKTIF
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
83
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
84
Mengatur tombol-tombol
Tombol mati dengan ENABLED
TOMBOL_NEW.Enaled=False
Tombol muncul/tidak dengan VISIBLE
TOMBOL_NEW.Visible=False
…Aturlah FORM yang sudah ada, sehingga USER menjadi jelas tombol-tombol mana saja yang
BOLEH DI KLIK atau TIDAK
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
85
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
86
3.Cari, Hapus Edit-
Update, data
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
87
Cari , Hapus, Edit-Update data
Name: TOMBOL_EDIT,
TOMBOL_UPDATE, TOMBOL_DELETE,
TOMBOL_CARI
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
88
CARI DATA
Code di TOMBOL CARIKODE
Code TOMBOL CARI
'/=========================================/ '/ INPUT DATA KODE BARANG YANG DICARI '/=========================================/ Dim CARI CARI = InputBox("INPUT KODE BARANG YANG DICARI :")
'/--JIKA TIDAK DI INPUT, MAKA BATALKAN PROSES If CARI = "" Then Exit Sub
End If '/--JIKA KODE BARANG DIINPUT, MAKA CARI KODE '/--buka koneksi ke database Call BUKA_db
'/--buka SQL; data barang dg WHERE untuk mencari KODE BARANG
KEREN = ""
KEREN = " SELECT * FROM BARANG “ & _
“ WHERE KDBARANG ='" & CARI & "' " Set Rs = New ADODB.Recordset Rs.Open KEREN, Conn, adOpenStatic, adLockOptimistic
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
89
'/--CEK, APAKAH DATA TIDAK ADA (EOF), '/--jika TIDAK ADA munculkan pesan, jika ADA munculkan DATA ke FORM
If NOT Rs.EOF Then '/--apakah data ada?
'/--data kodebarang ada, munculkan ke form Me.TXT_KDBARANG = Rs("KDBARANG") Me.TXT_NMBARANG = Rs("NMBARANG") Me.TXT_HARGA = Rs("HARGA") Me.TXT_STOK = Rs("STOK") Else
'/--data kodebarang TIDAK ADA, beri pesan MsgBox "DATA TIDAK ADA", vbInformation End If
Rs.Close Set Rs = Nothing
INFO: IF RS.EOF then Apakah data tidak ada
IF NOT RS.EOF then apakah data ada
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
90
DELETE DATA
Code di TOMBOL DELETE
Code TOMBOL DELETE
'/--- TANYA DULU ---/ KEREN = "" KEREN = MsgBox("APAKAH DATA AKAN DI HAPUS ?", vbQuestion + vbYesNo) If KEREN = vbNo Then Exit Sub End If '/==============================================================/ '/ DATA DI HAPUS ‗/ gunakan perintah sql: DELETE dengan WHERE untuk kreterianya '/==============================================================/ ‗/----- buka koneksi database Call BUKA_db
MANIS = ""
MANIS = " DELETE FROM BARANG " & _
" WHERE KDBARANG ='" & Trim(Me.TXT_KDBARANG) & "' " Conn.Execute MANIS '/-- EXECUTE Jalankan langsung perintah SQL
MsgBox "DATA TELAH DI HAPUS", vbInformation Call KOsonG '/--panggil procedure untuk kosongkan text
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
91
EDIT DATA
Untuk edit data TIDAK SEMUA DATA BOLEH di edit.
Data PRIMARYKEY TIDAK BOLEH DI EDIT
Mangkanya kita ME-NON AKTIFKAN KODE BARANG supaya TIDAK BISA DI EDIT
Dan jika input data yang baru; KODE BARANG DIAKTIFKAN kembali
Code di TOMBOL EDIT
Code TOMBOL EDIT
'/--- data KDBARANG adalah PRIMARYKEY yang TIDAK BOLEH BERUBAH '/--- maka pada saat di EDIT, TEXTBOX nya kita MATIKAN
Me.TXT_KDBARANG.Enabled = False ME.Txt_NMBarang.SetFocus '/--- Letakkan kursor
'/--- ATUR TOMBOL YG MUNCUL Me.TOMBOL_input. VISIBLE = False Me.TOMBOL_simpan. VISIBLE = False Me.TOMBOL_cancel. VISIBLE = False Me.TOMBOL_edit.VISIBLE = False Me.TOMBOL_delete. VISIBLE = False Me.TOMBOL_cari. VISIBLE = False Me.TOMBOL_update. VISIBLE = True
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
92
UPDATE DATA
Code di TOMBOL UPDATE
Code TOMBOL UPDATE
'/=========================================================/
'/ #1, CEK INPUT ANGKA dg perintah IsNumeric
'/=========================================================/
If IsNumeric(Me.TXT_HARGA) = False Then
MsgBox "INPUT HARGA DENGAN ANGKA", vbInformation Exit Sub End If
If IsNumeric(Me.TXT_STOK) = False Then
MsgBox "INPUT STOK DENGAN ANGKA", vbInformation Exit Sub End If '/=========================================================/
'/ #2, UPDATE DATA
'/=========================================================/
Call BUKA_db ‘/--buka koneksi ke database
IMUT = ""
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
93
'/ buka data BARANG dg sql: SELECT menggunakan WHERE '/ untuk seleksi/kreteria per KODE BARANG yg akan di update
IMUT = " SELECT * FROM BARANG " & _
" WHERE KDBARANG='" & Me.TXT_KDBARANG & "' "
Set Rs = New ADODB.Recordset
Rs.Open IMUT, Conn, adOpenStatic, adLockOptimistic
'/--- simpan data ke TABLE
Rs("KDBARANG") = Me.TXT_KDBARANG
Rs("NMBARANG") = Me.TXT_NMBARANG
Rs("HARGA") = Me.TXT_HARGA
Rs("STOK") = Me.TXT_STOK
Rs.Update '/ ---UPDATE save
Rs.Close
Set Rs = Nothing MsgBox "DATA TELAH DI UPDATE..", vbInformation '/--- ATUR TOMBOL YG MUNCUL
Me.TOMBOL_input. VISIBLE = TRUE Me.TOMBOL_cancel. VISIBLE = TRUE Me.TOMBOL_edit.VISIBLE = TRUE Me.TOMBOL_delete. VISIBLE = TRUE Me.TOMBOL_cari. VISIBLE = TRUE Me.TOMBOL_simpan. VISIBLE = FALSE Me.TOMBOL_update. VISIBLE = FALSE
TIDAK ADA kode
RS.AddNew
Karena ini bukan menambah data,hanya merubah data yg ada
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
94
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
95
TUGAS Buatlah form customer
Lengkap dengan tombol + listview + pencarian interaktif +Maxlength+ ENTER
Cari interaktif NAMA CUSTOMER
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
96
TUGAS Buat DATABASE : PENJUALAN_KU Table : JUAL (Data tidak perlu diiinput) Nama Field Type Lebar Ket NO_JUAL Varchar 10 PrimaryKey TANGGAL DateTime NAMA_PELANGGAN Varchar 50 NAMA_BARANG Varchar 50 HARGA Float JUMLAH Float SUBTOTAL Float
Buat PROJECT BARU dan form VB sbb :
No.penjualan tidak boleh sama
SUBTOTAL = HARGA * JUMLAH kode di tulis di TOMBOL HITUNG
Lengkapi dengan ENTER + MaxLength +Cek numeric + Pengaturan tombol aktif ,dll. Supaya PROGRAM SIAP DI JUAL…
DtPicker1 untuk tgl (tambah component= micr.windows commond ctrl 2.6
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
97
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
98
Crystal Report 8.5
Dengan
ane
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
99
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
100
Crystal report
Langkah:
1. Buat REPORT DESIGN nya dulu, dengan crystal report
2. Buat FORM VB; tambahkan komponen :
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
101
Membuat Report
DAFTAR BARANG Tampilan report:
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
102
KETERANGAN DETAIL REPORT
1 : menambah JUDUL laporannya 2 : menyisipkan gambar 3 : membuat TGL CETAK LAPORAN dan NOMER HALAMAN LAPORAN 4 : membuat GARIS / KOTAK & FORMAT 5 : membuat GARIS PENUTUP PADA AKHIR DATA LAPORAN 6 : FORMAT angka ribuan 7 : FORMAT tanggal 8 : membuat NOMER URUT RECORD
1 2
3
4
5 6 7
8
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
103
SUSUNAN Form & Report
LANGKAH: Untuk membuat REPORT kita mempunyai susunan sbb :
1. MEMBUAT DESIGN CRYSTAL REPORT terlebih dahulu di
Crystal Report
2. lalu.. MEMBUAT FORM REPORT di VB
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
104
a.Membuat DESIGN REPORT
KETERANGAN RUANG DESIGN: REPORT HEADER : judul di cetak di halaman-1 (diatas) PAGE HEADER : judul di cetak DI SEMUA HALAMAN (diatas) DETAIL : untuk data nya (FIELD) REPORT FOOTER : keterangan/catatan di cetak di HALAMAN AKHIR DATA LAPORAN (di bawah) PAGE FOOTER : keterangan/catatan di cetak di DISEMUA HALAMAN (di bawah) CONTOH DATANYA: REPORT HEADER : cover buku (di cetak hanya 1 x, di awal laporan) PAGE HEADER : judul laporan, nomer halaman DETAIL : untuk data nya REPORT FOOTER : footnote buku (di cetak di akhir, GRANT TOTAL), garis akhir laporan PAGE FOOTER : nomer halaman, catatan kaki, SUBTOTAL per HALAMAN
Grand total stok
Tanggal, Halaman
Nomer urut record
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
105
b.Langkah bikin Report
1) Buka crystal report
TAMPILAN :
1
2
3
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
106
7
4
5
6
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
107
8
8.1
8.2
Pilih jenis koneksi nya;
OLEDB
Untuk SQL2000 pilih :
Microsoft OLEDB..
Jika pake SQL2005,2008
pilih: SQL Native Client
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
108
Hasilnya:
9
10
8.3
8.4
8.5
8.6
11
Ketik NAMA SERVER; ketik
(LOCAL) jika DB di kompi
sendiri
Ketik / pilih nama
database nya
Jika koneksi OK, maka
nama2 TABLE akan
muncul. PILIH TABLE yg
akan dipake..
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
109
Hasilnya TABLE BARANG ter-ambil, dan muncul di kota report
PILIH-LAH FIELD yg akan ditampilkan ke report, lalu klik ADD atau ADD ALL (semua field).
12
13
Table BARANG telah di
ambil untuk laporan
14
Ambil FIELD2 untuk
laporan
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
110
Jika SUDAH klik TAB STYLE, jangan KLIK TOMBOL NEXT (design report amburadol)
Selesai…
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
111
HASIL NYA (masih polos belum di per-cantik) :
PREVIEW
\
DESIGN:
Simpanlah file laporan barang ini dengan nama
LAP_BARANG
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
112
c.Design report
TOOLBAR UMUM
FIELD EXPLORER sisip NOMER RECORD, NOMER HALAMAN, dll
(ab) Buat bikin JUDUL/ LABEL
(1) Buat bikin GARIS (2) buat bikin KOTAK
(3) buat SISIP GAMBAR
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
113
1.LEBARKAN RUANG PAGE HEADER
LEBARKAN ruang PAGE HEADER buat bikin judul, halaman, kotak, dll
2.AKTIFKAN ruang REPORT FOOTER
AKTIFKAN ruang Report Footer untuk GARIS AKHIR LAPORAN/GRANT TOTAL.
Jika TIDAK DIAKTIFKAN, maka garis/data yg ada didalamnya TIDAK MUNCUL
>>Klik kanan di ruang REPORT FOOTER + DON’T SUPPRESS
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
114
3.Membuat NOMER HALAMAN, NOMER URUT RECORD, TGL CETAK
Membuat NOMER HALAMAN, NOMER URUT RECORD dan TGL PRINT
1. KLIK FIELD EXPLORER 2. Pilihlah SPECIAL FIELD; ambil data yg di perlukan langsung TARIK KE REPORT 3. TARiiiiiiiiiiiiiiiiiiiiiiiikkkkkkkkkkkkkkkkkkkkkk ke report
SPESIAL FIELD YG SERING DIGUNAKAN : Page N of M nomer halaman 1 of 10
Page Number nomer halaman Print Time Cetak jam
Print Date Cetak tanggal Record Number nomer urut data
1
2
3
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
115
4.Insert GAMBAR untuk LOGO
MENU = INSERT + PICTURE
>> Pilih gambar nya + klik TOMBOL OPEN
1
2
4
3
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
116
FORMAT
di Crystal Report : KLIK KANAN di object nya + FORMAT
5. FORMAT ANGKA
>> KLIK KANAN di FIELD HARGA + FORMAT FIELD
1
2
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
117
3
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
118
6. FORMAT TANGGAL (dd-MMM-yyyy)
>> KLIK KANAN di FIELD TANGGAL + FORMAT FIELD
1
2
3
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
119
7.MEMBUAT GRANDTOTAL stok
Klik KANAN di FIELD STOK + INSERT + GRAND TOTAL + Klik OK
2 3
1
4
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
120
UKURAN KERTAS (A3,A4,Landscape, Potrait)
>> MENU : FILE + PRINTER SETUP
2
3
1
4
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
121
MARGIN KERTAS
(Margin atas, bawah, kiri, kanan)
>> MENU : FILE + PAGE SETUP
2
3
1
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
122
Vb. Form report
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
123
VB
FORM REPORT Laporan Barang
>> TAMBAHN COMPONEN CRYSTAL REPORT :
[v] Crystal Report Control
OPTION1
OPTION2
OPTION3
OPTION4
CRYSTALREPORT1
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
124
Code : TOMBOL PRINT
CALL BUKA_DB With CrystalReport1 '/---KONEKSI REPORT DG ODBC---/ .ReportFileName = App.Path & "\LAP_BARANG.RPT" .Connect = KONEKSI_STRING '/---SELEKSI DATA---/ If Me.Option1.Value = True Then .SelectionFormula = "" End If If Me.Option2.Value = True Then .SelectionFormula = "{BARANG.KDBARANG}='" & Me.Text1 & "' "
End If '/---TUJUAN PRINT---/ If Me.Option3.Value = True Then .Destination = crptToWindow If Me.Option4.Value = True Then .Destination = crptToPrinter '/---SETINGAN LAINNYA---/ . RetrieveDataFiles '/--REFRESH DATA .WindowState = crptMaximized '/--TAMPILAN PENUH .WindowShowRefreshBtn = True '/--TOMBOL REFRESH MUNCUL .Action = 1 '/--JALANKAN REPORT End With
SELESAI…..
Nama report yg akan
di tampilkan
.SELECTIONFORULA untuk
filter seleksi data
.CONNECT untuk
koneksi ke server nya
BARANG nama
table
KDBARANG
nama field
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
125
Ngobrol2 (Info) :
Memfilter laporan
( SELECTIONFORMULA)
.SelectionFormula = "{BARANG.KDBARANG}='" & Me.Text1 & "' "
DI APIT dg KURUNG KURUWAL {}
BARANG.KDBARANG nama TABLE dan nama FIELD seleksi nya
Jika ada 2 kondisi GUNAKAN PERINTAH AND
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
126
HASIL RUNNING :
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
127
Latihan Buatlah laporan data
customer
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
128
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
129
VB Dg
Store Procedure SQL Server
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
130
NGOBROL – NGOBROL :
STORE PROCEDURE adalah kumpulan code2 SQL untuk melakukan proses olah data,seperti: Menambah data (INSERT), Merubah data (UPDATE), hapus
data (DELETE), memilih data (SELECT), dll. Jadi VB akan MEMANGGIL store procredure yang ada di SQL Server untuk di
proses selanjutnya di FORM VB;
ILUSTRASI STORE PROCEDURE dan VB
TAHAPAN PENGETIKAN CODE PROGRAM
1. Membuat form VB + Design form + Pengetikan kode VB 2. Membuat STORE PROCEDURE di SQL Server 3. Jalankan VB
Visual Basic SQL SERVER
Store
procedure
(SP)
(1)VB memanggil NAMA SP
(2) SQL menjalankan isi
code dari SP yang
diminta
Atau.. (3) Data hasil SP
diberikan kembali
ke VB
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
131
VB+SP SP input data
(INSERT) &
SP rubah data (UPDATE)
barang
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
132
VB code dasar STORE PROCEDURE
TOMBOL_input, TOMBOL_save, TOMBOL_update, TOMBOL_cari,
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
133
Code di MODULE Ada penambahan 1 variabel untuk STORE PROCEDURE
Public Conn As ADODB.Connection '/ untuk koneksi keDB Public Rs As ADODB.Recordset '/ untuk buka TABLE Public KONEKSI_string As String
Public RsCMD As ADODB.Command '/ untuk PANGGIL SP SQL '/----- ini adalah PROCEDURE untuk koneksi ke database
Sub BUKA_db()
On Error GoTo CEK Set Conn = New ADODB.Connection Conn.CursorLocation = adUseClient
KONEKSI_string = "Provider=SQLNCLI.1;" & _ "Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=TOKO;" & _
"Data Source=(local)" '/ Jika koneksi TERPUTUS (0), maka BUKA kembali
If Conn.State = 0 Then
Conn.Open KONEKSI_string
End If Exit Sub CEK: MsgBox "KONEKSI ke DATABASE ERROR : " & Err.Description, vbCritical End
Kalo MODUL sama
aja dg kemaren..
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
134
CODE DI FORM CODE TOMBOL-TOMBOL
Code TOMBOL INPUT
'/-----PANGGIL PROCEDURE UNTUK KOSONGKAN INPUT
Me.TXT_KDBARANG = "" Me.TXT_NMBARANG = "" Me.TXT_HARGA = "" Me.TXT_STOK = "" '/-----LETAKKAN KURSOR DI KDBARANG
Me.TXT_KDBARANG.SetFocus
Code TOMBOL SAVE
'/-----PANGGIL DATABASE
Call BUKA_db '/-----PERSIAPKAN COMMAND,KONEKSI,NAMA SP UNTUK STORE PROCEDURE
Set RScmd = New ADODB.Command ‘—aktifkan RScmd RScmd.ActiveConnection = Conn ‘--koneksinya
RScmd.CommandText = "SP_BARANG_INPUT" ‘--nama SP nya
RScmd.CommandType = adCmdStoredProc ‘—jenis storeproc
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
135
Set Rs = RScmd.Execute(, Array(Me.TXT_KDBARANG, _
Me.TXT_NMBARANG, _ Me.TXT_HARGA, _ Me.TXT_STOK)) Set RScmd = Nothing MsgBox "DATA TELAH DI SIMPAN..", vbInformation
Sebutkan lokasi TEXTBOX nya,
INGAT urutan ini = dg urutan di
STORE PROCEDURE nya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
136
Code TOMBOL UPDATE,RUBAH DATA
'/-----PANGGIL DATABASE
Call BUKA_db '/-----PERSIAPKAN COMMAND,KONEKSI,NAMA SP UNTUK STORE PROCEDURE
Set RScmd = New ADODB.Command ‘—aktifkan RScmd RScmd.ActiveConnection = Conn ‘--koneksinya
RScmd.CommandText = "SP_BARANG_UPDATE" ‘--nama SP nya
RScmd.CommandType = adCmdStoredProc ‘—jenis storeproc
Set Rs = RScmd.Execute(, Array(Me.TXT_KDBARANG, _
Me.TXT_NMBARANG, _ Me.TXT_HARGA, _ Me.TXT_STOK)) Set RScmd = Nothing MsgBox "DATA TELAH DI SIMPAN..", vbInformation
PERHATIAN…! kode SIMPAN DATA BARU dengan UPDATE DATA hampir sama,
yang beda hanya NAMA STORE PROCEDURE (SP) yang
digunakannya.
Sebutkan lokasi TEXTBOX nya,
INGAT urutan ini = dg urutan di
STORE PROCEDURE nya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
137
CODE tombol cari sama dengan code latihan sebelumnya..
Code TOMBOL CARI
'/=========================================/ '/ INPUT DATA KODE BARANG YANG DICARI '/=========================================/
Dim CARI CARI = InputBox("INPUT KODE BARANG YANG DICARI :")
'/--JIKA TIDAK DI INPUT, MAKA BATALKAN PROSES If CARI = "" Then Exit Sub End If '/--buka koneksi ke database Call BUKA_db
'/--buka SQL; data barang dg WHERE untuk mencari KODE BARANG KEREN = ""
KEREN = " SELECT * FROM BARANG “ & _
“ WHERE KDBARANG ='" & CARI & "' " Set Rs = New ADODB.Recordset Rs.Open KEREN, Conn, adOpenStatic, adLockOptimistic
'/--CEK, APAKAH DATA TIDAK ADA (EOF), '/--jika TIDAK ADA munculkan pesan, jika ADA munculkan DATA ke FORM
If NOT Rs.EOF Then '/--apakah data ada? '/--data kodebarang ada, munculkan ke form Me.TXT_KDBARANG = Rs("KDBARANG")
INFO: IF RS.EOF then Apakah data tidak ada
IF NOT RS.EOF then apakah data ada
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
138
Me.TXT_NMBARANG = Rs("NMBARANG") Me.TXT_HARGA = Rs("HARGA") Me.TXT_STOK = Rs("STOK") Else
'/--data kodebarang TIDAK ADA, beri pesan MsgBox "DATA TIDAK ADA", vbInformation End If
Rs.Close Set Rs = Nothing
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
139
CODE STORE PROCEDURE untuk INPUT DATA BARU & UPDATE DATA
Store procedure untuk simpan data baru:
CREATE PROCEDURE SP_BARANG_INPUT @kdbarang varchar(20), @nmbarang varchar(50), @harga float, @stok float AS INSERT INTO BARANG (kdbarang,nmbarang,harga,stok) VALUES(@kdbarang,@ nmbarang,@ harga,@ stok)
Store procedure untuk update data:
CREATE PROCEDURE SP_BARANG_UPDATE @kdbarang varchar(20), @nmbarang varchar(50), @harga float, @stok float AS UPDATE BARANG SET kdbarang=@ kdbarang, nmbarang=@ nmbarang, harga=@ harga, stok=@ stok WHERE kdbarang=@kdbarang
NAMA SP ini (SP_BARANG_INPUT, SP_BARANG_UPDATE) akan di panggil oleh VB
@kdbarang bebas,nama variable Varchar(20),varchar(50),float,float harus sama dg masing2 jenis field table nya.
BARANG(kdbarang..) nama table+field nya
@kdbarang bebas,nama variable Varchar(20),varchar(50),float,float harus sama dg masing2 jenis field table nya.
BARANG nama table KDBARANG,NMBARANG,HARGA,STOK nama field
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
140
a.LANGKAH MENGETIK STORE PROCEDURE dg
ENTERPRISE MANAGER
Buka enterprise manager :
Lalu muncul kotak store procedure.. Ketikan code SP nya
Klik kanan di StoreProcedure
+ NEW store procedure
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
141
Catatan: perintah GO tidak perlu di ketik, karena OTOMATIS akan
muncul diberikan oleh SQL
(1) Ketik code SP nya disini
(2) jika sudah selesai ,KLIK
TOMBOL CHECK SYNTAX untuk cek
apakah code SP ada Error/tidak
(3) jika code
OK, klik
tombol OK
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
142
b.LANGKAH meng-EDIT CODE SP
langkahnya untuk merubah code SP
KLIK 2X di Nama SP nya
c.LANGKAH meng-RUBAH NAMA SP
1. Klik kanan di NAMA SP nya + RENAME
2. Rubahlah nama nya
3.Editlah / KLIK 2x SP nya 4. Rubahlah NAMA SP nya, yang di CREATE PROCEDURE ….. (sesuai dg nama
di nomer.2) 5.Klik tombol OK
d.LANGKAH meng-HAPUS SP
1.Klik kana di nama SP + DELETE 2. Klik tombol DROP ALL
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
143
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
144
Latihan aja
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
145
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
146
Ujian tengah semester
(UTS)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
147
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
148
PROSES TRANSAKSI
dasar
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
149
SQL Server
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
150
SYSTEM PENJUALAN TOKO Database SQL Server
BARANG No NAMA FIELD JENIS LEBAR KET
1 KDBARANG VARCHAR 20 PrimaryKey
2 NMBARANG VARCHAR 50
3 HARGA FLOAT
4 STOK FLOAT
CUSTOMER No NAMA FIELD JENIS LEBAR KET
1 KDPELANGGAN VARCHAR 20 PrimaryKey
2 NMPELANGGAN VARCHAR 50
3 ALAMAT VARCHAR 100
4 TELP VARCHAR 50
5 KONTAK_PERSON VARCHAR 50
Isi data sebanyak 5 data
BELI No NAMA FIELD JENIS LEBAR KET
1 NO_BELI VARCHAR 20 PrimaryKey
2 TGL DATETIME
3 KDBARANG VARCHAR 20
4 JUMLAH FLOAT
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
151
JUAL No NAMA FIELD JENIS LEBAR KET
1 NO_JUAL VARCHAR 20 PrimaryKey
2 NOMER_AKHIR INT
3 TGL DATETIME
4 KDPELANGGAN VARCHAR 20
5 SUBTOTAL FLOAT
6 POTONGAN FLOAT
7 PAJAK FLOAT
8 TOTAL_NYA FLOAT
JUAL_DETAIL No NAMA FIELD JENIS LEBAR KET
1 NO_JUAL VARCHAR 20
2 KDBARANG VARCHAR 20
3 NMBARANG VARCHAR 20
4 JUMLAH FLOAT
5 HARGA FLOAT
6 SUBTOTAL FLOAT
7 NO_URUT INT (Identity=YES)
PRIMARY KEY (auto-number)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
152
TRANSAKSI DASAR
(>=2 table)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
153
NGOBROL - NGOBROL : Ada sebagian form yang menggunakan PROSES UPDATE BERTAMBAH atau BERKURANG pada saat menyimpan data. Contohnya:
BANK: Pada saat kita menarik uang di ATM, maka SALDO akan berkurang
ada 2 PROSES data:
1. data penarikan uang [tgl,no.rekening,jumlahnya]. 2. Update SALDO nasaban BERKURANG
Atau pada saat kita menabung, maka SALDO akan bertambah
Ada 2 data yg terlibat
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
154
STOK: Pada saat kita membeli barang di TOKO, maka stok barang di toko tsb akan berkurang : Proses
1. Kita membeli barang (tgl,kode barang,jumlah) 2. Stok barang berkurang (kode barang, jumlah)
CICILAN CREDIT: Pada saat kita membayar CICILAN CREDIT misalnya cicilan motor, maka HUTANG ke dealer juga akan berkurang. Proses:
1. Kita membayar cicilan (tgl, no.nasabah, jumlah cicilan) 2. Cicilan nasabah berkurang (no.nasabah,jumlah cicilan)
Jadi TRANSAKSI2 tsb pada saat simpan data melakukan
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
155
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
156
NGOBROL - NGOBROL lagi…:
Pada proses TRANSAKSI tsb terkadang
TIDAK BOLEH
ADA PROSES BATAL (Cancel)
atau HAPUS TRANSAKSI (Delete).
Jadi proses yang ada HANYA INPUT-SAVE saja.. Contohnya:
BANK Pengambilan uang di ATM, setelah uang kita ambil dari ATM, bisa kah kita membatalkan transaksinya? Uang kita diMASUKKAN kembali ke ATM nya…. (Ngakak mode on)
BELANJA Setelah kita membayar belanja kita di kasir (Goro, matahari, dll) bisakah kita membatalkan belanja nya?
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
157
BELI BENSIN-PERTAMAX
Setelah bensin masuk ke motor/mobil & kita telah membayar nya.. apakah TRANSAKSI tsb bisa di batalkan ??? jika BISA gimane caranyeeeee ???
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
158
PERINTAH SQL untuk PROSES UPDATE :
Berkaitan dengan proses transaksi update, maka SQL
mempunyai perintah untuk Update table, perintah sbb:
Contoh2 proses update:
BANK; ambil uang di ATM, saldo akan berkurang UPDATE nasabah SET saldo=saldo-100000 WHERE no_rek=’001’
BELANJA; bayar kasir, stok barang berkurang
UPDATE barang SET stok=stok-5 WHERE kode_brg=’B001’
UPDATE nama_table_nya SET nama_field_yg_diupdate = nilainya WHERE nama_field_kunci=nilainya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
159
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
160
TRANSAKSI DASAR STOK
Pembelian barang & Update stok barang +
Input PEMBELIAN BARANG dan akan MENAMBAH STOK barang
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
161
FORM :
PEMBELIAN dan UPDATE STOK + Keterangan: kita sbg pemilik toko, telah belanja ke manggadua berbagai macam barang
& kita MENG-INPUT PEMBELIAN barang2 tsb kedalam system
KETERANGAN pada saat SAVE
SImpan data transaksi di table BELI
UPDATE stok barang di table barang
DTPICKER1 tambah component: Microaoft wind.common ctrl 6
Nama barang, stok muncul otomatis saat kode brg di pilih..
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
162
JANGAN LUPA CODE KONEKSI KE SQL SERVER
DI MODULE:
Public Conn As ADODB.Connection '/ untuk koneksi keDB Public Rs As ADODB.Recordset '/ untuk buka TABLE Public KONEKSI_string As String
'/----- ini adalah PROCEDURE untuk koneksi ke database
Sub BUKA_db()
On Error GoTo CEK Set Conn = New ADODB.Connection Conn.CursorLocation = adUseClient
KONEKSI_string = "Provider=SQLNCLI.1;" & _ "Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=TOKO;" & _
"Data Source=(local)" '/ Jika koneksi TERPUTUS (0), maka BUKA kembali
If Conn.State = 0 Then
Conn.Open KONEKSI_string
End If Exit Sub CEK: MsgBox "KONEKSI ke DATABASE ERROR : " & Err.Description, vbCritical End
Kalo MODUL sama
aja dg kemaren..
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
163
Code di Form
Buat Procedure
Procedure untuk mengisi combo dg KDBARANG
Sub ISI_COMBO_BARANG() Call BUKA_db MANIS = “” MANIS = “ SELECT * FROM BARANG ORDER BY KDBARANG” ‘/---Buka table BARANG, looping isi data KDBARANG kedalam COMBOBOX---/ Set Rs = New ADODB.Recordset Rs.Open MANIS, Conn, adOpenStatic, adLockOptimistic If Not Rs.EOF Then ‘/---siapkan looping untuk membacan data While Not Rs.EOF ‘/---MASUKKAN KDBARANG kedalam COMBO1---/
Me.Combo1.AddItem Rs(“KDBARANG”) Rs.MoveNext Wend End If Rs.Close Set Rs = Nothing End Sub
CODE STANDARD
untuk ISI COMBO
dg Table
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
164
Procedure untuk menampilkan DATA BARANG saat Combo1 (KDBarang) di CLICK / di LOSTFOCUS
Sub MUNCULIN_DATA_BARANG() Call BUKA_db ‘/---Buka table BARANG, CARI berdasarkan KDBARANG---/
KEREN = “” KEREN = “ SELECT * FROM BARANG “ & _ “ WHERE KDBARANG=’” & Me.Combo1 & “’ “ Set Rs = New ADODB.Recordset Rs.Open KEREN, Conn, adOpenStatic, adLockOptimistic ‘/---Jika ketemu kodenya, maka munculkan ke TEXT ---/
If Not Rs.EOF Then
‘/---MUNCULKAN DATA YG DIPERLUKAN : NAMA BARANG , STOK ---/
Me.Text2 = Rs(“NMBARANG”) Me.Text3 = Rs(“STOK”) End If Rs.Close Set Rs = Nothing End Sub
CODE STANDARD
untuk MENAMPILKAN
data
RS.EOF data tidak
ada, data tidak
ketemu
NOT RS.Eof data
ada, data ketemu
Rs(“NmBarang”)
adalah nama FIELD yg
akan di munculkan
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
165
CODE di FORM
Code : FORM – LOAD
‘/---KOSONGKAN TEXTBOX---/ Me.Text1 = “” Me.Text2 = “” Me.Text3 = “” Me.Text4 = “” Me.DtPicker1.value=date ‘/---PANGGIL PROCEDURE UNTUK ISI COMBO---/ Call ISI_COMBO_BARANG
Code : COMBO1 – CLICK
‘/---Panggil procedure untuk menampilkan data barang---/
Call MUNCULIN_DATA_BARANG
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
166
Code di TOMBOL
Code : TOMBOL NEW
‘/---KOSONGKAN TEXTBOX---/ Me.Text1 = “” Me.Text2 = “” Me.Text3 = “” Me.Text4 = “” Me.DTPicker1.Value = Date ‘/---taro kursor---/ Me.Text1.SetFocus
Code : TOMBOL CANCEL
‘/---KOSONGKAN TEXTBOX---/ Me.Text1 = “” Me.Text2 = “” Me.Text3 = “” Me.Text4 = “” Me.DTPicker1.Value = Date
MsgBox “BATAL..”, vbInformation
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
167
Code : TOMBOL SAVE
CODE yang ditulis yang pokok nya saja, yaitu untuk simpan data transaksi dan UPDATE STOK barang betambah
‘/ CEK 1 : PRIMARY KEY.code sama dg sebelumnya ‘/---code tidak di ketik, coba lihat latihan sebelum nya, untuk CEK PRIMARY KEY
‘/---------------------------------------------------------/ ‘/ CEK 2 : apakah input JUMLAH benar? Dg angka
‘/---------------------------------------------------------/
If IsNumeric(Me.Text4) = False Then
MsgBox "INPUT JUMLAH DENGAN ANGKA", vbInformation Exit Sub End If
‘/---------------------------------------------------------/
‘/ PROSES 1: SIMPAN TRANSAKSI
‘/---------------------------------------------------------/ AA = “”
AA = “ SELECT * FROM BELI “ & _
“ WHERE NO_BELI=’” & Me.Text1 &
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
168
Set Rs = New ADODB.Recordset Rs.Open AA, Conn, adOpenStatic, adLockOptimistic
Rs.AddNew
Rs(“NO_BELI”) = Me.Text1 Rs(“TGL”) = Me.DTPicker1.Value Rs(“KDBARANG”) = Me.Combo1 Rs(“JUMLAH”) = Me.Text4
Rs.Update
Rs.Close Set Rs = Nothing
‘/--------------------------------------------------------/
‘/ PROSES 2: UPDATE STOK +
‘/--------------------------------------------------------/ IMUT = “” IMUT = “ UPDATE BARANG “ & _
“ SET STOK=STOK +” & Text4 & _
“ WHERE KDBARANG=’” & Combo1 & “’ “
Conn.Execute IMUT MsgBox “OK”, vbInformation ‘/---KOSONGKAN TEXT---/ Me.Text1 = “” Me.Text2 = “” Me.Text3 = “” Me.Text4 = “”
Nah…. Ini
PROSES update
transaksinya..
TEXT4 jumlah brg COMBO1 kodebrg
“..tambahkan stok yg
kdbarang nya= combo1..
Rs.ADDNEW simpan data
transaksi pembeliannya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
169
INFO
Cek data table BELI data pembelian akan kesimpan
Cek STOK barang yang di input stok akan bertambah..
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
170
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
171
LATIHAN - LATIHAN
TRANSAKSI DASAR
Latihan TRANSAKSI BANK: Nasabah menabung (Saldo bertambah),
Pengambilan uang di ATM (Saldo berkurang)
Latihan PEMBAYARAN CICILAN CREDIT MOTOR: Pembayaran credit cicilan motor (hutang berkurang)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
172
Transaksi dasar pengambilan uang ATM
Proses : TOMBOL MULAI :
kosongkan text. Letakkan kursor di text1 TOMBOL SIMPAN :
Jika NOMER PIN salah; munculkan pesan pin salah, proses di batalkan
Jika NOMER PIN benar; cek apakah SALDO nasabah cukup untuk pengambilan uang, jika TIDAK CUKUP munculkan pesan saldo kurang. Jika CUKUP… simpan data transaksi pengambilan uang dan UPDATE SALDO nasabah menjadi BERKURANG
DATABASE : nama database : ATM TABLE : 1. NASABAH (inputlah 5 data nasabah) KODE_NASABAH varchar 20 NAMA_NASABAH varchar 50 NO_PIN varchar 20 SALDO float 2. AMBIL NO_PIN varchar 20 JUMLAH float
Latihan aja
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
173
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
174
LOGIN & MENU
LOGIN adalah form security untuk masuk kedalam system. Jika User tidak mengetahui USER dan PASSWORD nya, maka user tidak dapat masuk ke system… (gitu lohhhhh)
LOGIN ada 2 tehnik :
(1) Login dengan USER dan PASSWORD sudah FIX ditentukan oleh programmer, dan TIDAK DAPAT dirubah-ubah. Misalnya untuk masuk ke system dibutuhkan
USER=INDRAES ,PASSWORD=KEREN.. maka INDRAES dan KEREN tidak dapat dirubah-ubah ( )
(2) Login dengan USER dan PASSWORD FLEXIBEL , jika LOGIN flexible maka masing2 user mempunyai USER dan PASSWORD untuk masuk ke system. Tehnik ini
membutuhkan TABLE USER_PASSWORD untuk input/menyimpan nama user dan passwordnya..
JALANKAN FORM LOGIN :
Setiap kali system muncul/jalan, maka FORM LOGIN selalu MUNCUL #1
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
175
START-UP FORM LOGIN FORM LOGIN biasanya dijadikan sbg START-UP FORM project Jadi sewaktu PROJECT dijalankan FORM LOGIN akan di munculkan terlebih dahulu..
Menu: PROJECT + PROPERTIES
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
176
LOGIN BIASA (Tanpa menggunakan database table user password)
Code : TOMBOL OK
‘/---Cek apakah TEXT1 TEXT2 benar: ADMIN bisa disesuaikan---/ IF Text1 <> “ADMIN” and Text2<>”ADMIN” Then Msgbox “User password salah..”,VbInformation Exit sub Else Unload me ‘/password benar, hilangkan form login Form_menu.Show ‘/ lalu panggil form menu utama End if
Code : TOMBOL EXIT
End ‘/keluar dari program
Tombol_ok, Tombol_exit
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
177
LOGIN TABLE (Dengan menggunakan database table user password)
Tambah table di database
Table: USER_PASSWORD No NAMA FIELD JENIS LEBAR KET
1 NAMA_USER VARCHAR 20 PrimaryKey
2 PASSWORD VARCHAR 20
Isilah table user_password tsb..
Tombol_ok, Tombol_exit
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
178
Code:
Code : TOMBOL OK
Call BUKA_DB ‘/---Cek ke database apakah TEXT1 TEXT2 benar ---/
X = " SELECT * FROM USER_PASSWORD " & _ " WHERE NAMA_USER='" & Text1 & "' " & _ " AND PASSWORD='" & Text2 & "' " Set Rs = New ADODB.Recordset Rs.Open X, Conn, adOpenStatic, adLockOptimistic
If Rs.EOF Then ‘/apakah DATA TIDAK ADA
MsgBox "PASSWORD SALAH..", vbCritical ‘/user password salah Rs.Close ‘/Tutup tabel Set Rs = Nothing Exit Sub ELSE Rs.Close ‘/Tutup tabel Set Rs = Nothing MsgBox "LOGIN BENAR, SELAMAT DATANG DI SYSTEM KAMI..", vbInformation
Unload me ‘/tutup form login
FORM_MENU.Show ‘/buka form MENU
END IF
Code : TOMBOL EXIT
End ‘/keluar dari program
Cari nama user
dan password nya di
table ..
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
179
MENU UTAMA Menggunakan PICTURE untuk tombol shortcut (ALTERNATIF)
SETTING STATUS BAR:
PICTURE COMMAND BUTTON
STATUS BAR
INSERT PANEL bikin ruang baru ALIGMENT rata kiri,kanan,tengah STYLE isi datanya(tgl,jam,caplock,dll) BEVEL efeknya (mendem/nonjol) AUTOSIZE kotaknya nge-resize dg form
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
180
CODE
Code : TOMBOL EXIT
D=Msgbox (“Apakah ingin keluar dari program?”,vbQuestion+VbYesNo) IF D=VbYes Then End ‘/keluar dari program End If
Code : TOMBOL BARANG
Form_Barang.SHOW ‘/Munculkan form barang, sesuaikan namanya
Code : TOMBOL CUSTOMER
Form_Customer.SHOW ‘/Munculkan form customer, sesuaikan namanya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
181
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
182
TRANSAKSI
Master Detail dg
ListView
(1-many)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
183
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
184
FORM MASTER DETAIL penjualan
NOMER PENJUALAN menggunakan NOMER URUT OTOMATIS dg format :
1112-00001 11 bulan 2 digit 12 tahun 2 digit 00001 nomer urut dengan 5 digit Setiap tahun baru / awal tahun nomer menjadi = 0 kembali
LISTVIEW1
Crystal Report1
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
185
CODE di MODUL Ini BUDI ehhhh…salah; ini adalah code untuk koneksi ke database
Public Conn As ADODB.Connection '/ untuk koneksi keDB Public Rs As ADODB.Recordset '/untuk buka TABLE,bisa banyak Public KONEKSI_string As String
'/----- ini adalah PROCEDURE untuk koneksi ke database
Sub BUKA_db()
On Error GoTo CEK Set Conn = New ADODB.Connection Conn.CursorLocation = adUseClient
KONEKSI_string = "Provider=SQLOLEDB.1;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=TOKO;" & _
"Data Source=(local)" '/ Jika koneksi TERPUTUS (0), maka BUKA kembali
If Conn.State = 0 Then
Conn.Open KONEKSI_string
End If Exit Sub '/ Jika ada ERROR munculkan pesan CEK: MsgBox "KONEKSI ke DATABASE ERROR : " & Err.Description, vbCritical End
END SUB
Kode string ini diambil
dari ADODC
TOKO=nama DB
DataSource=nama
komp.server
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
186
PROCEDURE di FORM
Code : Procedure Procedure Untuk seting listview
Sub LISTVIEW SETTING() With Me.ListView1 .ColumnHeaders.Clear '--HAPUS HEADER .ListItems.Clear '--HAPUS DATA .View = 3 '-- JENIS TAMPILAN: 0=ICON, 1=SMALL ICON, 2=LIST, 3=REPORT .FullRowSelect = True .GridLines = True '----- MEMBUAT JUDUL-HEADER KOLOM-----/ .ColumnHeaders.Add , , "No", 400 '—NO=judul, 400=lebar .ColumnHeaders.Add , , "KODE BARANG", 2000 .ColumnHeaders.Add , , "NAMA BARANG", 3000 .ColumnHeaders.Add , , "JUMLAH", 1000, 1 '—, 1=rata kanan .ColumnHeaders.Add , , "HARGA", 1000, 1 .ColumnHeaders.Add , , "SUBTOTAL", 1500, 1 End With End Sub
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
187
Untuk mengisi COMBO customer
Sub ISI_CUSTOMER() Call BUKA_Db Me.Combo1.Clear '--kosongkan combo aa = "SELECT * FROM CUSTOMER ORDER BY KDPELANGGAN" Set Rs = New ADODB.Recordset Rs.Open aa, Conn, adOpenStatic, adLockOptimistic If Not Rs.EOF Then '---jika data ada, maka lanjutkan proses While Not Rs.EOF '---looping selama data masih ada '---masukan data kode pelanggan ke combo
Me.Combo1.AddItem Rs("KDPELANGGAN") '---field dimasukan ke combo '---baca data berikutnya Rs.MoveNext Wend End If Rs.Close Set Rs = Nothing End Sub
Unutk mencari menampilkan DATA CUSTOMERT saat COMBO di KLIK/LOSTFOCUS
Sub CARI_NAMA_CUSTOMER() Call BUKA_Db '--- buka table customer dengan kondisi WHERE a = ""
a = " SELECT * FROM CUSTOMER " & _
" WHERE KDPELANGGAN='" & Combo1 & "' "
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
188
Set Rs = New ADODB.Recordset Rs.Open a, Conn, adOpenStatic, adLockOptimistic
If Not Rs.EOF Then '--- jika data nya ada, maka munculkan
'--- munculkan data table ke TEXT
Me.Text2 = Rs("NMPELANGGAN") '--- tampilkan field ke text End If Rs.Close Set Rs = Nothing End Sub
Unutk mencari menampilkan DATA BARANG
Sub CARI_NAMA_BARANG() Call BUKA_Db '/ buka table barang dengan kondisi WHERE a = ""
a = " SELECT * FROM BARANG " & _
" WHERE KDBARANG='" & Me.Text3 & "' " Set Rs = New ADODB.Recordset Rs.Open a, Conn, adOpenStatic, adLockOptimistic
If Not Rs.EOF Then '--- jika data yg dicari ada..
'--- munculkan data table ke TEXT
Me.TEXT4 = Rs("NMBARANG") '--- munculin NAMA BARANG ke text
Me.TEXT5 = Rs("HARGA") '--- munculin HARGA ke text
Me.Text6.SetFocus Else Me.TEXT4 = "" '--- barang tidak ada, kosongkan text Me.TEXT5 = "" End If
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
189
Rs.Close Set Rs = Nothing End Sub
Untuk menghitung total PO
Sub HITUNG_total_penjualan() '/----------------------------------------------------/
'/ MENGHITUNG TOTAL PENJUALAN
'/ DENGAN CARA MENJUMLAH-KAN ANGKA PADA KOLOM SUBTOTAL
'/ DI KOLOM KE 5
'/
'/ NOMER = kolom 0
'/ KODE BARANG = kolom 1
'/ NAMA BARANG = kolom 2
'/ JUMLAH = kolom 3
'/ HARGA = kolom 4
'/ SUBTOTAL = kolom 5
'/----------------------------------------------------/
On Error Resume Next Dim oSUBTOTAL, oTOTAL oSUBTOTAL = 0 oTOTAL = 0 '/-----------------------------------------/
'/ looping di listview
'/ jumlahkan subtotal di kolom 5
'/-----------------------------------------/
For a = 1 To ListView1.ListItems.Count
oSUBTOTAL = oSUBTOTAL + Val(ListView1.ListItems(a).SubItems(5))
Next
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
190
'/---------------------------------------------------/
'/ cek angka total
'/ pastikan angka nol (numerik)
'/ karena akan digunakan untuk hitungan grandtotal
'/---------------------------------------------------/
If IsNumeric(Me.Text8) = False Then Me.Text8 = 0 If IsNumeric(Me.Text9) = False Then Me.Text9 = 0 If IsNumeric(Me.Text10) = False Then Me.Text10 = 0 If IsNumeric(Me.Text11) = False Then Me.Text11 = 0
'/---------------------------------------------------/
'/ hitung
'/---------------------------------------------------/
Me.Text8 = oSUBTOTAL '---subtotal
Me.Text10 = 10 / 100 * (Me.Text8 - Me.Text9) '---pajak
'/ grandtotal = subtotal - potongan + pajak
Me.Text11 = val(Me.Text8) – val(Me.Text9) + val(Me.Text10) '---total
'/ display total
Me.Text12 = Format(Text11, "#,###,###,###,###") '---display End Sub
Sub KOSONG() '/ kosongin semua textbox, combobox
Dim ctrl As Control For Each ctrl In Me If TypeName(ctrl) = "TextBox" Then ctrl.Text = "" If TypeName(ctrl) = "ComboBox" Then ctrl.Text = "" Next Me.DTPicker1.Value = Date End Sub
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
191
Sub NOMER_URUT() Call BUKA_Db '/--------------------------------------------------/
'/ nomer urut otomatis +1
'/ nomer menjadi 1 saat TAHUN BARU
'/ maka FILTER juga berdasarkan TAHUN
'/
'/ buka table jual, ambil nomer akhir
'/ gunakan ORDER BY nomer_akhir DESC ->
'/ agar nomer akhir diatas
'/ record ke #1
'/--------------------------------------------------/
aa = ""
aa = "select * from jual " & _
" where year(tgl)=" & Year(Date) & _
" order by nomer_akhir desc" Dim NOmer Set Rs = New ADODB.Recordset Rs.Open aa, Conn, adOpenStatic, adLockOptimistic
If Not Rs.EOF Then '---jika datanya nomer ada
'/ ambil nomer ter-akhir
NOmer = Rs("nomer_akhir") Else
'/nomer baru NOmer = 0 End If Rs.Close Set Rs = Nothing
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
192
'/ tambahkan nomer
NOmer = NOmer + 1
'/-------------------------------------------------------/
'/ munculkan nomer lengkap
'/
'/ format nomer: BULAN TAHUN - 00001
'/ contoh : 1112-00001 '/
'/ 11 =bulan 2 digit
'/ 12 =tahun 2 digit
'/ 00001=nomer urut otomatis 5 digit
'/-------------------------------------------------------/
Dim oBULAN, oTAHUN, oAKHIR oBULAN = Format(Date, "MM")
oTAHUN = Format(Date, "yy")
oAKHIR = Right("00000" & NOmer, 5) '/5=banyaknya NOL
'---jadideh
Me.Text1 = oBULAN & oTAHUN & "-" & oAKHIR End SUB
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
193
Code2 di FORM
FORM - LOAD '/ kosongin text Call KOSONG '/ seting listview nya Call LISTVIEW_SETTING '/ isi combo customer Call ISI_CUSTOMER
Code di COMBO, TEXT, GRID
COMBO1 CUSTOMER - CLICK Call CARI_NAMA_CUSTOMER
TEXT3 – LostFocus (text KODE BARANG) Call CARI_NAMA_BARANG
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
194
TEXT5 – Change (text HARGA) On Error Resume Next Text7 = Val(TEXT5) * Val(Text6)
TEXT6 – Change (text JUMLAH) On Error Resume Next Text7 = Val(TEXT5) * Val(Text6)
LISTVIEW1 - ItemClick
'--- MUNCULKAN BARANG KE TEXT '--- jika LISTVIEW di CLICK Text13 = ListView1.ListItems(ListView1.SelectedItem.Index) '---nomer With ListView1.SelectedItem.ListSubItems Text3 = .Item(1) '---kode TEXT4 = .Item(2) '---nama TEXT5 = .Item(3) '---harga Text6 = .Item(4) '---jumlah Text7 = .Item(5) '---subtotal End With
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
195
Code di TOMBOL-TOMBOL
TOMBOL : NEW Call KOSONG Call NOMER_urut Me.Text1.SetFocus
TOMBOL : SAVE Dim TAnya TAnya = MsgBox("APAKAH TRANSAKSI AKAN DI SIMPAN..?", vbQuestion + vbYesNo) If TAnya = vbNo Then
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
196
Exit Sub End If '/==============================================/
'/
'/ simpan
'/
'/==============================================/
Call BUKA_Db '/ hitung lagi Call HITUNG_TOTAL_JUAL
'/===========================================/ '/ #1. '/ simpan header/master '/ di table: BELI '/===========================================/
'/ cek : apakah nomer pembelian sudah ada? aa = ""
aa = "select * from JUAL " & _
" where no_jual ='" & Text1 & "' "
Set Rs = New ADODB.Recordset Rs.Open aa, Conn, adOpenStatic, adLockOptimistic
If Not Rs.EOF Then '—jika datanya ada MsgBox "NOMER PENJUALAN SUDAH ADA..", vbCritical Exit Sub End If
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
197
'/--------------------------------------------------------/ '/ nomer baru '/ simpan data penjualan di table: JUAL '/--------------------------------------------------------/ Rs.AddNew Rs("no_jual") = Text1 '--- simpan NOMER AKHIR, agar bisa dilanjutkan kemudian '--- 5=adalah jumlah NOL di nomer urut '--- jadi field NOMER_AKHIR khusus untuk menyimpan nomer akhir
Rs("nomer_akhir") = Val(Right(Text1, 5)) Rs("tgl") = Me.DTPicker1.Value Rs("kdpelanggan") = Combo1 Rs("subtotal") = Text8 Rs("potongan") = Text9 Rs("pajak") = Text10 Rs("total_nya") = Text11
Rs.Update Rs.Close Set Rs = Nothing
'/============================================/ '/ #2. '/ simpan detail barang '/ di table : JUAL_DETAIL '/ '/ looping di listview '/============================================/
Dim Mm As Integer
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
198
'/ loooping di listview
For Mm = 1 To ListView1.ListItems.Count
With Me.ListView1.ListItems(Mm)
'/-------------------------------------------------------------------------------------/ '/ simpan barang di table JUAL_DETAIL '/ karena hanya menyimpan saja, gunakan pencarian sembarang '/-------------------------------------------------------------------------------------/ bb = ""
bb = "select * from JUAL_DETAIL " & _
" where no_jual ='1234567890'"
Set Rs = New ADODB.Recordset Rs.Open bb, Conn, adOpenStatic, adLockOptimistic
Rs.AddNew
Rs("no_jual") = Text1 Rs("kdbarang") = .SubItems(1) Rs("nmbarang") = .SubItems(2) Rs("harga") = .SubItems(3) Rs("jumlah") = .SubItems(4) Rs("subtotal") = .SubItems(5)
Rs.Update
Rs.Close Set Rs = Nothing
'/-----------------------------------------------------------------------/ '/ update stok berkurang '/ (kode ini tidak diperlukan, tidak perlu diketik '/ jika tidak menggunakan STOK/GUDANG ) '/
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
199
'/ .SubItems(4) --> jumlah barang penjualan '/ .SubItems(1) --> kode barang nya '/------------------------------------------------------------------------/ cc = ""
cc = " update barang " & _
" set STOK = STOK - " & Val(.SubItems(4)) & _
" where kdbarang ='" & .SubItems(1) & "' "
Conn.Execute cc
End With Next MsgBox "OK..", vbInformation
TOMBOL : CANCEL Call KOSONG MsgBox "BATAL..", vbInformation
TOMBOL : PRINT BON Call BUKA_Db With CrystalReport1 '/---KONEKSI REPORT DG ODBC---/
.ReportFileName = App.Path & "\BON_PENJUALAN_OLEDB.RPT"
.Connect = KONEKSI_string
Ini adalah nama file
report nya.
Disesuaikan yah…
.RPT extensinya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
200
'/---SELEKSI DATA---/ .SelectionFormula = "{JUAL.NO_JUAL}='" & Me.Text1 & "' "
'/---UPDATE KAN DATABASE---/ .RetrieveDataFiles .DiscardSavedData = True '/---TUJUAN PRINT---/ .Destination = crptToWindow '/---SETINGAN LAINNYA---/ .WindowState = crptMaximized '/--TAMPILAN PENUH .WindowShowRefreshBtn = True '/--TOMBOL REFRESH MUNCUL .Action = 1 '/--JALANKAN REPORT End With
Catatan report:
Jangan lupa untuk membuat DESIGN REPORT nya dulu
Nama FILE REPORT disamakan dengan KODE
SImpan FILE REPORT di satu folder dengan program project vb nya
TOMBOL : HITUNG ULANG Call HITUNG_TOTAL_JUAL
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
201
Code di
TOMBOL BARANG
TOMBOL : SIMPAN BARANG '--- cek angka If IsNumeric(Me.TEXT5) = False Then '--- cek harga MsgBox "INPUT HARGA DENGAN ANGKA..", vbCritical Exit Sub End If If IsNumeric(Me.Text6) = False Then '--- cek jumlah MsgBox "INPUT JUMLAH DENGAN ANGKA..", vbCritical Exit Sub End If '--- cek input lainnya If Me.Text3 = "" Then '--- cek kode barang MsgBox "KODE BARANG BELUM DI INPUT..", vbCritical Exit Sub End If '/------------------------------------------/ '/ data ok '/ masukan ke listview '/------------------------------------------/
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
202
'---masukan data barang ke listview '---nambah data baru Dim NOmer As Integer
NOmer = ListView1.ListItems.Count + 1 Dim Lv As ListItem Set Lv = ListView1.ListItems.Add(, , NOmer) Lv.SubItems(1) = Me.Text3 '---kode Lv.SubItems(2) = Me.TEXT4 '---nama Lv.SubItems(3) = Me.TEXT5 '---harga Lv.SubItems(4) = Me.Text6 '---jumlah Lv.SubItems(5) = Me.Text7 '---subtotal '--- kosongkan barang Me.Text3 = "" Me.TEXT4 = "" Me.TEXT5 = "" Me.Text6 = "" Me.Text7 = "" Me.Text3.SetFocus '/ hitung total Call HITUNG_TOTAL_JUAL
TOMBOL : CANCEL Text3 = "" TEXT4 = "" TEXT5 = ""
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
203
Text6 = "" Text7 = "" Text8 = "" Text13 = "" Text3.SetFocus
TOMBOL : RUBAH BARANG
'---rubah data di listview
Dim NOmer As Integer NOmer = Val(Text13) With ListView1.ListItems(NOmer) .SubItems(1) = Me.Text3 '---kode .SubItems(2) = Me.TEXT4 '---nama .SubItems(3) = Me.TEXT5 '---harga .SubItems(4) = Me.Text6 '---jumlah .SubItems(5) = Me.Text7 '---subtotal End With MsgBox "RUBAH DATA..", vbInformation Text3 = "" TEXT4 = "" TEXT5 = "" Text6 = "" Text7 = "" Text8 = "" Text13 = "" Text3.SetFocus
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
204
TOMBOL : DELETE BARANG '/ kode error ini untuk jaga2 kalo listview kosong di hapus sama user On Error Resume Next
'/ hapus data di posisi kursus aktif ListView1.ListItems.Remove ListView1.SelectedItem.Index
'/ urutkan kembali nomer urut barang Dim NOmer As Integer For NOmer = 1 To Me.ListView1.ListItems.Count ListView1.ListItems(NOmer).Text = NOmer '---simpan nomer di listview Next
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
205
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
206
Form bantuan
FORM MENCARI BARANG
(interaktif)
TOMBOL : AMBIL DATA Call AMBIL_BARANG
TOMBOL : REFRESH DATA Call REFRESH_data
Code di TXT_cari - Change() Call CARI_BARANG_interaktif
MSHFlexGrid1
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
207
PROCEDURE di FORM
Procedure untuk menampilkan data ke grid
Sub REFRESH_data() Call BUKA_db X = " SELECT * FROM BARANG ORDER BY NMBARANG" Set Rs = New ADODB.Recordset Rs.Open X, Conn, adOpenStatic, adLockOptimistic If NOT Rs.EOF Then Set Me.MSHFlexGrid1.DataSource = Rs With Me.MSHFlexGrid1 .SelectionMode = flexSelectionByRow .ColWidth(0) = 300 .ColWidth(1) = 1000 '--lebar kode .ColWidth(2) = 3000 '--lebar nama barang End With Rs.Close Set Rs = Nothing Else Me.MSHFlexGrid1.Clear End If End Sub
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
208
Procedure untuk mengambil pilihan data
Sub AMBIL_BARANG() With Form_PENJUALAN .TEXT3 = Me.MSHFlexGrid1.TextMatrix(Me.MSHFlexGrid1.Row, 1) '/---kodebarang .TEXT4 = Me.MSHFlexGrid1.TextMatrix(Me.MSHFlexGrid1.Row, 2) '/---namabarang .TEXT5 = Me.MSHFlexGrid1.TextMatrix(Me.MSHFlexGrid1.Row, 3) '/---harga
End With Unload Me End Sub
Procedure untuk pencarian data interaktif
Sub CARI_BARANG_interaktif() On Error Resume Next Call BUKA_db X = "" '/-----query berdasarkan KDBARANG-----------------------------------/ If Option1.Value = True Then X = " SELECT KDBARANG,NMBARANG,HARGA FROM BARANG " X = X & " WHERE KDBARANG LIKE '" & Trim(Me.TXT_cari) & "%' " X = X & " ORDER BY KDBARANG" End If '/-----query berdasarkan NMBARANG-----------------------------------/ If Option2.Value = True Then X = " SELECT KDBARANG,NMBARANG,HARGA FROM BARANG " X = X & " WHERE NMBARANG LIKE '" & Trim(Me.TXT_cari) & "%' " X = X & " ORDER BY NMBARANG" End If
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
209
Set Rs = New ADODB.Recordset Rs.Open X, Conn, adOpenStatic, adLockOptimistic If NOT Rs.EOF Then Set Me.MSHFlexGrid1.DataSource = Rs With Me.MSHFlexGrid1 .SelectionMode = flexSelectionByRow .ColWidth(0) = 300 .ColWidth(1) = 1000 '--lebar kode .ColWidth(2) = 3000 '--lebar nama barang End With End If Rs.Close Set Rs = Nothing End Sub
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
210
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
211
Crystal Report
membuat BON
STRUK PENJUALAN
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
212
TAMPILAN BON PENJUALAN
(Master – Detail)
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
213
A.Membuat BON STRUK PENJUALAN
1
2
3
4
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
214
5
6
7
Pilih jenis koneksi nya;
OLEDB
Untuk SQL2000 pilih :
Microsoft OLEDB..
Jika pake SQL2005,2008
pilih: SQL Native Client
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
215
Hasilnya:
8
9
10
Ketik NAMA SERVER; ketik
(LOCAL) jika DB di kompi
sendiri
Ketik / pilih nama
database nya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
216
AMBIL TABLE TABLE YANG DIPERLUKAN (Barang, Customer, Jual, Jual_Detail)
Klik TABLE: BARANG + klik TOMBOL ADD, klik CUSTOMER+ADD… terus Selanjutkan RELATIONSHIP, CEK jika ada yg salah, HAPUS-lah link yg salah
14..
15
12
11
13
Jika koneksi OK, maka
nama2 TABLE akan
muncul. PILIH TABLE yg
akan dipake..
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
217
HAPUS LINK YG SALAH: klik garis nya + DELETE
BENAR
SALAH
BENAR
16
17
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
218
GAMBAR RELATIONSHIP TABLE
Ambil FIELD-FIELD yang diperlukan:
20 18
19
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
219
Klik NO_JUAL (Jual) + TOMBOL ADD Klik TGL (Jual) + TOMBOL ADD….
>> FINISH <<
21
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
220
B.GROUP DESIGN REPORT MASIH STANDARD
B. MENAMBAH GROUP (Untuk MASTER nya) Menu: INSERT + GROUP
15
16
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
221
>> GROUP JUAL.NO_JUAL (ini untuk DATA MASTER nya)
Hasilnya MUNCUL RUANG BARU yaitu: GROUP HEADER #1
17
18
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
222
DESIGN 1.GRUOP NAME NYA HAPUS AJA… KARENA TIDAK DIPERLUKAN
( KLIK KANANdi GROUP #1 NAME + DELETE)
2. GESERLAH GROUP HEADER untuk membuat ruang-ruang MASTER-DETAIL NYA
19
20
21
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
223
3. PINDAHKAN LABEL DARI : PAGE HEADER GROUP HEADER, setting tampilan BUAT JUDUL, DLL sbb:
22.Judul
23.judul
24.field
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
224
PREVIEW :
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
225
--optional—
Membuat TGL CETAK, JAM CETAK, HALAMAN
FIELD OBJECT Field object yg digunakan: PAGE NUMBER , PRINT DATE , PAGE N of M
INSERT FIELD OBJECT: Menu= INSERT + FIELD OBJECT
Ambil FIELD OBJECT, Langsung DRAG ke DESIGN REPORT nya…
24.
25.
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
226
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
227
Laporan Transaksi
MEMBUAT LAPORAN TRANSAKSI dengan BATAS TANGGAL
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
228
LAPORAN TRANSAKSI HARIAN 2 TANGGAL
Code di TOMBOL PRINT
Call BUKA_Db With CrystalReport1 '/---KONEKSI REPORT DG ODBC---/ .ReportFileName = App.Path & "\BON_PENJUALAN_OLEDB.RPT" .Connect = KONEKSI_string .DiscardSavedData = True .RetrieveDataFiles '/---UPDATE KAN DATABASE '/---SELEKSI DATA---/ If Me.Option1.Value = True Then .SelectionFormula = "" End If
OPTION1
OPTION2
OPTION3 OPTION4
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
229
'/---SELEKSI DATA PER TANGGAL---/ If Me.Option2.Value = True Then
.SelectionFormula = "{JUAL.TGL} >= CDATE('" &
Me.DTPicker1.Value & "') AND {JUAL.TGL} <=
CDATE('" & Me.DTPicker2.Value & "') " End If '/---TUJUAN PRINT; KE MONITOR/ PRINTER---/ If Me.Option3.Value = True Then .Destination = crptToWindow If Me.Option4.Value = True Then .Destination = crptToPrinter .WindowState = crptMaximized '/--TAMPILAN PENUH .WindowShowRefreshBtn = True '/--TOMBOL REFRESH MUNCUL .Action = 1 '/--JALANKAN REPORT End With
Keterangan:
PADA CRYSTAL REPORT GUNAKAN FUNGSI CDATE untuk membaca type data
TANGGAL
Penulisan TANGGAL DIAPIT dengan TANDA KUTIP SATU ( ‘ )
Jika tanggal RANGE maka
{TABLE.field} >= CDATE (‘Tgl-1’) and {TABLE.field} <= CDATE (‘Tgl-2’)
NulisnyA DI SAMBUNG
yahhh 1 BARIS
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
230
Info penting; Sebaiknya jika menggunakan SQL Server
REGIONAL SETTING dirubah ke ENGLISH UNITED STATED, agar format angka dan tanggal menjadi format
bahasa inggris
Control Panel + +
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
231
Selesai
Alhamdulillah Nantikan versi .Net nya
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
232
mySYSTEM adalah system untuk pabrik
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
233
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
234
Di beberapa customer:
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
235
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
236
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
237
Apapun & Gimanapun gaya-nya.. TETAP MANIS + KEREN…
Dosen+Model
0857-73-59-59-69 TIDAK DILARANG untuk kirim-kirim PULSA ke nomer ini…
^_^
@Indra ES Keren,Beken,Manis,Imut,dll , 0857-73-59-59-69
238
Terima kasih Sudah membaca PDF ane
Semoga mamfaat
Jika ingin be-donasi silahkan transfer ke BCA ane:
Nama: indra erawan sanjaya No.rekening : 84-2000-54-75