Saya coba kasih alternatif, agar bisa lebih fleksibel, tidak tergantung pada hard-code untuk mengatur waktu bunyi-nya, tetapi bisa kita ubah2 di tabel tblRings.

di frmRings anda akan menemukan kode berikut:

Private Sub Form_Open(Cancel As Integer)
    LoadRings
End Sub


Saat form di buka, sub loadrings dipanggil. Isinya adalah:


Sub LoadRings()
    Dim rs As ADODB.Recordset
Dim cnn As ADODB.Connection Set cnn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    rs.Open "SELECT jam, sound, textcaption, SpecialDay FROM tbl_Rings", cnn, 
adOpenStatic, adLockReadOnly

    arrRings = rs.GetRows
    maxRow = UBound(arrRings, 2)
maxCol = UBound(arrRings, 1)
    rs.Close
    Set rs = Nothing

    Set cnn = Nothing

End Sub


Anda harus memiliki pengetahuan tentang ADO di sini. Saya ambil semua records setingan bunyi dari tabel, lalu simpan di array. Tujuannya agar event timer dari form baca data dari memory, bukan dari tabel di harddisk. Yang terpenting dari kode di atas adalah rs.GetRows, yang akan memindahkan isi tabel ke array.

Setelah itu, di setiap on timer form, kode ini akan dijalankan:

Private Sub Form_Timer()
    Dim waktu As Date
    Dim i As Integer

    waktu = Now()
    Me.txtWaktu = Format(waktu, "hh:nn:ss")
    i = GetRowIndek(waktu)

    If i<>  -1 Then
        Me.txtRemarks = arrRings(2, i)
        If arrRings(1, i)<>  "" Then
            Playsound CurrentProject.Path&  "\"&  arrRings(1, i)
        End If
    End If
End Sub


Fungsi GetRowIndek akan mencari di memory, array baris ke berapa yang waktunya ada dalam list. Jika ada, maka txtRemarks akan diset caption/text-nya, dan wav akan dibunyikan.
Isi GetRowIndek cukup rumit, coba pelan2 di pelajari:

Function GetRowIndek(waktu As Date)
    Dim row As Integer
    For row = 0 To maxRow
        If Format(waktu, "hh:nn:ss") = Format(arrRings(0, row), "hh:nn:ss") Then
            If arrRings(3, row)<>  "" Then
                If Format(waktu, "dddd") = arrRings(3, row) Then
                    GetRowIndek = row
                    Exit Function
                End If
            Else
                GetRowIndek = row
                Exit Function
            End If
        End If
    Next row
    GetRowIndek = -1
End Function



aksan kurdin


On 5/10/2010 9:40 AM, Cowok Bager wrote:
[Attachment(s) <#TopText> from Cowok Bager included below]



Saya membuat program yang berfungsi sebagai pengganti bel yang akan berbunyi pada saat jam masuk,istirahat,selesai istirahat,pulang dan tidak akan berbunyi pada hari2 yang sudah ditentukan dalam tabel kalender karena pengetahuan saya yang masih sangat kurang, program saya terasa terlalu panjang, saya mohon reviewnya dari para pakar disini,terimakasih sebelum nya.


Kirim email ke