Selamat siang,
saya mencoba untuk membuat subform (continous form) dimana data yang tidak
bisa diupdate warnanya akan berubah menjadi gray. Dari sisi funsionalitas,
subform ini sudah berjalan dengan baik dimana data yang tidak memenuhi
syarat, tidak bisa diupdate. Problem yang saya hadapi adalah bagaimana
memberikan informasi visual kepada user, data mana saja yang tidak bisa
diupdate.
Sebagai ilustrasi, saya menggunakan fungsi sederhana untuk menentukan apakah
suatu data boleh diupdate atau tidak (berdasarkan tanggal) sbb:
Public Function updateAble(pCurrentDate As Date)
If Not IsNull(pCurrentDate) Then
If CDate(Format(pCurrentDate, "MMM YYYY")) >= CDate(Format("03/01/2010",
"MMM YYYY")) Then
updateAble = True
Else
updateAble = False
End If
Else
updateAble = True
End If
End Function
Sedangkan untuk memberikan warna gray pada textbox, saya menggunakan
Conditional Formatting sbb:
Private Sub Form_Current() '--> Subform (continous form)
Dim ctl As Control
Dim objFrc As FormatCondition
Dim lngGray As Long
lngGray = RGB(201, 201, 201)
For Each ctl In Me.Controls
If ctl.Tag = "?" Then
ctl.FormatConditions.Delete
If Not IsNull(Me.DATE_STAMP) Then
With ctl.FormatConditions _
.Add(acExpression, , Not (updateAble(Me.DATE_STAMP)))
.BackColor = lngGray
.ForeColor = -2147483640
End With
End If
End If
Next
End Sub
Namun ternyata, conditional formatting ini hanya akan membaca record pertama
dari hasil query dan akan meng-aplikasi-kan ke semua record. Jadi seandainya
record pertama mengembalikan nilai fungsi updateAble = false, maka semua
text box di continous form akan menjadi gray (meskipun record kedua dan
seterusnya seharusnya mengembalikan nilai = true).
Mohon pencerahan dimana saya melakukan kesalahan? Saya juga sudah mencoba
menggunakan event Load dan Open di form, namun masih belum berhasil.
terima kasih sebelumnya
andre