Terima kasih bang Aksan atas penjelasan nya yg cukup detil dan jelas, aplikasi 
berjalan cukup baik sesuai harapan

  ----- Original Message ----- 
  From: Aksan Kurdin 
  To: [email protected] 
  Sent: Monday, 10 May, 2010 5:03 PM
  Subject: Re: [belajar-access] Re:Mohon Review [1 Attachment]


    
  [Attachment(s) from Aksan Kurdin included below]
   
  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: 
      
     

    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