Membuat Program Bel Sekolah dengan VB (Bag II)

BY IN Visual Basic 4 COMMENTS

Program Bel Musik Sekolah ini terdiri dari 2 form dan 1 buah module. Pertama kita akan lihat modulnya terlebih dahulu

Option Explicit

Public Declare Function sndPlaySound Lib “winmm.dll” Alias “sndPlaySoundA” (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Public Declare Function PlaySound Lib “winmm.dll” Alias “PlaySoundA” (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Public Const SND_ASYNC = &H1
Public Const SND_FILENAME = &H20000
Public Const SND_SYNC = &H0

Global Jam(15) As String
Global cn As New ADODB.Connection

Public Sub set_conn_getData(ByRef sConnection As ADODB.Connection, ByVal sDataLocation As String, ByVal sHavePassword As Boolean, ByVal sPassword As String)
If sHavePassword = True Then
sConnection.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & sDataLocation & “;Persist Security Info=False;Jet OLEDB:Database Password=” & sPassword
Else
sConnection.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & sDataLocation & “;Persist Security Info=False”
End If
End Sub

Public Sub set_rec_getData(ByRef sRecordset As ADODB.Recordset, ByRef sConnection As ADODB.Connection, ByVal sSQL As String)
With sRecordset
.CursorLocation = adUseClient
.Open sSQL, sConnection, adOpenKeyset, adLockOptimistic
End With
End Sub

Public Function SndPlay(ByVal filename As String, Optional ByVal options As Long = (SND_FILENAME Or SND_ASYNC)) As Long
SndPlay = sndPlaySound(filename, options)
End Function

kita akan menggunakan 2 buah fungsi API yaitu fungsi untuk memainkan file berformat WAV. Kemudian kita mendeklarasi dua buah Public Sub, yang gunanya untuk melakukan koneksi terhadap database dan yang satu lagi untuk mengeksekusi string query dari perintah SQL. Lalu sebuah public function digunakan untuk memainkan musik.

Berikutnya untuk form yang pertama, kita membutuhkan beberapa object yaitu:
4 buah object command button
Object timer
Beberapa object line untuk membuat tampilan jam digital

Langsung saja Programnya adalah sebagai berikut:

Private Sub Command1_Click()
Form2.Show
End Sub

Command1 berfungsi untuk memanggil form yang satu lagi

Private Sub Form_Load()
Dim i As Byte
‘set your own bell time here…
‘load the values from the database
Call set_conn_getData(cn, App.Path & “\bell.mdb”, False, “”)

Dim Rs As New ADODB.Recordset

‘the program will terminate if the day is Saturday or Sunday
If Weekday(Date) = 1 Or Weekday(Date) = 7 Then
MsgBox “Sorry… this program is not working on Saturday or Sunday”
End
Else

‘choose day
If Not Weekday(Date) = 6 Then
Call set_rec_getData(Rs, cn, “SELECT * FROM tblBell WHERE Jenis=’Biasa’”)
Else
Call set_rec_getData(Rs, cn, “SELECT * FROM tblBell WHERE Jenis=’Jumat’”)
End If

Rs.MoveFirst
Do While Not Rs.EOF = True
If Not Rs.EOF = True Then
Jam(0) = Rs.Fields(1)
Jam(1) = Rs.Fields(2)
Jam(2) = Rs.Fields(3)
Jam(3) = Rs.Fields(4)
Jam(4) = Rs.Fields(5)
Jam(5) = Rs.Fields(6)
Jam(6) = Rs.Fields(7)
Jam(7) = Rs.Fields(8)
Jam(8) = Rs.Fields(9)
Jam(9) = Rs.Fields(10)
Jam(10) = Rs.Fields(11)
End If
Rs.MoveNext
Loop

Set Rs = Nothing
End If
End Sub

Pertama-tama dilakukan pembacaan dari database dan pengecekan, jika hari Sabtu atau Minggu, program akan terminate dengan sendirinya. Asumsinya untuk Sabtu Minggu, sekolah tidak masuk, jadi apabila tidak ada rutin pengecekan ini, bel akan tetap berbunyi apabila komputer dinyalakan. Lalu akan ada pengecekan terhadap harinya, dengan asumsi bahwa jadwal bel untuk Senin – Kamis berbeda dengan jadwal hari Jumat. Selanjutnya, data dari field akan disimpan ke dalam sebuah variabel array sehingga kita bisa menutup koneksi ke database.

Private Sub Timer1_Timer()
Dim j As Byte
AmPm

If Format(Time$, “H:MM:SS AMPM”) = Jam(0) Then
SndPlay “masuk.wav”
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(1) Then
SndPlay “ganti.wav”
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(2) Then
SndPlay “ganti.wav”
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(3) Then
SndPlay “ganti.wav”
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(4) Then
SndPlay “ganti.wav”
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(5) Then
SndPlay “ganti.wav”
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(6) Then
SndPlay “ganti.wav”
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(7) Then
SndPlay “ganti.wav”
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(8) Then
SndPlay “ganti.wav”
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(9) Then
If Not Weekday(Date) = 6 Then
SndPlay “ganti.wav”
Else
SndPlay “pulang.wav”
End If
End If
If Format(Time$, “H:MM:SS AMPM”) = Jam(10) Then
If Not Weekday(Date) = 6 Then
SndPlay “pulang.wav”
End If
End If

For j = 1 To 6
Tim Mid(Format(Time, “HHMMSSAMPM”), j, 1), j – 1
Next j
End Sub

Lalu kita tambahkan rutin pengecekan pada object Timer. Sebagaimana kita ketahui, object Timer akan dieksekusi secara terus menerus. Jadi sederhana saja, kita tinggal membandingkan Timer dengan nilai array dari database, jika sama, maka akan dimainkan musiknya. Disamping itu kita juga akan mengganti tampilan digital dengan memanggil subrutin Tim.

Sub Tim(Wat, Id)
Select Case Wat
Case 0: LCD Id, , False
Case 1: LCD Id, False, False, False, False, False
Case 2: LCD Id, , , , False, , , False
Case 3: LCD Id, , , , False, False
Case 4: LCD Id, False, , False, , False
Case 5: LCD Id, , , , , False, False
Case 6: LCD Id, , , , , , False
Case 7: LCD Id, , False, False, False, False
Case 8: LCD Id
Case 9: LCD Id, , , , , False
End Select
End Sub

Subrutin Tim pada dasarnya pengecekan terhadap digit, yang nantinya akan di”gambar” oleh subrutin LCD dengan memanfaatkan variabel boolean, dimana nilainya diset TRUE apabila mau ditampilkan dan False apabila tidak ditampilkan

Sub LCD(ByVal i As Integer, Optional L1 As Boolean = True, Optional L2 As Boolean = True, Optional L3 As Boolean = True, Optional L4 As Boolean = True, Optional L5 As Boolean = True, Optional L6 As Boolean = True, Optional L7 As Boolean = True)
Up(i).Visible = L1
Midl(i).Visible = L2
Down(i).Visible = L3
Lft1(i).Visible = L4
Lft2(i).Visible = L5
Rgt1(i).Visible = L6
Rgt2(i).Visible = L7
End Sub

Sub AmPm()
If Right(Time, 2) = “PM” Then ARgt2.Visible = False Else ARgt2.Visible = True
End Sub

Private Sub Adj_Click()
Dat.Hour = Hour(Now)
Dat.Minute = Minute(Now)
Dat.Second = Second(Now)
Frame1.Visible = True
End Sub

Private Sub Pause_Click()
If Pause.Caption = “&Pause” Then Pause.Caption = “&Resume” Else Pause.Caption = “&Pause”
If OptAmPm.Value Then
If Timer1.Enabled Then Timer1.Enabled = False Else Timer1.Enabled = True
Else
If Timer2.Enabled Then Timer2.Enabled = False Else Timer2.Enabled = True
End If
End Sub

Private Sub Xit_Click()
End
End Sub

Private Sub OK_Click()
Can_Click
Time = Format(Dat.Value, “HH:MM:SS AMPM”)
End Sub

Private Sub Can_Click()
Frame1.Visible = False
End Sub

Sebenarnya form ini adalah core atau inti dari program bel musik, sedangkan form yang satunya hanyalah form yang digunakan untuk mengupdate database dengan mengeset jam-jam pelajaran yang berlaku di sekolah. Dengan penggunaan database, tentunya program ini menjadi lebih fleksibel karena mudah dicustomize di sekolah mana saja, tidak dibatasi oleh jam yang sama.




4 Comments

  1. Ema Islam |

    Bang…punya g buku panduan dan tutorial cara membuat bel sederhana menggunakan VB 6 window 7, yg jelas lengkap sama contoh-contoh gambar gap-gapnya, kalo ada ana ikutan beli bisa g?thx…

  2. tolun |

    pak saya pnya maslh, l sy pnya tabel alrm di ms.acces.
    hari | jam | bel.
    senin | 07:00:00 | D:\10. Hore Pulang.wav
    selasa | 08:20:00 | D:\nada\jampertama.wav.
    supaya nanti pada saat hari senin jam 7 bisa memutar suara yg ada di kolom bel gmn pak querynya ya…
    mbah google t’cari gak ktemu2…
    kmrin pas pemrotek gak dpt database acces pak..
    hehee….
    mksh bnyk pak…

    • contactwahyu |

      kalau query sql kan tinggal di SELECT aja kan? jadi kurang lebih kayak gini querynya
      SELECT hari, jam, bel FROM namatabel WHERE hari=’Senin’ AND jam=’07:00:00′