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 ...

27 December 2007

Modul Koneksi Access

Saya beberapa kali ditanyai oleh beberapa teman yang pengen mengkoneksikan aplikasi vbnya ke database access. Sebenernya gampang banget :

Setelah membuat project baru trus tambahkan sebuah modul lalu isikan dengan coding berikut atau bisa diambil disini :


Public con As New ADODB.Connection
Public rst As New ADODB.Recordset
Public strcon As String
Public sql As String ' berfungsi untuk menuliskan query sql


Public Sub Connections()
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\database_name.mdb"
If con.State = adStateOpen Then
con.Close
Set con = New ADODB.Connection
con.Open strcon
Else
con.Open strcon
End If
End Sub



Inti dari code diatas terletak pada " strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\database_name.mdb" "

database_name diganti dengan nama database yang telah dibuat. Lalu letakkan atau simpan database tersebut satu direktori dengan project yang dibuat. Dah cuma gitu aja.

Trus untuk alasan keamanan database access bisa kita berikan password, klo demikian tentunya modul koneksinya juga ada perubahan sedikit menjadi sbb:

Pada bagian strcon diganti menjadi

strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\database_name.mdb ;Persist Security Info=False;Jet OLEDB:Database Password=Password_access"

Selengkapnya bisa diambil disini
Sama seperti tanpa password database_name diganti menjadi nama database dan Password_access nya diganti dengan password yang telah dibuat pada microsoft accessnya.


Semoga membantu ya.
Read more ...

14 December 2007

Anti Virus

Mungkin anda pernah mengalami kekesalan terhadap komputer anda karena adanya virus komputer yang sedang marak-maraknya. Kalau dulu kita hanya mengenal virus-virus made in luar negeri tapi sekarang anak-anak bangsa yang kreatif juga sudah bisa menciptakan sendiri berbagai virus yang membuat kita kesal, contohnya Brontoks yang paling terkenal karena bisa go internasional, kangen, bangsawan dll. Banggakah kita dengan prestasi itu ???

Sejauh ini umumnya virus menyerang komputer yang berbasis windows atau yang menggunakan sistem operasi Windows, lantas akan timbul pertanyaan, Why ??? Ada satu jawaban yang saya temukan, yaitu lemahnya sistem security atau keamanan yang dibuat oleh microsoft, microsoft cenderung mementingkan user frendly atau penggunaan yang mudah di pengguna akhir- end user -namun justru melewatkan keamanan itu sendiri. Katanya windows adalah sistem operasi yang tidak open source atau kita tidak dapat mngubah-ubah isi dari SO itu, namun nyatanya untuk mengubah sistem dari windows lebih gampang apabila kita bandingkan dengan sistem operasi linux atau unix, kita tingal membuka regedit.exe maka kita bisa merusak sistem operasinya. Dan virus-virus termasuk virus lokal memanfaatkan regedit untuk menggerogoti komputer kita.

Kemudian muncullah beraneka ragam anti vurus yang di klaim bisa membasmi segala macam virus, namun sepndai-pandai polisi menemukan cara maling mencuri, pasti maling akan selalu selangkah lebih maju. Begitu juga dengan anti virus, mereka akan bisa mendeteksi adanya virus di komputer kita bila virusnya sudah ada, dan bagaimana kalau kita terkena virus sebelum ada antivirus yang dapat membasminya ?? Binggung kan?? paling ujung-ujungnya format harddisk !!!!!! Capek deh....hhhhhh. Selain itu kita juga akan banyak menghabiskan uang dan waktu hanya untuk mendownload update dari antivirus yang kita pake, atau keliling-keliling ke rental CD untuk mencari updetannya, repot kan ??????

Saat ini ada sebuah aplikasi yang cukup baik untuk menangkal semua antivirus. Aplikasi ini bernama DeepFreeze. Aplikasi ini sebenarnya bukanlah anti virus namun cara kerjanya bisa mencegah virus menginfeksi komputer kita karena cara kerja aplikasi ini adalah mengembalikan settingan apapun yang kita buat pada partisi/drive yang kita freeze ke setting-an semula apabila komputer kita restart. Kecenderungan virus bermukim di drive C: dapat dihilangkan karena bila mereka meletakkan induk atau settingan virusnya pada C: maka akan otomatis hilang bila komputer kita reboot. Aman kan !!!!!
Read more ...

12 December 2007

Amankan File Word Anda

Beberapa waktu lalu saya mendapati sebuah virus gak tau virus itu virus baru atau virus lama dan saya juga gak tau siapa nama si virus itu, tapi yang penting efek dari virus itu dia menghapus file-file word yang ada di komputer yang terinfeksi virus tersebut dan mengganti file yang dihapusnya dengan file bentukan yang baru dengan icon word xp dan ukuran file yang sama dengan ukuran file yang dihapusnya namun ekstensi file ini berubah menjadi *.exe bukan lagi *.doc . Hampir saja data-data laporan kerja praktik dan skripsiku hilang. Tapi untungnya aku masih punya backup-an data yang banyak.

Biasanya virus-virus lokal gak ada yang tega menghapus file, tapi ternyata virus ini menghapus file yan memiliki extensi *doc. Awalnya gak percaya klo data documentku hilang karena biasanya cuma dihidden doank atau sampai di-superhidden oleh si virus, jadi saya mencoba mengubah pengaturan dari menu folder option yang ternyata bisa digunakan, namun ternyata data-data saya tetap gak ada. Karena penasaran, akhirnya saya mencoba membuka file virusnya, yaitu dari file bentukan si virus dengan hexa editor, sebuah aplikasi untuk melihat file secara heksadesimal. Dengan sedikit butuh kesabaran saya coba liat perbaris dari virus tersebut dan akhirnya saya menemukan sebuah kalimat yang cukup mengejutkan saya, kira-kira kalimatnya seperti ini "deletefile *.doc" . Dari sanalah akhirnya saya yakin bahwa file word saya sudah dihapus oleh si virus.

Untuk sebuah data penting saya biasanya membuat atau menyimpan data tersebut ke dalam beberapa media penyimpanan dari mulai harddisk, flasdisk, CD, DVD bahkan saya simpan sampai ke memory ponsel saya. Apalagi setelah saya tau klo ada virus ( dalam hal ini virus lokal ) yang sudah dengan tega menghapus data pengguna komputer yang terinfeksi. Klo virus dahulu kayaknya gak setega virus itu, virus-virus yang laen biasanya hanya merusak file sistem operasi.

Selain menyimpan di beberapa media penyimpanan saya juga sudah membuat beberapa cara penyimpanan data selain ber-ekstensi *.doc misalnya saya mengkompres data saya dengan WinRar dan Winzip karena biasanya virus gak bisa menyerang data yang terkompres, tapi gak saya gak tau juga ya, sapa tau dah ada virus yang merusak file yang terkompres. kemudian saya juga membuat file dalam mentuk PDF. Dan yang saya anggap paling aman dari gangguan virus adalah saya mengubah ekstensi filenya menjadi tiga huruf yang saya sukai dengan memanfaatkan perintah "ren" dari command promt saya mengubah semua file penting saya menjadi *.bck . Klo ada yang belom tau cara menggunakan perintah ren berikut saya berikan contohnya "> ren [nama file.doc] [nama file.bck]" trus enter.

Namun bila menggunakan cara yang terakhir, kita akan sedikit repot ketika ingin membuka atau ingin mengubah isi dari file tersebut karena kita harus mengubah kembali ekstensi file tersebut menjadi *.doc baru setelah itu kita bisa mengubahnya, atau kita bisa mencoba dengan klik kanan dan "open with"-nya pake office word.

Maenin virus terkadang menyenangkan namun terkadang juga menjengkelkan.
Read more ...

19 November 2007

Coba dulu ahhhh

Dah banyak banget orang-orang yang mulai membuat blogger sehingga menjadi sebuah tanda pergaulan ( anak gaul men !!!!!) selain memiliki sebuah account friendster misalnya.Sehingga menarik minat saya untuk mencoba berbagi dan sharing bersama rekan2 di dunia maya ini untuk saling bertukar ide dan ilmu, tapi bukan ilmu hitam dari gua hantu lho. Semoga blog ini bisa tuerus mengembangkan daya kreatifitas anak indonesia. Read more ...
 
>