07 May 2018

Query Mysql untuk Menghitung Total Waktu (SUM TIME)

Query SUM adalah bagian dari query DML(Data Manaipulation Language) yaitu perintah SELECT yang berfungsi untuk menghitung atau mengetahui jumlah dari beberapa record. Hasil dari query ini berupa angka jumlah. Jika kita memiliki record 1,2,3,4 maka jika kita ingin mengetahui jumlahnya, kita dapat menggunakan query SELECT SUM(nama_field) as Jumlah FROM nama_tabel. Dari query tersebut akan dihasilkan angka 10 yang merupakan jumlah dari 1+2+3+4=10.
Namun bagaimana jika ingin menjumlahkan angka dalam betuk waktu atau TIME? Misalnya kita ingin menjumlahkan total keterlambatan atau total lama waktu kerja dalam 1 bulan.
Untuk mengetahui jumlah waktu maka ada 2 perintah query yang bisa kita gunakan. Kedua query tersebut tetap akan menggunakan perintah SUM untuk menjumlahkan, namun ada tambahan fungsi lain yang sudah disediakan oleh Mysql. Fungsi tersebut adalah:


  1. TIME_TO_SEC dan 
  2. SEC_TO_TIME


Fungsi TIME_TO_SEC


Fungsi TIME_TO_SEC ini dapat digunakan jika kita ingin mengubah waktu atau CONVERT TIME ke dalam bentuk detik atau second. Misalkan kita memiliki waktu 01:00:00 atau 1 jam 0 menit 0 detik, maka untuk mengubah ke dalam bentuk atau satuan detik atau second kita dapat menggunakan query sbb:


SELECT TIME_TO_SEC('01:00:00')

Dari query tersebut akan dihasilkan nilai berupa angka 3600 dimana angka tersebut merupakan jumlah detik dalam 1 jam. 1 jam=60 menit=3600 detik.


Fungsi SEC_TO_TIME
Fungsi SEC_TO_TIME ini dapat digunakan jika kita ingin mengubah waktu atau CONVERT TIME dari detik atau second ke dalam satuan jam atau hour. Misalkan kita memiliki waktu 3600 detik, maka untuk mengubah bentuk detik atau second tersebut ke dalam bentuk jam kita dapat menggunakan query sbb:

SELECT SEC_TO_TIME(3600)

Dari query tersebut akan dihasilkan 01:00:00 karena 3600 detik=60 menit=1 jam.


Total Waktu
Selanjutnya bagaimana untuk menghitung total waktu dari beberapa record. Misalnya kita memiliki record sebagai berikut:


No
Tanggal
Telat
12018-05-0700:01:00
22018-05-0801:00:00
32018-05-0900:30:00
42018-05-1001:30:00
52018-05-1100:30:10

Dari data di atas kita ingin menghitung berapa total keterlambatan. Maka kita bisa menggunakan perintah SUM dengan menambahkan fungsi yang sudah dijelaskan di atas.
Jika kita ingin mengetahui berapa detik total keterlambatan maka dapat digunakan query sbb;

SELECT SUM(TIME_TO_SEC(nama_field)) as Total FROM nama_tabel
SELECT SUM(TIME_TO_SEC(telat)) as Total FROM nama_tabel

Dari query di atas maka akan dihasilkan total detik keterlambatan, dimana akan dihasilkan angka 12670 dalam satuan detik.

Namun jika kita ingin menampilkan dalam satuan jam maka dapat digunakan fungsi SEC_TO_TIME dimana kita akan mengkonversi nilai detik ke dalam bentuk jam. Sehingga langkah awal kita tetap akan menghitung total detiknya terlebih dahulu baru kemudian kita convert ke dalam bentuk jam, dengan query sbb:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(nama_field))) as Total FROM nama_tabel
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(telat))) as Total FROM nama_tabel


Dari query di atas maka akan dihasilkan total detik keterlambatan yang sudah di konvert ke dalam bentuk jam, dimana akan dihasilkan 03:31:10.

Demikian semoga bermanfaat.
Read more ...

07 December 2012

Membuat Bentuk Segitiga Dari Karakter Asterik

Untuk membuat bentuk seperti gambar diatas kita bisa menggunakan metode perulangan, bisa menggunakan perulangan for....next atau bisa juga dengan do....while. Sejatinya kita hanya harus membuat urutan angka dari kecil ke besar kemudian ketika sampai pada data tengah urutan angka kembali menjadi lebih kecil, misalnya :
1
2
3
4
5
4
3
2
1
Untuk dapat membuat susunan angka menjadi seperti itu maka kita terlebih dahulu harus mengetahui banyaknya baris atau banyakknya data kemudian kita juga harus mengetahui data tengahnya. Untuk hasil yang proposional maka jumlah data sebaiknya ganjil.
Untuk mengetahui nilai tengah kita dapat menggunakan operator aritmatika "\" agar dapat mengetahui pembualatan dari hasil bagi misalnya 5\2 maka akan dihasilkan angka 2.
Untuk membuat  urutan seperti diatas maka sebelum sampai di data tengah angka ditambahkan dengan 1 (angka + 1) dan setelah melewati angka tengah maka jumlah data dikurangi dengan angkanya.
Berikut ini contoh kodenya dengan perulangan for:

jumlah_data = Val(Text1.Text)
tengah = (jumlah_data \ 2) + 1
For i = 1 To jumlah_data
  If i <= tengah Then
    For j = i To 1 Step -1
      Print "*";  'Untuk menghasilkan angka maka "*" dapat diganti dengan j
    Next j
    Print
  Else
    For j = i To jumlah_data
      Print "*";  'Untuk menghasilkan angka maka "*" dapat diganti dengan j
    Next j
    Print
  End If
Next i

Untuk program lengkapnya dapat didownload disini.
Read more ...

29 December 2011

Memecah Kata Dari Sebuah Kalimat

Ada beberapa cara untuk memecah sebuah kalimat menjadi kata-kata. Salah satu cara itu adalah dengan memanfaatkan prosedur perulangan. Dalam contoh yang saya buat saya menggunakan beberapa langkah agar dapat menghasilkan kata-kata dari sebuah kalimat yang di-input-kan dalam sebuah textbox yang kemudian dimasukkan ke dalam sebuah listbox.

x = 0
For j = 1 To Len(Trim(Text1.Text))

kt1 = Mid(Trim(Text1.Text), j, 1)
kta = kta + kt1

If kt1 = Chr(32) Then

x = x + 1

List1.AddItem Trim(kta)

kta = ""

End If

Next j

If x = 0 Then List1.AddItem Trim(kta)

If x > 0 Then List1.AddItem Trim(kta)


Dalam program ini saya menggunakan variabel "x" yang saya gunakan sebagai counter yang berfungsi untuk mengetahui jumlah kata pada textbox.
Untuk mendapatkan kata-kata pada kalimat saya menggunakan perulangan dan fungsi "Mid" yang dimulai dari "j" yang berasal dari nilai perulangan dan mengambil 1 karakter yang saya masukkan kedalam variabel "kt1". Selanjutnya variabel ini saya gabungkan kedalam variabel "kta" yang akan menghasilkan sebuah kata. Apabila dalam variabel "kt1" bernilai karakter spasi yang berarti ini adalah akhir dari sebuah kata maka program akan mengeksekusi percabangan "if" yang membuat counter "x" akan bertambah dan memasukkan kata dari variabel "kta" kedalam listbox dan mengosongkan kembali nilai variabel "kta" untuk selanjunya digunakan untuk menampung kata selanjutnya hingga perulangan selesai. Fungsi dari variabel "x" yang saya jelaskan diawal tadi akan terlihat pada dua baris terakhir program.

Pada baris " If x = 0 Then List1.AddItem Trim(kta)".
Apabila nilai variabel "x" adalah "0" maka dapat diartikan bahwa kalimat pada textbox hanya berisi sebuah kata saja karena tidak terdapat karakter spasi yang merupakan tanda akhir sebuah kata. Maka program akan memasukkan nilai dari variabel "kta" yang merupakan kata dari perulangan yang dilakukan sebelumnya kedalam listbox.
Sedangkan pada baris terakhir akan berfungsi untuk memasukkan kata terakhir pada kalimat di textbox. Apabila kita tidak menggunakan baris ini, maka program tidak akan memasukkan kata terakhir karena diakhir kalimat tidak terdapat spasi yang merupakan tanda akhir sebuah kata. Untuk membuktikannya anda bisa menghapus atau menonaktifkan baris terakhir ini dengan memberikan tanda " ' " di depan baris ini.

Berikut ini adalah contoh desain aplikasi yang saya gunakan :
Untuk coding lengkapnya kalau mau bisa di download disini.


Read more ...

20 March 2011

Mengambil Data Dari Form Lain

Ada saatnya ketika kita ingin mengambil data yang terdapat pada suatu form untuk dapat kita gunakan pada form lainnya. Misalnya kita memiliki data pada sebuah kontrol textbox pada form1 dan kita ingin mengambil data tersebut tanpa harus melihat kembali ke form1 atau kita tidak perlu melakukan copy paste dari satu form ke form yang lainnya. Caranya tidaklah sulit, format umumnya adalah sebagai berikut:

[kontrol]form_tujuan=form_sumber[.][kontrol_sumber][.][properti kontrol]

Sebagai contoh:
Ketika kita ingin mengambil data yang ada pada text1 pada form1 yang akan menjadi sumber data dan meletakkannya pada sebuah label1 pada form2 sebagai form tujuan maka kode yang harus kita tuliskan adalah:

label1.caption=form1.text1.text


Hanya seperti itu...???
Ho'o... hanya seperti itu. Namun ketika saya coba ternyata ada ketentuan lain yang harus diperhatikan. Ketentuannya adalah form sumber tidak boleh kita unload atau kita tutup secara penuh. Lantas bagaimana bila kita tidak ingin menampilkan form1..? Kita bisa menggunakan prosedur "hide" yang sudah ada pada setiap form untuk sekadar menyembunyikan form1. Untuk pemanggilannya kita bisa menggunakan perintah:

form1.hide atau Me.hide dimana Me disini adalah form tempat kode ini berada. Untuk melihat perbedaannya bisa dilihat pada contoh aplikasi sederhana ini.

Semoga bisa menambah pengetahuan buat pemula seperti saya.

Read more ...

25 December 2010

AplikasiPenguji Query SQL

Untuk mempermudah mempelajari dan memahami pernyataan atau query SQL salah satunya adalah dengan membuat sebuah aplikasi yang dapat menampilkan hasil dari eksekusi dari sebuah query SQL.

Aplikasi yang perlu dibuat tidaklah rumit kita hanya membutuhkan beberapa komponen yang sudah tersedia, yaitu : MS Data Bound Grid, Kontrol Data, Sebuah Textbox dan sebuah CommandButton. Untuk desain aplikasinya bisa dilihat disini.
Untuk database yang digunakan kita bisa menggunakan sampel database BIBLIO.mdb yang biasanya disiapkan pada

Private Sub Command1_Click()

On Error GoTo SQLErr:

Data1.RecordSource = Text1.Text

Data1.Refresh

If Data1.RecordSource <> "" Then
If (Data1.Recordset.RecordCount > 0) Then

With Data1.Recordset
.MoveLast

.MoveFirst

End With

End If
Else

MsgBox "Anda belum memasukkan query sql", vbInformation + vbOKOnly, "Blank Query"

End If

Exit
Sub
SQLErr:
Dim sErr As String

sErr = "Error Number: " & Err.Number & vbCrLf

sErr = sErr & Err.Description

MsgBox (sErr)

Exit Sub

End Sub


Private Sub Form_Load()
Data1.DatabaseName = "C:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB"

End Sub

Berikut penjelasan singkatnya :

Pada saat form di load maka kita akan mengatur properti databasename dari kontrol Data1 yang bisa kita ubah sesuai dengan database yang kita inginkan. Bila database yang kita gunakan berada satu folder dengan aplikasi yang kita simpan maka kita bisa menggunakan code sbb:

Data1.Databasename = App.Path & "\Nama Database.mdb"

Untuk penanganan kesalahan atau error maka kita memakai On Error GoTo SQLErr dimana apabila terjadi kesalahan maka program akan mengeksekusi SQLErr yang akan menampilkan nomor urut kesalahan dan deskripsi kesalahan dalam bentuk messagebox.

Sedangkan untuk menampilkan hasil eksekusi query sql yang sudah disiapkan pada textbox hanya dibutuhkan dua baris code yakni :

Data1.RecordSource = Text1.Text
Data1.Refresh

Dimana query pada textbox1 akan dimasukkan pada properti RecordSource dari kontrol Data1 yang kemudian data akan di-refresh dan ditampilkan ke kontrol DBGrid.

Sedangkan code dibawahnya digunakan untuk mengantisipasi program dari crash saja.

Untuk mendapatkan code secara lengkap bisa diambil disini.

Untuk mencoba program ini terlebih dahulu kita cari tahu tabel dan field apa saja yang ada pada database BIBLIO.mdb diantaranya terdapat tabel Authors, Publishers, Title Author, dan Titles. Sebagai percobaan pertama silahkan ketikkan query berikut pada textbox "Select * from Authors" dan lihat hasilnya. Kita juga bisa mencoba beberapa query SQL yang lain untuk mempelajarinya.

Semoga Berguna.................
Read more ...

30 June 2010

Menentukan Bilangan Prima

Bilangan prima adalah bilangan yang hanya bisa dibagi dengan angka 1 dan angka itu sendiri kecuali bilangan 1, kalau tidak salah itu adalah definisi yang diberikan guru dulu waktu SD, kalau sekarang da berubah aku gak tau. Untuk membuat sebuah aplikasi sederhana, terutama dengan menggunakan visual basic 6 kita bisa menggunakan banyak algoritma, bisa saja algoritma pemrograman yang saya gunakan tidak sama dengan yang anda pikirkan, saya kira hal itu sah-sah saja. Disini saya mencoba menggunakan algoritma yang sederhana saja dengan memamfaatkan perulangan "for ... next".

Untuk membuat aplikasi ini cukup mengggunakan sebuah textbox dan sebuah commandbutton. Berikut adalah contoh kode yang saya gunakan:

Private Sub cmdOK_Click()
Dim nilai, x
If Text1.Text = "" Then
MsgBox "Anda belum memasukkan angka", vbInformation + vbOKOnly, "Error"
Text1.SetFocus
ElseIf Val(Text1.Text) <= "0" Then
MsgBox "Anda hanya boleh memasukkan angka lebih besar dari 0", vbInformation + vbOKOnly, "Error"
Text1.SetFocus
ElseIf Val(Text1.Text) = "1" Or Val(Text1.Text) = "2" Then
MsgBox Text1.Text & " BUKAN PRIMA", vbInformation + vbOKOnly, "Informasi"
Text1.SetFocus
Else
For i = 2 To (Val(Text1.Text) - 1)
nilai = Val(Text1.Text) Mod Val(i)
If nilai = "0" Then
x = x + 1
Exit For
End If
Next i

If x > 0 Then
MsgBox Text1.Text & " BUKAN PRIMA"
Else
MsgBox Text1.Text & " BILANGAN PRIMA"
End If
End If
End Sub


Algoritma yang saya gunakan sangat sederhana menurut saya, dimana saya akan melakukan perulangan yang dimulai dari 2 sampai angka yang kita masukkan yang sudah dikurangi 1, dimana bila dalam perulangan program menemukan nilai bagi yang tidak ada sisa atau "0" maka bisa dipastikan bilangan itu bukan prima karena memiliki angka bagi. Untuk menghasilkan program seperti itu maka saya menggunakan operator matematika berupa"mod", yaitu nilai sisa dari hasil bagi. Misalnya 15 / 4 maka sisa baginya adalah 3, maka 15 mod 4 hasilnya adalah 3.

Bila sisa bagi adalah "0" maka nilai dari baris "If nilai = "0" Then" menjadi True maka program akan mengeksekusi baris dibawahnya yang menyebabkan nilai "x" menjadi bertambah 1 dan "exit for" digunakan untuk keluar dari perulangan dan akan langsung mengeksekusi perintah setelah "next".

Dalam kode program yang saya gunakan saya menggunakan kata "Val" yang merupakan perintah untuk konversi nilai ke numerik.

Sekali lagi saya tekankan, cara saya membuat program ini mungkin berbeda dengan yang anda pikirkan, namun itu bukanlah sebuah persoalan, mudah-mudahan contoh yang saya berikan bisa menambah pengetahuan kita semua. Semoga berguna.
Read more ...

22 June 2010

Form Login dengan Database

Untuk membuat form login yang berhubungan dengan data base pada dasarnya sama dengan membuat form login biasa. Yang menjadi perbedaan adalah kita mengambil data dari database yang sebelumnya telah tersimpan.

Untuk memulai mencoba membuat halaman login, terlebih dahulu membuat database misalnya dari microsoft access dengan nama tabel "login" dan berisi 2 buah kolom yaitu "username" dan "pass".

Setelah database kita buat maka tahap selanjutnya adalah membuat tampilan halaman login yang terdiri dari dua buah label, 2 buah text box dan dua buah command button.
Berikut adalah property yang saya ubah dari masing-masing tool:
Form : Caption > LOGIN
Label1 : caption > Username
Label2: caption > Password
Text1 : name > txtuser
Text2 : name > txtpass
PasswordChar > *
Command1: name > cmdLogin
Caption > &Login
Command2: name > cmdExit
Caption > &Exit
Berikut adalah bentuk tampilannya

formlogin


Setelah itu kita baru masuk pada tahap pembuatan kode:

Kalo mau coba ini ada contoh kode-nya. Kalo malas ngetik atau copas desain dan codenya bisa di ambil disini:

Private con As New ADODB.Connection
Private rst As New ADODB.Recordset
Private strconn As String
Private sql As String

Private Sub Connections()
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\db.mdb ;Persist Security Info=False;Jet OLEDB"
If con.State = adStateOpen Then
con.Close
Set con = New ADODB.Connection
con.Open strconn
Else
con.Open strconn
End If
End Sub

Private Sub cmdExit_Click()
End
End Sub

Private Sub cmdLogin_Click()
On Error Resume Next

Static i As Integer

If txtUser.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Nama", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus
ElseIf txtPass.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Kata Sandi", vbInformation + vbOKOnly, ":: Informasi ::"
txtPass.SetFocus
Else
sql = "SELECT * FROM LOGIN WHERE username='" & txtUser.Text & "'"
Set rst = con.Execute(sql)
If rst.EOF Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

ElseIf txtPass.Text <> rst("pass") Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

Else
MsgBox "Selamat anda berhasil login", vbInformation + vbOKOnly, "Informasi"
Unload Me
End If
End If
Exit Sub

noacc:
i = i + 1
If i = 3 Then
MsgBox "Maaf anda tidak berhak mengakses aplikasi ini !", vbCritical, ":: Gagal ::"
End
Else
Return
End If

End Sub

Private Sub Form_Load()
Call Connections
txtUser.Text = ""
txtPass.Text = Empty
End Sub

Penjelasan singkatnya sbb:

Private con As New ADODB.Connection
Private rst As New ADODB.Recordset
Private strconn As String
Private sql As String

Private Sub Connections()
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\db.mdb ;Persist Security Info=False;Jet OLEDB"
If con.State = adStateOpen Then
con.Close
Set con = New ADODB.Connection
con.Open strconn
Else
con.Open strconn
End If
End Sub


Baris-baris kode ini adalah modul koneksi ke database, biasanya diletakkan pada sebuah modul apabila kita memiliki banyak form, karena kita hanya memiliki sebuah form maka kita letakkan pada form. Dan prosedur ini akan kita panggil pada saat form kita load “call Connections”

Private Sub cmdExit_Click()
End
End Sub

Kode ini saya kira sudah sangat jelas, yaitu untuk mengakhiri atau menutup form.

Private Sub cmdLogin_Click()
On Error Resume Next

Static i As Integer

If txtUser.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Nama", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus
ElseIf txtPass.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Kata Sandi", vbInformation + vbOKOnly, ":: Informasi ::"
txtPass.SetFocus
Else
sql = "SELECT * FROM LOGIN WHERE username='" & txtUser.Text & "'"
Set rst = con.Execute(sql)
If rst.EOF Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

ElseIf txtPass.Text <> rst("pass") Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

Else
MsgBox "Selamat anda berhasil login", vbInformation + vbOKOnly, "Informasi"
Unload Me
End If
End If
Exit Sub

noacc:
i = i + 1
If i = 3 Then
MsgBox "Maaf anda tidak berhak mengakses aplikasi ini !", vbCritical, ":: Gagal ::"
End
Else
Return
End If

End Sub

Untuk bagian ini hamper sama ketika kita membuat halaman login tanpa data base yang sudah pernah saya postingkan, hanya saja yang menjadi perbedaan hanya terletak pada beberapa bagian saja. Yaitu pada

sql = "SELECT * FROM LOGIN WHERE username='" & txtUser.Text & "'"
Set rst = con.Execute(sql)
If rst.EOF Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

ElseIf txtPass.Text <> rst("pass") Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

Disini kita akan menggunakan query sql untuk melakukan pencarian username terlebih dahulu kemudian hasilnya kita simpan pada variable rst setelah eksekusi query dilakukan. Apabila data tidak ditemukan maka akan menuju ke sub prosedur noacc, namun bila ditemukan maka kita akan membandingkan nilai password yang ada pada database dan password yang di-input-kan oleh user.

Private Sub Form_Load()
Call Connections
txtUser.Text = ""
txtPass.Text = Empty
End Sub


Bagian ini adalah bagian yang pertama kali dijalankan oleh program karena ditelakkan pada saat form kita buka. Kode ini hanya berfungsi untuk melakukan pengaturan awal saya, misalnya call connections, yaitu untuk melakukan pangggilam koneksi ke database, kemudian pengatur textbox menjadi kosong yaitu dengan menggunakan (“”) atau bisa juga dengan kata Empty.

Dah Cuma gitu aja, kayaknya gak susah2 bgt. Met mencoba deh.
Read more ...

18 April 2010

Halaman Login Sederhana

Untuk membuat sebuah halaman login yang sederhana tidaklah sulit. Kita hanya membutuhkan sebuah form kemudian dua buah label dan textbox serta sebuah commandbutton. Halaman login yang akan dibuat ini akan melakukan pengecekan terhadap username dan password yang dimasukkan dan membatasi user dengan hanya boleh melakukan tiga kali kesalahan saja, bila melakukan tiga kali kesalahan maka aplikasi akan langsung melakukan logoff system. Berikut ini adalah property yang diubah pada masing-masing komponen dan ini bersifat optional saja, jadi kita bisa melakukan perubahan sesuai kemauan.
Form :
(Name) : frmLogin
BorderStyle : 1-fixed single
Caption : LOGIN
Label1:
Caption :Username
Label2:
Caption :Password
TextBox1:
Name :txtName
Text :dikosongkan
TextBox2:
Name :txtpass
PasswordChar: * (asterisk)
Text :dikosongkan
CommandButtton:
Name : cmdLogin
Caption : LOGIN

Berikut adalah contoh tampilan halaman login:



Untuk kodenya sebagai berikut:

Private Sub cmdLogin_Click()
Static i As Integer

If txtNama.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Nama", vbInformation + vbOKOnly, ":: Informasi ::"
txtNama.SetFocus
ElseIf txtPass.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Kata Sandi", vbInformation + vbOKOnly, ":: Informasi ::"
txtPass.SetFocus
ElseIf (txtNama.Text <> "Nama") Or (txtPass.Text <> "pass") Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtNama.SetFocus
Else
MsgBox "Selamat anda berhasil melakukan login", , "Berhasi"
End If
Exit Sub

noacc:
i = i + 1
If i = 3 Then
MsgBox "Maaf anda tidak berhak mengakses aplikasi ini !", vbCritical, ":: Gagal ::"
Shell "cmd /c shutdown -f"
Else
Return
End If
End Sub

Private Sub txtNama_KeyPress(KeyAscii As Integer)
If Not InStr("'", Chr(KeyAscii)) = 0 Then
If KeyAscii <> vbKeyBack Then
KeyAscii = 0
End If
End If
End Sub

Private Sub txtPass_KeyPress(KeyAscii As Integer)
If Not InStr("'", Chr(KeyAscii)) = 0 Then
If KeyAscii <> vbKeyBack Then
KeyAscii = 0
End If
End If

End Sub

Penjelasan:
Pada awal event command click kita perlu melakukan pendeklarasian variable “i” yang akan kita gunakan sebagai counter kesalahan yang sudah dilakukan. Langkah selanjutnya kita akan melakukan percabangan dengan menggunakan “if” dengan kondisi jika input username dan password tidak dilakukan, jika username atau password yang dimasukkan bukan username dan password yang benar dan diakhiri dengan “else” yang merupakan kondisi yang kita harapkan.
Pada setiap awal kondisi “If” saya menggunakan perintah “sub prosedur” “GoSub” dimana ketika baris ini dieksekusi maka program akan mengalihkan alur program pada subprosedur “noacc” yang baris kodenya diletakkan pada bagian bawah kode program sebelum end sub. Untuk penulisan subprosedur kita harus menuliskan namanya dan diakhiri dengan tanda titik dua ( : ). Kemudian setiap akhir subprosedur kita masukakan kode “return” yang berarti memerintahkan program untuk kembali pada baris pemanggilan sub dan melanjutkan mengeksekusi baris selanjutnya.
Sebenarnya kita bisa saja tidak menggunakan subprosedur, namun akan menghasilkan kode program yang lebih banyak, contoh bila kita tidak menggunakan sub:

If txtNama.Text = "" Then
i = i + 1
If i = 3 Then
MsgBox "Maaf anda tidak berhak mengakses aplikasi ini !", vbCritical, ":: Gagal ::"
Shell "cmd /c shutdown -f"
End
End If

MsgBox "Anda belum memasukkan Nama", vbInformation + vbOKOnly, ":: Informasi ::"
txtNama.SetFocus

ElseIf txtPass.Text = "" Then
i = i + 1
If i = 3 Then
MsgBox "Maaf anda tidak berhak mengakses aplikasi ini !", vbCritical, ":: Gagal ::"
Shell "cmd /c shutdown -f"
End
End If

MsgBox "Anda belum memasukkan Kata Sandi", vbInformation + vbOKOnly, ":: Informasi ::"
txtPass.SetFocus
ElseIf (txtNama.Text <> "Nama") Or (txtPass.Text <> "pass") Then
i = i + 1
If i = 3 Then
MsgBox "Maaf anda tidak berhak mengakses aplikasi ini !", vbCritical, ":: Gagal ::"
Shell "cmd /c shutdown -f"
End
End If
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtNama.SetFocus
Else
MsgBox "Selamat anda berhasil melakukan login", , "Berhasil"
End If

Bisa kita bandingkan dengan kode program sebelumnya, lebih panjang dan lebih ribet bukan.
Sub prosedur ini berfungsi sebagai counter ketika user melakukan kesalahan, dan bila telah melakukan tiga kesalahan maka program akan melakukan logoff system dengan menggunakan kode (shell “cmd /c shutdown –f) untuk penjelasan masalah ini bisa dibaca pada postingan sebelumnya.
Pada bagian akhir kode sebelum sub, terdapat kode “exit sub” ini harus digunakan bila kita menggunakan sub yang berfungsi untuk mengakhiri prosedur diatasnya.
Read more ...

22 December 2009

CommandButton Abjad

Untuk membuat tombol yang berurutan dari A hingga Z, bila kita melakukannya secara manual, berarti kita harus membuat 25 buah command button dengan caption yang berbeda, tentu hal ini akan membutuhkan waktu. Maka disini akan saya berikan cara membuat deretan command button dari A hingga Z dengan menggunakan kode program.

Langkah-langkanya sebagai berikut:

1. Buatlah sebuah commandbutton pada form dengan memberikan properti index dengan nilai “0” dan caption “A”.
2. Ketikkan kode berikut pada procedure Form_Load

For i = 1 To 25
Load Command1(i)
Command1(i).Left = Command1(i - 1).Left + Command1(0).Width
Command1(i).Caption = Chr(vbKeyA + i)

Next i


Dalam program ini kita memanfaatkan perulangan For...Next yang digunakan untuk membuat tombol-tombolnya. Perulangan dilakukan sebanyak 25 karena jumlah abjadnya ada 26 kita kurangi 1 karena sudah kita buat secara manual.
Perintah “Load Command1(i)” berfungsi untuk memuat atau membuat commandbutton selanjutnya dengan property name Command dan dengan index “i”.
Langkah selanjutnya program akan mengatur property Left pada tombol yang baru berdasarkan jarak kiri commandbutton sebelumnya ditambahkan dengan nilai property Width commandbutton sebelumnya.
Untuk memberikan nilai caption-nya kta menggunakan fungsi Chr dengan parameter nilai ASCII dari A (vbKeyA) ditambah dengan nilai “i”.
Bila kita selesai sampai disini maka tombol yang kita buat belum bisa tampil pada saat program kita run, sehingga kita perlu mengatur nilai visible-nya menjadi true. Untuk itu tambahkan kode berikut sebelum perintah “Next i”.

Command1(i).Visible = True
Read more ...

12 December 2009

Tool Debugging

Untuk mencari dan mengurangi error pada saat program dijalankan atau error karena kesalahan logika alur program maka kita harus menguasai beberapa tool debugging. Selain itu tool debugging jaga dapat kita gunakan untuk dapat lebih memahami dan mengikuti alur logika dari sebuah program agar dapat mengerti dengan baik proses yang terjadi di dalam program dan pada saat program kita jalankan.

Berikut ini adalah beberapa tool debungging yang dapat kita gunakan. Sebelumnya untuk menampikan tool debugging pada toolbar kita bisa masuk pada menu View -> Toolbars -> Pilih Debug. Maka akan muncul sbb:


  • Toggle Breakpoint
Berfungsi untuk mengatur statemen code dimana eksekusi seharusnya dihentikan. (F9)

  • Step Into
Berfungsi untuk mengeksekusi kode dibaris berikutnya dan masuk pada prosedur yang dipanggil (F8)

  • Step Over
Berfungsi untuk mengeksekusi kode dibaris berikutnya dan keluar dari prosedur yang dipanggil (Shift + F8)

  • Step Out
Berfungsi untuk menyelesaikan eksekusi dari sebuah prosedur dan berhenti di baris berikutnya di prosedur yang dipanggil. ( Ctrl + Shift + F8 )

  • Run to Cursor
Tool ini berfungsi untuk meneruskan dan menghentikan eksekusi di statement yang kita tentukan. (Ctrl + F8)

  • Quick Watch
Untuk menampilkan nilai dari ekspresi yang dipilih pada saat Break Mode ( Kondisi pada saat program menemukan sebuah kesalahan program, dimana biasanya VB akan masuk ke kondisi ini secara otomatis ). (Shift + F9)

Untuk dapat menguasai tool-tool ini tentu kita harus membiasakan diri dengan mereka. Untuk mencobanya anda bisa mencoba membuat program apa saja trus dicobain tool tadi.
Read more ...

11 September 2009

Tulisan Berkedip

Gimana seh caranya biar tulisan atau label kita yang ada pada form bisa kedap-kedip??

Caranya sangatlah mudah, cukup satu baris saja. Gak percaya ?? cobain deh:


label1.visible=not label1.visible

Tempatkan baris code tersebut pada event Timer, dan aturlah properti interval pada control timer sesuai keinginanmu.

Dah, cukup gitu aja. Kita hanya perlu meng-not-kan nilai dari visiblilitasnya saja seperti contoh ini.
Read more ...

12 January 2009

Mencari TextBox Kosong Dengan Perulangan

Untuk mengetahui textbox sudah diisi atau belum bisa dilakukan dengan beberapa cara, antara lain dengan menggunakan perintah "IF...THEN", namun bila kita menggunakan perintah ini kita diharuskan menulis code program yang cukup banyak, dan itu menjadi tidak efektif.

Ada cara lain yang menurut saya lebih efektif ketimbang kita menggunakan perintah "IF" yaitu dengan memanfaatkan perintah perulangan, perulangan yang saya maksud disini adalah perulangan dengan menggunakan "FOR .... NEXT"

Berikut adalah perintahnya yang saya masukkan ke dalam sebuh presedur:

Private Sub CekTextBoxKosong()
Dim ctrAs Control

For Each ctr In Me.Controls
   If TypeOf ctr Is TextBox Then
      If ctr.Text= vbNullString Then
         MsgBox "Textbox ini kosong"

         ctr.SetFocus

         Exit Sub

      End If

  End If
Next ctr

End Sub


Berikut ini penjelasan ringkas tentang code di atas:

Perulangan dilakukan terhadap variabel ctr dimana ctradalah sebuah kontrol yang terdapat pada form dimana code ini ditulis ( In Me.Controls).

Kemudian jika tipe dari ctr adalah textbox maka proram akan mengecek apakah ctr(TextBox) ada isinya atau tidak, jika masih kosong yang dalam visual basic kita bisa menggunakan vbNullString maka akan muncul kotak pesan dan akan langsung mengeset focus ke textbox yang kosong tersebut dan akan langsung menghentikan prosedur ini dengan perintah Exit Sub.

Dan perulangan akan terus berlanjut dengan adanya perintah Next.

Read more ...

26 December 2008

Berpindah Antar Kontrol Dengan Enter

Secara default untuk berpindah antar kontrol di vb kita bisa menggunakan tombol Tab yang sebelumnya tiap kontrol sudah kita atur properti TabIndex-nya. Namun kita juga bisa melakukannya dengan menggunakan tombol enter dimana kita akan menggunakan fungsi SendKeys.

Untuk menggunakan cara ini kita bisa menempatkan kodenya pada Event KeyPress pada tiap kontrol yang kita inginkan, misalnya pada textbox. Berikut ini adalah contoh kodenya:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys "{tab}"
KeyAscii = 0
End If
End Sub

Pada kode ini kita pastikan terlebih dahulu bahwa pengguna menekan tombol enter dimana tombol enter nilai ASCII-nya adalah 13. Setelah itu kita menggunakan fungsi SendKeys dimana kita mengirimkan nilai dari tombol Tab. Lalu nilai ASCII-nya kita kembalikan lagi menjadi 0.

Read more ...

22 November 2008

Perintah DOS pada Visual Basic 6.0

Terkadang kita ingin menggunakan perintah yang ada pada dos untuk melakukan sebuah kondisi, ni aku bagi caranya gampangnya, hanya beberapa baris aja kok gak panjang :

Sebelumnya siapkan sebuah form dengan satu buah command button, trus ketik code berikut:

Private sub command1_click()

sYourCommand="copy C:/vb.txt D:/vb.txt"
shell "cmd \c " & sYourCommand

End Sub

Dah cuma gitu aja code-nya.
Variabel sYourCommand adalah perintah dos yang ingin kita lakukan, pada code di atas dicontohkan kita akan menyalin file vb.txt pada C: ke D:, perintah ini bisa kita ganti dengan perintah dos yang lainnya.

Pada baris bawahnya kita menggunakan "Shell" yang berfungsi untuk memanggil aplikasi yang ada, disini kita memanggil aplikasi commnad promt, untuk memasukkan perintah dos kita menggunakan tambahan " \c " lalu kita tambahkan string tersebut dengan perintah dos yan telah kita simpan pada variabel sYourCommand.
Read more ...

17 July 2008

Marquee Form Caption

Ini ada sebuah tip menarik untuk mempercantik tampilan aplikasi yang kita buat. Dimana caption dari form yang kita gunakan akan berjalan dari kanan kekiri secara terus menerus.

Jika anda berfikir kode yang digunakan akan ribet dan banyak, maka tidak demikian, kode yang digunakan sangat sederhana karena hanya melibatkan beberapa fungsi dasar saja diantaranya fungsi Left yang digunakian untuk mendapatkan karakter dari sebelah kiri, lau ada fungsi Right yang berfungsi untuk mencari karakter yang dimulai dari sebelah kanan serta fungsi Len yang dipakai untuk mendapatkan panjang karakter.


Kontrol yang digunakan juga menggunakan kontrol standar dari visual basic 6.0 yaitu satu buah kontrol timer yang intervalnya kita set menjadi 100 atau bisa kita ganti sesuai keinginan kita.

Kalo mau mencoba silahkan ketikkan kode berikut:


Private Sub Form_Load()
Form1.Caption = " [ Belajar VB 6.0 ] "
End Sub

Private Sub Timer1_Timer()
a = Left(Form1.Caption, 1)
b = Len(Form1.Caption)
c = Right(Form1.Caption, b - 1)
Form1.Caption = c + a
End Sub



Sederhana kan ???
Read more ...

10 July 2008

Tampilan Warna Warni

Terkadang kita merasa bosan bila melihat aplikasi yang isinya hanya ada dua warna, hitam dan putih, maka kita harus punya cara yang kreatif agar tampilan aplikasi yang kita buat lebih terlihat bervariatif. Salah satu caranya adalah dengan membuat label yang warna tulisan dan background nya berubah-ubah alias warna warni.

Dalam visual basic telah tersedia sebuah fungsi yang bernama RGB singkatan dari RED GREEN BLUE yang berfungsi untuk mengatur intensitas warna merah, hijau dan biru pada suatu objek. Bentuk umum dari fungsi ini adalah RGB(Red As Integer, Green As Integer, Blue As Integer ).

Sebagai contoh kita bisa memasukkan RGB(255,0,0) untuk menampilkan warna merah. Angka 255 pada fungsi tadi dimaksudkan untuk mendapatkan warna merah yang maksimum, bila kita kurangi nilainya maka warna merahnya akan semakin tua. Kita juga bisa membuat gradasi warna yang lain yang kita inginkan.

Untuk membuat sebuah label atau background atau properti warna yang lain pada sebuah kontrol maka kita bisa memanfaatkan statement Randomize (Rnd) yang berfungsi untuk mengacak intensitas warna.
Mari kita coba membuat sebuah aplikasi dengan memanfaatkan fungsi RGB dan statement Rnd. Kontrol yang kita butuhkan adalah sebuah label dan sebuah Timer dengan interval 100. Lalu cobalah ketikkan kode berikut ini dan mainkan programmu. :


Private Sub Timer1_Timer()

Label1.BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)

Label1.ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)

End Sub

Kalau malas mengetikkan kodenya, bisa diambil contohnya disini. Read more ...

Mencari ASCII Sebuah Tombol

KEYASCII dari suatu tombol penting untuk kita ketahui bila kita sering menggunakan event keypress dari suatu kontrol. Namun untuk dapat menghafal semua ASCII dari tiap tombol pada keyboard lumayan sulit mengingat cukup banyaknya tombol. Lalu bagaimana cara membuat sebuah program aplikasi dari visual basic 6 untuk mengtahui nilai ASCII dari sebuah tombol.

Berikut ini ada sebuah aplikasi sederhana untuk mengetahui nilai ASCII pada tombol keyboard yang kita tekan dengan memanfaatkan event keypress.

Buatlah sebuah project baru dengan menambahkan sebuah kontrol. Kemudian ketikkan kode berikut :


Private Sub Text1_KeyPress(KeyAscii As Integer)

MsgBox "Nilai ASCII dari tombol yang anda tekan adalah " & KeyAscii

End Sub


Cara kerja dari program diatas sangat sederhana, yaotu kita cukup menekan sebuah tombol atau gabungan dengan tombol Shift maka akan muncul sebuah Message box yang menampilkan nilai ASCII-nya.

Sebagai catatan, tidak semua tombol dapat kita tampilkan KEYASCII-nya misalnya tombol anak panah, Shift, CTRL, dll.
Read more ...

19 June 2008

Mencari Selisih Tanggal

Untuk mencari selisih dari dua buah tanggal tidaklah sulit, karena dalam visual basic telah disediakan fasilitas untuk melakukan hal tersebut dengan menggunakan fungsi " datediff ", yaitu sebuah fungsi yang digunakan untuk mendapatkan selisih dari dua buah tanggal. Dari fungsi dafediff kita bisa mendapatkan selisih hari, bulan dan tahun dari dua buah tanggal.

Cara penggunaan dari fungsi ini adalah sbb:

dim hari, bulan, tahun

'Untuk mencari selisih hari
hari=DateTime.DateDiff("d", CDate(Text1.Text), CDate(Text2.Text))

'Untuk mencari selisih bulan
bulan = DateTime.DateDiff("m", CDate(Text1.Text), CDate(Text2.Text))

'Untuk mencari selisih tahun
tahun = DateTime.DateDiff("yyyy", CDate(Text1.Text), CDate(Text2.Text))


Dalam contoh code diatas yang membedakan dari tiap kegunaannya adalah fungsi "d,m dan yyyy", dimana ketiganya mewakili untuk hari atau day (d), bulan atau month (m).

Dalam kode diatas, terdapat satu fungsi yang berfungsi untuk meng convert mengubah tipe data dari string ke tipe tanggal, yaitu fungsi CDate .

Kode diatas dapat kita letakkan pada prosedur command_click atau bisa juga diletakkan pada tempat lain.
Read more ...

06 June 2008

Select TextBox

Terkadang kalau melakukan validasi data pada textbox, maka kita sering sekali menggunakan perintah " textbox.setfocus " untuk membuat textbox mendapatkan fokus sehingga kursor langsung menuju ke textbox tersebut. Namun cara ini menurut saya kurang asik, karena pengguna harus menghapus terlebih dahulu kata-kata yang berada dalam textbox tersebut, sehingga menjadi tidak efektif.

Ada salah satu cara, yaitu dengan memblok atau menyeleksi semua isi dari textbox sehingga bila user ingin mengganti data yang di-inputkan maka user tidak perlu menghapus terlebih dahulu, namun bisa langsung memasukkan data yang baru. berikut contoh code -nya:

Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1)
End Sub

Untuk membuat text terpilih semuanya maka kita dapat meletakkan code kita pada event GotFocus pada textbox. Event ini berfungsi saat componen yang kita mendapatkan fokus atau pada saat kursor berada pada komponen ini, dalam hal ini komponen yang kita gunakan adalah textbox.

Pada properti SelStart nilai value kita set dengan nilai 0 berarti text yang kita pilih dimulai dari depan, kalau pengen dicobain, nilai ini bisa diubah menjadi 1 atau 2 atau berapapun asalkan tidak lebih dari jumlah karakter yang kita masukkan, dan bisa dilihat perpedaannya.

Kemudian pada baris kedua adalah panjang atau lebar sel atau text yang akan diseleksi, pada code ini kita set nilainya dengan menggunakan perintah Len , yang berfungsi untuk mengetahui banyaknya karakter pada textbox1, sehingga program kita akan lebih dinamis, bayangkan saja bila nilainya kita set menjadi nilai tertentu misalnya 10, maka yang terjadi adalah bila user memasukkan karakter lebih dari 10 maka data pada textbox tidak akan terseleksi semua.

Selamat Berexperimen
Read more ...

11 May 2008

Membatasi Fungsi Keyboard

Saat membuat sebuah aplikasi dengan berbasiskan database salah satu hal yang sangat penting untuk diperhatikan adalah validasi data. Apa yang terjadi bila tipe data yang diinputkan oleh user ternyata tidak cocok dengan tipe data yang telah diberikan pada database ? Tentunya akan terjadi kesalahan karena tipe data tidak valid.

Untuk validasi nilai angka dan huruf saja mungkin tidaklah sulit kita bias menggunakan perintah “isnumeric” untuk validasi angka dan “not isnumeric” untuk validasi karakter huruf. Namun cara ini saya nilai tidaklah efektif karena apabila dalam satu textbox yang kita validasi berisi gabungan dari huruf dan angka maka validasi yang kita gunakan menjadi tidak berguna.

Berikut ini saya berikan cara untuk membatasi inputan dari user sesuai dengan karakter yang kita inginkan :


Private Sub text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then
MsgBox “Anda baru menekan tombol Enter”
End If

If InStr("0123456789,", Chr(KeyAscii)) = 0 Then
If KeyAscii <> vbKeyBack Then
KeyAscii = 0
End If
End If

End Sub

Fungsi yang saya gunakan untuk membatasi input dari user adalah perintah InStr. Dengan perintah ini maka user hanya dapat menekan tombol-tombol pada keyboard sesuai dengan yang kita izinkan, pada contoh saya diatas, saya hanya mengizinkan atau mengaktifkan tombol “0123456789,” pada keyboard yang telah memiliki nilai ACSII tersendiri. Apabila user mengetikkan selain “0123456789,” maka aplikasi tidak akan merespon dan tidak akan ditampilkan pada textbox. Lalu bagaimana bila kita hanya boleh mengizinkan user untuk memasukkan huruf kecil saja maka kita bias mengganti code tadi menjadi :

InStr("abcde s.d. z", Chr(KeyAscii)) = 0

Dan berlaku untuk karakter lainnya.
Lalu apa fungsi dari code dibawahnya :

If KeyAscii <> vbKeyBack Then
KeyAscii = 0
End If

Code ini untuk mengizinkan user menggunakan tombol Backspace (vbKeyBack) untuk memperbaiki data yang ditelah dimasukkan.
Kelebihan dari code ini adalah untuk mencegah user usil dengan memasukkan code tertentu yang bisa digunakan untuk membobol database yang ada. Terutama bila menggunakan login yang datanya diambil dari database.
Read more ...

Membuat Paket File Instalasi

Untuk membuat paket file instalasi dibutuhkan beberapa langkah sbb:
  1. Pastikan program yang kita buat sudah tidak terdapat kesalahan

  2. Buatlah file exe-nya dengan memilih file >> Make (Project Name) exe...

  3. Masuklah ke menu Add-Ins

  4. Pada kolom Available Add-Ins carilah Package and Deployment Wizard

  5. Pada bagian Load Behavior beri tanda centang pada Loaded/Unloaded dan Load on Startup >> OK.

  6. Maka pada menu Add-Ins akan muncul menu baru yaitu Package and Deployment Wizard pilihlah menu ini untuk langkah selanjutnya.

  7. Pada window yang muncul pilihlah Package

  8. Apabila muncul permintaan untuk mengkompile ulang pilihlah perintah Yes. Apabila proses kompile gagal, itu berarti program yang dibuat masih memiliki kesalahan.

  9. Langkah selanjutnya kita bisa langsung memilih Next hingga muncul jendela Package folder. Pada bagian ini pilihlah letak tempat penyimpanan hasil paketan kemudian Next.

  10. Apabila muncul jendela Missing Dependency Information kita bisa melewati bagian ini dan langsung memilih OK.

  11. Langkah selanjutnya adalah munculnya jendela Included Files, apabila anda menggunakan database access maka pilihlah Add dan carilah database anda. Apabila file tidak ditemukan pada jendela Add File, ubahlah files of type menjadi All Files (*.*).

  12. Sebelum memilih Next perhatikan terlebih dahulu Name dari File, hilangkan tanda centang pada file msado25.tlb. Pengalaman saya bila file ini tidak dihilangkan maka pada saat proses instalasi akan muncul pesan kesalahan yang bila kita Ignore maka tidak akan mempengaruhi aplikasi kita.

  13. Pada jendela selanjutnya ada dua pilihan yaitu Single Cap dan Multiple Caps, apabila dipilih Single Cap maka file-file aplikasi akan dibuat dalam satu file, namun bila kita memilih Multiple Caps kita bisa membagi file-file instalasi menjadi beberapa file sebesar Cap size, lalu Next

  14. Pada bagian Installation Title isilah kata-kata yang biasanya merupakan nama dari aplikasi yang kita buat, dan akan muncul sebagai latarbelakang pada saat proses instalasi.

  15. Pada langkah selanjutnya merupakan pengaturan tata letak shortcut pada start menu kita bisa mengubah tata letak dan namanya atau kita bisa langsung klik Next.

  16. Langkah selanjutnya kita bisa langsung klik Next juga pada bagian Shared files di langkah selanjutnya.

  17. Finish

  18. Pada akhir proses paket ada laporan yang bisa kita sompan atau bisa juga diabaikan.

  19. Cobalah melakukan instalasi dan cobalah.



Read more ...

02 May 2008

Visual Basic ? Apaan Sih ?

Apa sih visual basic itu ??

Visual Basic atau yang lebih dikenal dengan VB merupakan bahasa pemrograman yang menawarkan IDE ( Integrated Development Environment ) yang bertujuan untuk menfasilitasi pembangun perangkat lunak dengan utilitas yang diperlukan.

Visual Basic merupakan turunan dari bahasa basic. Basic yang singkatan dari Beginners’ All-purpose Symbolic Instruction Code yang merupakan salah satu bahasa tingkat tinggi dan sebenarnya tidak bisa disebut sebagai bahasa pemula karena bahasa basic juga digunakan oleh senior-senior atau pemrogram ahli.

Pada visual basic ditawarkan akses ke basis data menggunakan Data Access Objects(DAO), Remote Data Objects (RDO), atau ActiveX Data Object (ADO) dan dapat melibatkan banyak basis data mulai dari Oracle, Sql Server, Access dan MySql, serta menawarkan pembuatan kontrol ActiveX dan objek ActiveX dan masih banyak lagi keunggulan yang lain.

"Dalam pemrograman untuk bisnis, Visual Basic memiliki pangsa pasar yang sangat luas. Dalam sebuah survey yang dilakukan pada tahun 2005, 62% pengembang perangkat lunak dilaporkan menggunakan berbagai bentuk Visual Basic, yang diikuti oleh C++, JavaScript, C#, dan Java."(Wikimedia.org)
Read more ...

13 April 2008

Pencegahan Error Dengan Membatasi Tindakan Pengguna

Sebagai seorang pembuat program yang baik. Kita harus dapat memikirkan segala tindakan yang mungkin dilakukan oleh pengguna aplikasi kita dan kemudian mencegah hal-hal yang tidak boleh dilakukan agar error program dapat dicegah.

Ada beberapa cara sederhana yang dapat dilakukan untuk mencegah pengguna melakukan kesalahan dalam menggunakan aplikasi salah satunya adalah dengan membatasi tindakan pengguna.

Untuk dapat membatasi tindakan pengguna maka dapat dilakukan dengan menjaga agar tindakan yang dilakukan pengguna benar-benar aman walaupun terkesan dipaksakan. Contoh kasus, pada saat pengguna akan menambah data dengan menekan tombol Tambah lalu menuliskan data yang baru. Bagaimana bila sebelum pengguna belum menekan tombol Simpan dan langsung menekan tombol navigasi ? Untuk mencegah hal tersebut maka kita dapat mengatur propertis enable pada tombol navigasi. Contoh kode program untuk mengaktifkan dan menonaktifkan tombol navigasi :

Private Sub cmdNavigasi(status As Boolean)

cmdFirst.Enabled = status

cmdLast.Enabled = status

cmdNext.Enabled = status

cmdPre.Enabled = status
End Sub

Private Sub cmdTambah_Click()

Call cmdNavigasi(False) ‘---Menonaktifkan tombol navigasi
End Sub

Private Sub cmdSimpan_Click()

Call cmdNavigasi(True) ‘---Mengaktifkan tombol navigasi
End Sub

Tindakan lain yang perlu diwaspadai adalah bila pengguna tanpa sengaja menekan tombol Hapus, maka kita harus membuat sebuah konfirmasi sebelum data benar-benar dihapus.

Selain itu untuk membatasi tindakan penguna dapat dilakukan dengan mengunci textbox sehingga pengguna tidak dapat melakukan perubahan. Misalnya kita tidak ingin pengguna merubah kode tetapi kita juga tidak ingin menggunakan kontrol label sebab kadang kita juga ingin menambah data baru. Oleh karena itu kita dapat mencegahnya dengan melakukan penguncian pada textbox yang kita inginkan dengan mengatur properti Locked-nya menjadi True atau False untuk sebaliknya.

Agar kesalahan pada database dapat dihindari kita juga bisa membatasi jumlah karakter yang boleh dimasukkan oleh pengguna dengan mengatur properti maxlength-nya menjadi lebar data pada database misalnya pada database lebar data adalah 5 karakter maka properti textbox-nya kita set menjadi 5 yang default-nya adalah 0.

Kesalahan lain yang dapat terjadi adalah pada tipe data yang berbeda dan pengaturan Null atau data boleh kosong dan Not Null atau data tidak boleh dikosongkan, misalnya pada database tipe datanya adalah int(integer) maka pengguna tidak boleh memasukkan unsur huruf didalamnya. Untuk mencegah hal tersebut maka dibutuhkan sebuah validasi data untuk mengecek apakah data yang dimasukkan sudah sesuai dengan ketentuan database yang diharapkan. Contoh kode programnya adalah sebagai berikut :

Private Sub cmdSimpan_Click()

If txtKode.Text = “” Then ‘---input kosong

MsgBox "Data tidak boleh kosong", vbExclamation + vbOKOnly,"Sistem Error"

txtKode.SetFocus

ElseIf Not IsNumeric(txtKode.Text) Then ‘---input bukan angka

MsgBox "Data tidak boleh kosong", vbExclamation + vbOKOnly, "Sistem Error"

txtKode.SetFocus

Else

Call simpan_data

End If
End Sub
Read more ...

19 February 2008

Modul Koneksi Vb 6.0 dengan Database Sql Server 2000

Klo beberapa waktu lalu saya sudah mempostingkan cara untuk koneksi vb 6.0 dengan database microsoft access, sekarang saya berikan cara koneksi bila menggunakan database ms. sql server. Database yang saya gunakan adalah sql server 2000 jadi klo ada perbedaan cara koneksinya bila menggunakan database sql yang terbaru mohon dikonfirmasikan karena saya belum mencoba database yang baru.

Berikut adalah code-nya yang bisa diletakkan pada modul :


Public con As New ADODB.Connection
Public rst As New ADODB.Recordset 'berfungsi sebagai variabel penyimpan sementara record
Public strcon As String ' variabel untuk code koneksi
Public strsql As String ' variabel untuk menampung code atau query sql

Public Sub Connections()
strcon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test"
If con.State = adStateOpen Then
con.Close
Set con = New ADODB.Connection
con.Open strcon
Else
con.Open strcon
End If
End Sub

Sama seperti koneksi pada ms. access, inti dari koneksi ini adalah pada variabel strcon
"strcon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test""

Pada bagian akhir code tersebut yaitu "Initial Catalog=test", test merupakan nama database yang telah dibuat pada sql server pada code ini saya memberikan contoh nama databasenya "test". Sehingga perlu disesuaikan dengan nama database yang digunakan.

Sebelum mencoba untuk mengkoneksikan, pastikan terlebih dahulu bahwa Servis Manager sql server sudah berada dalam kondisi Running, bila belum maka harus diaktifkan terlebih dahulu.

Untuk pemanggilan atau penggunaanya bisa dibaca pada posting saya sebelumnya.

Semoga berguna ya.....................
Read more ...

17 February 2008

Pembuatan Modul Pada VB 6.0 dan Pengaplikasiannya

Untuk membuat sebuah modul, sama aja seperti kita mau menambahkan sebuah form ke aplikasi kita, tapi yang kita tambahkan bukan form tapi modul.

Kalo saya biasanya menggunakan modul buat prosedur2 yang akan saya pake di hampir semua form yang saya gunakan jadi dari pada saya buat prosedur yang sama maka saja buat di modul. Tapi gak harus di modul juga bisa, misalnya di sebuah form tapi dibagian depannya kita ganti biasanya "Private Sub Nama prosedur" kita ganti menjadi "Public sub Nama Prosedur". Public disini berarti prosedur yang kita buat bisa dipake disemua form yang ada di aplikasi kita.

Trus cara pemanggilannya juga gampang banget kok. Klo prosedurnya diletakkan di modul maka pemanggilannya "Call Nama prosedur", fungsi "call" berfungsi untuk memanggil prosedur yang sudah kita buat. Tapi kalo prosedurnya kita letakkan di form maka pemanggilannya agak berbeda, tapi tetap menggunakan fungsi "Call", menjadi "Call (nama form letak prosedur).(nama prosedur). Semua prosedur atau metode dan fungsi juga sama dalam pemanggilannya dengan menggunakan call dan pembuatannya didahului dengan kata "Public", klo sub prosedur ya menjadi Public Sub nama prosedur, kalo fungsi ya menjadi "public Function".
Semoga bermanfaat.
Read more ...

19 January 2008

Simple Stopwatch Application from VB 6.0

Untuk membuat sebuah aplikasi yang menggunakan control timer satu hal yang perlu diperhatiin atau diketahui yaitu interval yang digunakan. Pada visual basic untuk satu detik nilai interval timernya adalah 1000.

Code program ini bisa kalian coba buat dengan metode perulangan atau looping. Namun pada code ini saya menggunakan "if bersarang". dan saya mencoba membuat sebuah logika yang sederhana yang semoga saja bisa dimengerti.
Berikut tampilan design dan name dari tiap control nya aplikasinya:


Dan berikut adalah coding yang digunakan :

Dim jam, menit, detik, milisec

Private Sub cmdExit_Click()

Timer1.Enabled = False
Timer2.Enabled = False
End

End Sub

Private Sub cmdreset_Click()

'membuat tampilan menjadi 00:00:00:00

lblSecon.Caption = "00"
lblMinute.Caption = "00"
lblHour.Caption = "00"

'pengaturan nilai variabel

jam = "0"
menit = "0"
detik = "0"

End Sub

Private Sub cmdStart_Click()

Timer1.Enabled = True
Timer2.Enabled = True
cmdreset.Enabled = False
cmdStart.Enabled = False
cmdStop.Enabled = True

jam = lblHour.Caption
menit = lblMinute.Caption
detik = lblSecon.Caption

End Sub

Private Sub cmdStop_Click()

Timer1.Enabled = False
Timer2.Enabled = False
cmdreset.Enabled = True
cmdStart.Enabled = True
cmdStop.Enabled = False

End Sub

Private Sub Form_Load()

'pemberian nilai properti interval timer
' interval untuk satu detik sama dengan kuranglebih 1000

Timer1.Interval = 1000
Timer2.Interval = 500

End Sub

Private Sub Timer1_Timer()

detik = detik + 1
If Val(detik) > 59 Then 'fungsi "val" untuk menggubah karakter menjadi angka atau number

detik = "00"
menit = Val(menit) + 1

If Val(menit) > 59 Then

menit = "00"
jam = Val(jam) + 1

If Val(jam) > 23 Then
jam = "00"

End If
End If
End If

d = Len(detik) 'fungsi "len" berguna untuk mengetahui banyak/panjang karakter
If d = 1 Then
lblSecon.Caption = "0" & detik 'membuat tampilan menjadi "0X"
'tanda "&" berfungsi untuk penggabungan karakter
Else
lblSecon.Caption = detik
End If

m = Len(menit)
If m = 1 Then
lblMinute.Caption = "0" & menit
Else
lblMinute.Caption = menit
End If

j = Len(jam)
If j = 1 Then
lblHour.Caption = "0" & jam
Else
lblHour.Caption = jam
End If

End Sub

Private Sub Timer2_Timer()

'Untuk membuat karakter titik dua ( : ) berkedip

Label1.Visible = Not Label1.Visible
Label2.Visible = Not Label2.Visible

End Sub

Untk pengembangannya bisa dicoba menambahkan fasilitas milisecon nya.

Read more ...

03 January 2008

Mengubah atribut file dengan Ms. VB 6.0

Kalo gak salah satu tahun 2006 yang lalu aku dapet komputer yang kena sebuah virus, aku gak tau apa namanya tapi aku dan teman-teman menyebutnya virus 463 karena besar file yang dihasilkan sebesar 463 Kb. Virus ini menghiden semua folder yang ada dan mengantinya dengan file bentukan yang baru namun berekstensi aplikasi atau (.exe). Si virus berhasil aku lumpuhkan dan file bentukannya sudah aku bersihkan, namun karena semua folder di hidden sama si virus mau gak mau aku harus mengembaliinnya seperti semula lagi. Aku coba klik kanan foldernya lalu propertis dengan harapan bisa aku hilangin centang pada hidden-nya, tapi ternyata si virus bukan cuma meng-hidden-nya tapi meng-superhidden atau hidden system. cara satu-satunya dengan cara menghilangkan attribut filenya melalui command promt dengan mengetikkan " attrib -S -H nama_file ", ko cuma satu file seh gak masalah, tapi klo semua folder tentu butuh waktu yang sangat lama dan capek banget.

Akhirnya aku mencoba membuat sebuah aplikasi untuk mengubah attribut filenya menggunakan microsoft visual basic 6.0 , dan berhasil. neh aku bagiin sebuah aplikasi sederhana untuk membuka file yang ke superhidden.

Tampilan aplikasinya sbb:


Berikut adalah coding buat modulnya :



Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Public Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Const MAX_PATH = 260
Public Const MAXWORD = &HFFFF
Public Const INVALID_HANDLE_VALUE = -1
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100

Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Public Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, Chr(0)) > 0) Then
OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
End If

StripNulls = OriginalStr
End Function


Dan ini coding pada formnya :

Option Explicit

Function FindFilesAPI(path As String, SearchStr As String, FileCount As Integer, DirCount As Integer)

Dim FileName As String
Dim DirName As String
Dim SearchPath As String, FindStr As String
Dim dirNames() As String
Dim nDir As Integer
Dim i As Integer
Dim hSearch As Long
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
Dim x As Long
Dim xx As Long

If Right(path, 1) <> "\" Then path = path & "\"
nDir = 0
ReDim dirNames(nDir)
Cont = True
hSearch = FindFirstFile(path & "*", WFD)

If hSearch <> INVALID_HANDLE_VALUE Then
Do While Cont

DirName = StripNulls(WFD.cFileName)

If (DirName <> ".") And (DirName <> "..") Then
If GetFileAttributes(path & DirName) Or FILE_ATTRIBUTE_DIRECTORY Then

dirNames(nDir) = DirName
DirCount = DirCount + 1

nDir = nDir + 1
ReDim Preserve dirNames(nDir)

End If
End If
If (DirName <> ".") And (DirName <> "..") And (DirName <> "RECYCLER") And (DirName <> "System Volume Information") And (DirName <> "Thumbs.db") And (DirName <> "Desktop.ini") And (DirName <> "desktop.ini") Then
x = SetFileAttributes(path & DirName, FILE_ATTRIBUTE_NORMAL)
xx = CloseHandle(x)

List1.AddItem path & DirName
End If
Cont = FindNextFile(hSearch, WFD)

Loop
Cont = FindClose(hSearch)

End If


If nDir > 0 Then
For i = 0 To nDir - 1
FindFilesAPI = FindFilesAPI(path & dirNames(i) & "\", SearchStr, FileCount, DirCount)
Next i
End If

End Function

Private Sub Command1_Click()
Dim SearchPath As String, FindStr As String
Dim FileSize As Long
Dim NumFiles As Integer, NumDirs As Integer
Dim msg

If Trim(UCase(Text1.Text)) = "C:\" Then
msg = MsgBox("Any Directories System will be show " & Chr(13) & " Are you sure to continue ?", vbQuestion + vbYesNo, ":: Confirmation ::")
If msg = vbYes Then
GoTo scan_acc
End If
Else
GoTo scan_acc
End If
Exit Sub

scan_acc:
Screen.MousePointer = vbHourglass
Command2.Enabled = False
Command1.Caption = "Please....wait"
List1.Clear
Label4.Caption = ""
SearchPath = Text1.Text
FindStr = Label1.Caption
FileSize = FindFilesAPI(SearchPath, FindStr, NumFiles, NumDirs)
Label4.Caption = NumDirs & " Directories found in ' " & SearchPath & "'"
Screen.MousePointer = vbDefault
Command2.Enabled = True
Command1.Caption = "&Scan"
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Dir1_Change()
Text1.Text = Dir1.path
End Sub

Private Sub Drive1_Change()
On Error GoTo err
Dir1.path = Drive1.Drive
Exit Sub

err:
MsgBox "Device not ready", vbExclamation, ":: Device ::"
Drive1.Drive = "D:\"
Exit Sub
End Sub

Private Sub Form_Load()
Drive1.Drive = "D:\"
End Sub

Semoga aplikasi ini bisa membantu dan bisa memberikan ide baru buat kamu yang pengen belajar bareng aku.




Read more ...
 
>