31 Agustus 2014

Video Tutorial : Cari cepat dengan SQL LIKE - ADODC + DATAGRID (vb6)

Pencarian cepat dengan input pada textbox dan dimunculkan pada datagrid. Dengan bantuan syntax SQL "like" dan koneksi adodc.

12 Agustus 2014

AUTONUMBER PADA DATAREPORT (2)

Sebelumnya alangkah baiknya Anda simak posting saya tentang Autonumber pada Datareport pada link dibawah ini :

Pada posting tersebut saya sampaikan link download project visual basic 6.0 membuat autonumber pada Datareport

Project tersebut adalah contoh membuat autonumber pada Datareport dengan koneksi secara manual sehingga harus mengkoneksikan ulang setiap berganti lokasi database (pindah komputer), koneksi ke tabelnya pun menggunakan pengaturan properties secara manual sehingga penomoran tidak berfungsi ketika data di Filter.

Dengan menggunakan contoh project yang sama saya sedikit memodifikasinya agar lebih fleksibel untuk digunakan, yaitu dengan menggunakan coding untuk koneksi dan commandText dataenvironmentnya.



Kurang lebih seperti ini codingnya :

Pada Form1

Private Sub Combo1_Click()
Adodc2.RecordSource = "SELECT " + _
"1 + (SELECT COUNT(*) FROM (select * from nilai where kelas='" + Combo1.Text + "') where nama < a.nama) AS AUTONUM, " + _
"a.nama AS NAME, a.kelas as KELAS, a.nilai as NILAI " + _
"FROM nilai a where a.kelas='" + Combo1.Text + "' " + _
"ORDER BY nama "
Adodc2.Refresh

DataGrid1.Refresh
End Sub

Private Sub Command1_Click()


DataEnvironment1.Commands("command1").CommandText = Adodc2.RecordSource
Set DataReport1.DataSource = DataEnvironment1

DataReport1.Show

End Sub

Private Sub Form_Load()
Combo1.Clear
Adodc1.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" + _
                          "Data Source=" + App.Path + "\Data1.mdb;" + _
                          "Persist Security Info=False"

Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select distinct(kelas) from nilai"
Adodc1.Refresh
Do Until Adodc1.Recordset.EOF
    Combo1.AddItem Adodc1.Recordset(0)
    Adodc1.Recordset.MoveNext
Loop

Adodc2.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Data1.mdb;Persist Security Info=False"
Adodc2.CommandType = adCmdText
Adodc2.RecordSource = "SELECT " + _
                      "1 + (SELECT COUNT(*) FROM nilai  where nama < a.nama ) AS AUTONUM, " + _
                      "a.nama AS NAME, a.kelas as KELAS, a.nilai as NILAI " + _
                      "FROM nilai a  " + _
                      "ORDER BY nama "
Adodc2.Refresh

DataGrid1.Refresh
End Sub

Pada DataReport1

Private Sub DataReport_QueryClose(Cancel As Integer, CloseMode As Integer)
    If DataEnvironment1.rsCommand1.State = adStateOpen Then
        DataEnvironment1.rsCommand1.Close
    End If
End Sub

coding pada datareport diatas digunakan untuk menutup recordset, sehingga saat datareport dibuka lagi akan menggunakan recordset yang baru. (refresh)

Bingung kan? hehehe..
saya juga, download saja langsung sourcecodenya pada link dibawah ini :

18 Mei 2014

Step by step design Datareport tanpa DataEnvironment

Sebenarnya saya pernah posting tentang hal yang sama disini, akan tetapi selalu error link downloadnya. Agar tidak hilang lagi saya posting ulang tutorialnya saja.


Step 1 - Koneksi database dengan Adodc

contoh code koneksi database dengan Adodc, database yang saya gunakan adalah MS Access 2003

Adodc1.ConnectionString = "" + _
"Provider=Microsoft.Jet.OLEDB.4.0;" + _
"Data Source=D:\DATA\data.mdb;Persist Security Info=False"

Adodc1.RecordSource = "select * from jurnal"

Adodc1.Refresh

Step 2 - Menghubungkan datareport dengan Adodc

Set DataReport5.DataSource = Adodc1


Step 3 - Design Report

- Menambahkan data report, pilih menu Project (1) >> Add Data Report (2)


- Kemudian muncuk jendela data report untuk menampilkan field-field nya adalah sebagai berikut :
-- klik kanan pada section Detail (section1) (3)
-- pilih Insert Control (4)
-- pilih TextBox (5) atau yang lain (Label, line, image, shape, dll)


-- klik pada textboxt yang baru saja ditambahkan (6)
-- atur propertiesnya, terutama pada dataField, isi dengan nama field yang akan ditampilkan (7)


-- Ulangi langkah (3) sampai (5) untuk menambahkan textBox baru atau cukup dengan copy-paste, kemudian atur propertiesnya seperti langkah (6) dan (7)

-- hal tersebut berlaku untuk section-section yang lain

Step 4 - Menampilkan Report

Tambahkan code-code pada step 1 dan 2 pada 1 command, kemudian tambahkan code di bawah ini untuk menampilkan reportnya.

DataReport5.Refresh
DataReport5.Show
DataReport5.ZOrder 0


Demikian, Selamat mencoba.

3 Mei 2014

Reset nomor urut setiap berganti group pada Crystal Report

Membuat nomor urut pada crystal report itu sangat mudah, tinggal menambahkan special field RecordNumber ke section detail, maka secara otomatis nomor urut akan ditampilkan.


Mudah bukan? tapi apa yang terjadi jika model report kita ubah, misalnya dengan mengelompokkan -nya berdasarkan kode barang,  

Yah,, masih sama saja, nomor tidak mulai dari 1 (satu) lagi ketika berpindah group, tentunya ini akan mengurangi estetika report-nya (-lihat record yang diarsir-)

Untuk dapat membuat nomor urut mulai dari awal lagi setiap berpindah group tidak dapat dilakukan dengan special field recordNumber tetapi dengan menggunakan Running Total Field

Bagaimana caranya ? Mari kita lakukan bersama! :D

-Tambahkan Field Object Running Total Field - Menu >> Insert >> Filed Object (1)


- Kemudian muncul jendela Field Explorer
- Pilih Running Total Field (2)
- Pilih New atau tekan Tombol Ctrl dan N secara bersamaan (3)


- Kemudian muncul jendela Create Running Total Field


- Tulis Nama Field-nya, misalnya : "NomorUrut" (4)
- Pilih field apa saja yang penting dari tabel "detail" bukan dari tabel "master", (-contoh seperti gambar di atas saya menggunakan field ID dari t_beli-), kemudian klik tombol ">" yang paling atas (5)
- Pilih count pada dropdown Type of summary (6)
- Pilih For each record untuk evaluate-nya (7)
- Terakhir pilih On Change of group untuk Reset-nya (8)
- Akhiri dengan tombol "OK" (9)


- Drag Field NomorUrut yang baru saja dibuat ke section detail untuk menggantikan RecordNumber sebelumnya (10) dan hasilnya adalah ....


Berhasil, Alhamdulillah :)

Selamat mencoba, semoga bermanfaat.

24 April 2014

Membuat Nomor Zig-zag pada Crystal Report (Kolom tanda tangan)

Nomor Zig-zag? Ini hanyalah istilah penulis untuk menggambarkan nomor urut yang disusun pada sisi kiri untuk nomor ganjil dan disisi kanan untuk nomor genap. Susunan nomor tersebut lazim ada pada daftar penerimaan uang atau barang. Susunan seperti itu bertujuan untuk memungkinkan space yang cukup untuk membubuhkan tanda tangan.

Apabila menggunakan Excel pekerjaan tersebut adalah pekerjaan yang mudah dilakukan. Pada tulisan kali ini saya akan memberikan tips untuk membuat Nomor Zig-zag dengan menggunakan Crystal Report.

Ilustrasi nomor zig-zag

Langkah-langkahnya adalah sebagai berikut :
Pertama, menambahkan field recordnumber , Menu >> Insert >> pilih Field Object



Kemudian akan muncul jendela Field Explorer, klik (expand) pada spesial fields (1) pilih record number dengan cara double-click sampai terlihat tanda hijau disamping kiri recordnumber (2)


dan drag ke section detail (3) untuk menampilkan recordnumber-nya, lakukan sekali lagi dan tempatkan disamping kanannya (4)


Klik tab preview untuk melihat hasilnya


Hapus labelnya (5) kemudian Klik kanan pada recordnumber-nya untuk menyesuaikan formatnya (6)
Tambahkan label untuk menambahkan "........." di belakang nomornya (7) dan (8)


Yeah... sudah mulai ada bentuknya tu !!!

Selanjutnya bagaimana membuat nomor itu Zig-zag ?
Ini rahasianya, prinsipnya adalah dengan menyembunyikan atau menampilkan recordnumber dan label "......." di samping kanannya. Untuk baris pertama yang disembunyikan adalah recordnumber dan label "........." yang sisi sebelah kanan, baris selanjutnya berlaku sebaliknya.

Hal itu dapat dilakukan dengan membedakan recordnumber itu genap atau ganjil, sehingga recordnumber itu akan disembunyikan jika record itu genap atau ganjil

Menyembunyikan recordnumber genap
klik kanan pada recordnumber dan label "........." yang sisi sebelah kanan, kemudian pilih Format Object ...


Kemudian akan muncul jendela Format Editor, pilih tab common
Centang pilihan suppress (a), di klik tombol pensil di sebelah kanannya (b)


Tuliskan code sebagai berikut (c) :
recordnumber mod 2 <> 0

"artinya bahwa object akan disembunyikan jika sisa hasil pembagian recordnumber dibagi 2 adalah tidak sama dengan 0 (tidak habis dibagi), jadi pada baris pertama dan baris dengan recordnumber ganjil recordnumber dan label "........." disebelah kanan akan disembunyikan"

Selanjutnya klik tombol disket (d) dan akhiri dengan menekan tombol OK pada jendela Format Editor

Dan lihat apa yang terjadi :D, nomor 1, 3, 5,  dst akan hilang dari sisi recordnumber sebelah kanan


Nah sekarang tinggal recordnumber dan label "........." disebelah kiri yang belum di format, caranya sama seperti langkah (a) sampai (d) diatas hanya mengubah code pada Format Formula Editornya dengan code berikut :

recordnumber mod 2 = 0

dan hasilnya adalah :

Dan Nomor Zig-Zagnya sudah jadi. Alhamdulillah :)

Selamat mencoba, Semoga bermanfaat.

12 April 2014

Menghentikan Looping dengan tombol ESC (VB 6)

Suatu ketika saya mendapatkan data pembayaran biaya pendidikan mahasiswa di Fakultas tempat saya bekerja, yang terdiri dari beberapa ratus file MS excel yang saya download dari sistem informasi pembayaran tingkat Universitas, tugas saya adalah membuat report penerimaan/pendapatan Fakultas dari pembayaran biaya pendidikan, padahal data yang saya peroleh adalah data induk yang memuat beribu-ribu data dari seluruh Fakultas. Akhirnya saya putuskan untuk membuat aplikasi sendiri dengan database sendiri. Dengan metode looping dan filter berdasarkan Fakultas akhirnya saya berhasil mempunyai database pembayaran khusus Fakultas, Alhamdulillah.

Tapi bukan itu permasalahannya, Hehehe..

Waktu itu jam di kantor menunjukkan sesaat lagi harus berkemas untuk pulang, padahal proses import data baru saja saya mulai, ahh.. berarti saya telat pulang. Sebenarnya bisa saja saya hentikan prosesnya dengan CTRL+ALT+DEL, atau langsung Turn Off PC-nya, tapi sepertinya langkah itu sedikit Arogan :D

Di lain kesempatan saya putuskan memperbaiki aplikasi tersebut, akhirnya setelah beberapa kali mencari saya mendapatkan inspirasi dan referensi di sini :

Kemudian saya terapkan dalam project VB 6 saya persis seperti yang ada dalam referensi saya yang nomor 1, seperti ini :

Option Explicit

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Sub Command1_Click()
    for i = 1 to MsFlexgrid1.Rows-1

        'masukkan perintah-perintah anda disini
        If WasKeyPressed(vbKeyEscape) Then Exit For
    Next i

    Label1.Caption = "Exited loop successfully"

End Sub

Function WasKeyPressed(ByVal plVirtualKey As Long) As Boolean
    If (GetAsyncKeyState(plVirtualKey) And &H8000) Then WasKeyPressed = True
End Function

Dan akhirnya saya bisa menghentikan impor data kapan pun saya inginkan dan pulang tepat waktu :D

ilustrasi menghentikan looping

Selamat mencoba. Semoga bermanfaat. Good Luck ! :p