Membulatkan Angka Keatas (Ceiling)

Untuk membulatkan angka pecahan di visual basic 6 kita dapat menggunakan fungsi Round, kira-kira hasilnya akan sebagai berikut :
Round(1.1) -> 1
Round(1,5) -> 2
Round(1,7) -> 2

Bagaimana jika kita ingin membulatkan selalu kebawah? gampang…., tinggal ambil nilai integernya.
Int(1.1) -> 1
Int(1,5) -> 1
Int(1,7) -> 1

Yang agak sulit, bagaimana jika kita ingin pembulatan selalu keatas? pake fungsi apa ya?, hmmm… saya sempat bingung juga, tapi akhirnya ketemu caranya juga, caranya sebagai berikut :

Buat fungsi berikut :


Function Ceiling(number As Double) As Long
    Ceiling = -Int(-number)
End Function

Cara penggunaannya :
x=Ceiling(1.1) -> x=2
x=Ceiling(1,5) -> x=2
x=Ceiling(1,7) -> x=2

Komentar

Menghitung Umur (tahun, bulan dan hari) dengan VB6

Contoh program untuk menghitung umur dengan Visual Basic 6.
1. Fungsi calculateAge adalah fungsi untuk menghitung umur yang akan mengembalikan nilai string yang berisi informasi x Tahun, x Bulan dan x Hari

2. Sub test adalah contoh untuk memanggil fungsi calculateAge


Function calculateAge(dateOfBird As Date, fromData As Date) As String
    Dim dateNow As Date
    Dim tgl As Date
    Dim tgl1 As Date

    Dim years As Long
    Dim months As Long
    Dim days As Long

    Dim yearWord As String
    Dim monthWord As String
    Dim dayWord As String

    dateNow = fromData
    tgl = dateOfBird

    ' menghitung tahun
    years = DateDiff("yyyy", tgl, dateNow)
    If month(tgl) > month(dateNow) Then
        years = years - 1
    ElseIf month(tgl) = month(dateNow) And day(tgl) > day(dateNow) Then
        years = years - 1
    ElseIf month(tgl) = month(dateNow) And day(tgl) = day(dateNow) Then
        GoTo finally ' jika bulan dan tanggal sama maka perhitungan selesai
    End If

    ' menghitung bulan
    tgl = DateAdd("yyyy", years, tgl)
    months = DateDiff("m", tgl, dateNow)
    If day(tgl) > day(dateNow) Then
        months = months - 1
    ElseIf month(tgl) = month(dateNow) And day(tgl) >= day(dateNow) Then
        months = months - 1
    End If

    tgl = DateAdd("m", months, tgl)

    ' menghitung hari
    days = DateDiff("d", tgl, dateNow)

finally:
    yearWord = IIf(years = 0, "", years & " Tahun &quot ;)
    monthWord = IIf(months = 0, "", months & " Bulan &quot ;)
    dayWord = IIf(days = 0, "", days & " Hari &quot ;) 

    calculateAge = yearWord & monthWord & dayWord
    calculateAge = Trim(calculateAge)
End Function

Private Sub test()
    Dim strMsg As String
    strMsg = "Umur : " & calculateAge(#1/30/2000#, #6/26/2008#)
    'result = "Umur : 8 Tahun 4 Bulan 27 Hari"
    MsgBox strMsg, vbInformation
End Sub

Komentar

VB6 : Membuka berbagai jenis file

Berikut cara untuk berbagai jenis file seperti file .txt, .doc, dll….
Anda bisa saja cuma menggunakan keyword shell, tapi biasanya ini cuma sukses untuk memanggil bat file (*.bat).

Anda dapat menggunakan file shell32.dll, sintaknya sebagai berikut :


' membuat enum data untuk mode windows state
Enum State
    SHOWNORMAL = 1
    SHOWMINIMIZED = 2
    SHOWMAXIMIZED = 3
    SHOWMINNOACTIVE = 7
    SHOWDEFAULT = 10
End Enum

' mendeklarasikan fungsi yang memanggil library dari shell32.dll
Private Declare Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" (ByVal hWnd As Long, _
        ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As Long

' fungsi untuk membuka file
Public Function OpenLocation(URL As String, _
    WindowsState As State) As Long

    Dim lHWnd As Long
    Dim lAns As Long

    lAns = ShellExecute(lHWnd, "open", URL, vbNullString, _
    vbNullString, WindowsState)
    OpenLocation = lAns
End Function

Sub Main()
    OpenLocation "c:\test.txt", SHOWNORMAL
End Sub

Komentar

VB6 : Error 28: “Out of Stack Space” saat package VB Project + Crystal Report 8.5 dengan PDW

Jika anda sedang membuat package menggunakan tool Packaging and Development Wizard (PDW) dan anda mengalami masalah Error 28: “Out of Stack Space”, untuk pemecahannya silahkan anda kunjungi link berikut : http://support.microsoft.com/kb/305558#top.

Link ini saya dapat dari milis visualbasic6programming@yahoogroups.com

Komentar (2)

VB6 : Contoh Fungsi yang mengembalikan nilai array

Di suatu milis dulu pernah ada yang tanya apakah bisa suatu fungsi mengembalikan nilai array, saat itu saya ikut jawab tidak bisa, karena saya mengacu pada cara penulisan fungsi yang sama dengan cara penulisan array.
Akan tetapi ternyata bisa jika suatu fungsi mengembalikan nilai bertipe array, contohnya sebagai berikut :


'fungsi getArray akan mengembalikan data array bertipe Long Integer
Function getArray() As Long()
    Dim myLocalArray() As Long
    Dim i As Integer
    ReDim myLocalArray(100) As Long
    For i = 0 To 100
        myLocalArray(i) = i * 10
    Next i
    getArray = myLocalArray
End Function

Sub main()
    Dim myArray() As Long
    myArray = getArray
End Sub

Komentar

SQL : Replace Single Quote dengan Double Single Quote

Apakah anda bermasalah jika memasukan kata yang mengandung caracter single quote (’) dengan perintah SQL?

Contoh SQL :
INSERT INTO Publisher(Code, Name) VALUES (’P001′,’O'Riley’);

Apa yang akan terjadi jika kita coba mengeksekusi SQL diatas, tentunya akan terjadi error karena ada caracter singel quote (’) pada data yang kita masukan, tepatnya pada kata O’Riley.

Untuk mengatasi permasalahan diatas anda dapat menambahkan satu caracter single quote disebelah caracter single quote yang telah ada, sehingga menjadi double single quote.
SQL menjadi :
INSERT INTO Publisher(Code, Name) VALUES (’P001′,’O”Riley’);

SQL diatas tidak akan merubah maksud dari penyimpanan, data yang tersimpan tetap O’Riley dan bukan O”Riley

Cara ini sepertinya bisa untuk semua database engine, karena ini merupakan cara standard.( CMIIW)
DB engine yang telah saya test antara lain MySQL, PostgreSQL, MS. Access, HSQL, SQLite 3

Komentar

VB6 : Angka Terbilang Library - Penerjemah angka kedalam kata-kata

Angka Terbilang Library (KWATerbilang6.dll) adalah library yang berfungsi untuk menerjemahkan angka kedalam bentuk kata-kata untuk VB 6. Fungsi dan penggunaanya hampir sama dengan KWATebilang.dll untuk .Net (VB 2005 : Angka Terbilang Library - Penerjemah angka kedalam kata-kata).
Library dapat didownload di http://astawan008.googlepages.com/KWATerbilang6.dll dan bebas digunakan pada project anda, baik komersil maupun tidak.

Jika ada bug error silahkan anda kirim bug error tersebut ke email saya di astawan008@gmail.com

Silahkan download dan copy file KWATerbilang6.dll ke komputer anda, lalu load library melalui menu Project - Reference, tekan tombol Browse, lalu cari file library yang telah anda copy tadi, jika telah ditemukan, pilih dan tekan tombol OK, setelah itu akan daftar Available Reference akan muncul KWATerbilang Library for VB 6.

Cara lain untuk meregistrasikan library adalah, copy library ke direktori sistem anda (ex: c:\windows\system32), lalu masuk ke Command Prompt kemudian ketikan regsvr32  c:\windows\system32\KWATerbilang6.dll, tekan Enter.

Contoh coding penerapan pada aplikasi VB 6:


Sub main()
    ' buat object instant dari kwaTerbilang
    Dim at As New KwaTerbilang6.cKWATerbilang

    Dim angka As Double
    Dim angkaTerbilang As String

    angka = 1545600
    ' terjemahkan angka menggunakan method KwaTerbilang
    angkaTerbilang = at.KwaTerbilang(angka)

    ' hasilnya adalah "Satu Juta Lima Ratus Empat Puluh Lima Ribu Enam Ratus"
End Sub

Komentar

VB 2005 : Angka Terbilang Library - Penerjemah angka kedalam kata-kata

Angka Terbilang Library (KWATerbilang.dll) adalah library yang berfungsi untuk menerjemahkan angka kedalam bentuk kata-kata.
Contoh : 25,000 menjadi Dua Puluh Lima Ribu, 160,500 menjadi Seratus Enam Puluh Ribu Lima Ratus.

Penerjemah ini biasa saya gunakan pada modul cetak kwitansi pembayaran yang biasanya berisi terbilang dari jumlah yang dibayarkan.

Library ini dibuat menggunakan VB 2005 yang tentunya berbasis .Net Framework 2.0 dan telah diterapkan dibeberapa project yang menggunakan VB 2005. untuk VB 2003 yang berbasis .Net Framework 1.0 dan VB 2008 yang berbasis .Net Framework 3.0/3.5 saya belum pernah mengetesnya, tetapi seharusnya berjalan normal, karena dibuat menggunakan bahasa standar VB .Net. Library ini tidak bisa digunakan pada VB 6, karena banyak perbedaan yang signifikan diantara versi VB tersebut.

Range angka yang dapat ditangani adalah bilangan bulan antara 0 - triliun, karena diatas itu saya nggak tau lagi istilahnya dan juga nggak bisa membayangkan kalau punya uang diatas nilai tersebut he..he..

Library dapat didownload di http://astawan008.googlepages.com/KWATerbilang.dll dan bebas digunakan pada project anda, baik komersil maupun tidak.

Jika ada bug error silahkan anda kirim bug error tersebut ke email saya di astawan008@gmail.com

Cara Penggunaan  Library

Silahkan download dan copy file KWATerbilang.dll ke komputer anda, lalu load library melalui menu Project - Add Reference, masuk ke tab Browse, lalu cari file library yang telah anda copy tadi, jika telah ditemukan, pilih dan tekan tombol OK.

Contoh coding penerapan pada aplikasi :


Sub main()
' buat object instant dari kwaTerbilang
    Dim at As New KwaTerbilang.cKWATerbilang

    Dim angka As Double
    Dim angkaTerbilang As String

    angka = 1545600
    ' terjemahkan angka menggunakan method KwaTerbilang
    angkaTerbilang = at.KwaTerbilang(angka)

    ' hasilnya adalah "Satu Juta Lima Ratus Empat Puluh Lima Ribu Enam Ratus"
End Sub

Komentar (1)

2 Cara Bermain Dengan Array dalam Visual Basic .Net

VB .Net menghadirkan dua jenis array, yang pertama array normal yang kita dapat dengan mendeklarasikan sebuah variable menggunakan tanda (), yang kedua dengan cara membuat array objek dari class Array yang dibawa oleh VB.Net. Class Array menyediakan beberapa metode spesial untuk memanipulasi array seperti reversing, sorting dan searching.

Berikut adalah cara pertama yaitu dengan mendeklarasikan variable myArray dengan menambahkan karakter () dibelakang variable.


Private Sub firstArray()
 Dim myArray(10) As Integer
 For i As Integer = 0 To 10
  myArray(i) = i * i
 Next
 
 Dim txt As String = ""
 For i As Integer = 0 To 10
  txt &= myArray(i) & vbCrLf
 Next
 MsgBox(txt)
End Sub

Berikut adalah cara kedua yaitu dengan membuat objek myArray dari Class Array melalui method CreateInstance.


Private Sub secondArray()
 Dim myArray As Array = Array.CreateInstance(GetType(Integer), 11)</span>

<span style="font-size: 12pt; font-family: Arial;"> For i As Integer = 0 To 10
  myArray.SetValue(i * i, i)
 Next</span>

<span style="font-size: 12pt; font-family: Arial;"> Dim txt As String = ""
  For i As Integer = 0 To 10
  txt &= myArray.GetValue(i).ToString & vbCrLf
 Next
 MsgBox(txt)
End Sub

Untuk cara diatas jika Option Strict Off, kita dapat memberi nilai array dengan cara myArray(i) = i * I, tetapi jika Option Strict On kita harus menggunakan myArray.SetValue(i * i, i). Begitu pula dengan pengambilan nilai jika Option Strict Off, pengambilan nilai array dapat dilakukan dengan myArray(i).ToString, tetapi jika Option Strict On, maka pengambilan nilai harus melalui myArray.GetValue(i).ToString

 

Resizing

Untuk mengubah ukuran array normal kita dapat menggunakan keyword ReDim dan tambahkan keyword Preserve jika kita ingin mempetahankan nilai yang sudah ada.

Contoh :

Dim myArray(100) As Integer

 

Untuk mengubah ukuran menjadi 200 tetapi tidak ingin mempetahankan nilai yang sudah ada.

ReDim myArray(200) As Integer

 

Untuk mengubah ukuran menjadi 200 tetapi nilai yang sudah ada akan dipertahankan.

ReDim Preserve myArray(200) As Integer

 

Sedangkan untuk array objek kita tidak dapat merubah ukurannya yang sudah diset pada saat deklarasi, akan tetapi dapat diakali dengan cara mengcopy objek array ke objek array yang baru dengan catatan destination objek array length tidak lebih kecil dari pada source objek array.

Contoh :

Dim myArray As Array = Array.CreateInstance(GetType(Integer), 100)

Dim myArray1 As Array = Array.CreateInstance(GetType(Integer), 200)

myArray.CopyTo(myArray1, 0)

 

Speed

Dengan beberapa keunggulan yang dimiliki array objek seperti adanya reserving, sorting dan searching, mungkin kita akan lebih senang menggunakan array ini dari pada menggunakan array normal, akan tetapi sebelum menentukan pilihan akan lebih bijak jika kita mengetahui sedikit tentang kecepatan yang dimiliki oleh masing-masing jenis array.

 

Untuk masalah kecepatan, array dari variabel akan lebih cepat dari pada array objek, namun jika aplikasi anda mengolah array yang panjangnya hanya sampai ribuan, perbedaan kecepatan mungkin tidak berarti, tetapi akan berbeda jika panjang array yang anda olah sudah sampai jutaan, diposisi ini anda harus mempertimbangkan lebih baik menggunakan array variable dari pada array object.

 

Dari salah satu sumber yang pernah saya baca, untuk membuat 10 juta array 1-D dan 2-D, array normal membutuhkan waktu sekitar 0,1092 baik untuk array 1-D maupun array 2-D, sedangkan array objek membutuhkan waktu 1,2636 untuk array 1-D dan 1,4508 untuk array 2-D.

 

 

 

 

Komentar

VB6: Mengetahui Apakah DSN/Database ODBC Driver Sudah Terinstall Atau Belum

Dalam membuat aplikasi khususnya yang berhubungan dengan database, tentunya kita tidak bisa menghindar dari apa yang namanya DSN atau Driver database atau ODBC Driver, karena mereka merupakan jembatan yang akan kita gunakan untuk mengakses dan memanipulasi data yang ada dalam database.
Mungkin kita tidak akan memperhatikan keberadaan driver tersebut jika kita membuat aplikasi menggunakan databasenya Ms Access (*.Mdb), untuk mengaksesnya biasanya kita menggunakan driver Microsoft Access Driver (*.Mdb) ataupun Driver do Microsoft Access (*.Mdb) yang natobene telah terinstall langsung saat kita menginstall OS Windows ataupun paket Office, tapi bagaimana jika database engine yang digunakan adalah MySql/PostgreSql/FireBird Sql.
Untuk MySql khususnya MySql versi 5.x, driver yang digunakan adalah MySql ODBC 3.51 Driver yang tidak akan atau belum terinstall saat kita menginstall OS Windows ataupun saat kita Menginstall MySql Server itu sendiri di suatu mesin. Driver MySql ODBC 3.51 Driver dapat diinstall dengan menginstall package MySQL ODBC 3.51 Driver yang dapat didownload dari website mysql.

Kembali ketopik pembahasan, saat aplikasi dijalankan dan akan membuat koneksi ke database maka aplikasi akan menggunakan driver tersebut, jika driver yang digunakan tersedia maka aplikasi akan dapat membuat koneksi, jika tidak tersedia maka aplikasi tidak akan dapat membuat koneksi ke database. Ibarat kita akan menyeberangi sungai yang lebar, dalam dan deras, untuk menyeberang kita butuh suatu jembatan ataupun perahu, nah disini driver database ibarat jembatan ataupun perahu tersebut.

Dengan pemasalahan diatas kita dapat membuat aplikasi kita sedikit smart yaitu pada saat akan membuat koneksi kedatabase kita dapat mengecek dahulu apakah driver yang kita gunakan sudah tersedia atau belum, bila perlu jika ternyata driver tidak tersedia aplikasi dapat kita otomatis menginstall sendiri driver yang dibutuhkan (Tergantung dari spesifikasi driver itu sendiri, jika driver yang kita gunakan adalah MySql ODBC 3.51, sangat bisa dan ini sudah saya aplikasikan sendiri)

Untuk VB 6, Library yang dapat anda gunakan adalah ODBC Driver & Data Source Name Functions yang ada pada file ODBCTOOL.dll, file ini biasanya tidak ada didirektori system windows tapi ada didirektori Program files\Microsoft Visual Studio\Common\Tools\APE, anda dapat meload langsung dari VB ataupun memindahkan dahulu ke windows system baru kemudian diload ke program.

Berikut adalah fungsi untuk mengecek driver :

Function cekDriverExists(driverName As String) As Boolean
    Dim ODBCTool As New ODBCTool.Dsn
    Dim Dsn() As String, i As Long
    If ODBCTool.GetOdbcDriverList(Dsn()) Then
        For i = 0 To UBound(Dsn)
            If LCase(Dsn(i)) = LCase(driverName) Then
                cekDriverExists = True
                Exit Function
            End If
        Next
    End If
End Function

berikut adalah sintak yang memanggil fungsi cekDriverExists untuk mengetahui apakah driver tersedia atau tidak :
Sub main()
    Dim driverName As String
    driverName = “MySql ODBC 3.51 Driver”
    If cekDriverExists(driverName) = True Then
        MsgBox “Driver ‘” & driverName & “‘ tersedia”, vbInformation
    Else
        MsgBox “Driver ‘” & driverName & “‘ tidak tersedia”, vbExclamation
    End If
End Sub

Komentar (2)

« Tulisan sebelumnya