selain dari cara mbah budilaks, mas gatot bisa juga mencegah perpindahan fokus
melalui event before update dari text box tersebut, dengan menguji kondisi yang
diinginkan, jika kondisi mengharuskan pengulangan input data, maka set variabel
cancel dari procedure beforeupdate textbox menjadi -1:
Private Sub Text0_AfterUpdate()
SysCmd acSysCmdClearStatus
End Sub
Private Sub Text0_BeforeUpdate(Cancel As Integer)
If Not IsDate(Me.Text0.Text) Then
Beep
SysCmd acSysCmdSetStatus, "Nilai yang anda isikan bukanlah tanggal yang
sah!"
Cancel = -1
Exit Sub
End If
If DateDiff("d", Me.Text0.Text, Date) >= 7 Then
Beep
SysCmd acSysCmdSetStatus, "Tanggal tidak boleh kurang dari tujuh hari
lalu!"
Cancel = -1
End If
End Sub
berdasarkan pengalaman, user asal melihat kotak dialog yang muncul, itu pasti
identik dengan error, tanpa membaca pesannya terlebih dahulu. sehingga kadang2
message box yang kita tujukan mengenai proses sukses suatu proses, tetap saja
dianggap sebagai error. maka dari itu, lebih halus jika memakai pesan di status
bar, diiringi dengan bunyi beep. lebih sopan ... :) lagian user tidak terhalang
dengan satu aksi menekan tombol ok untuk melanjutkan proses selanjutnya.
selain dari itu, anda perhatikan bahwa saya memakai explicit property text pada
me.text0, bukannya me.text0.value. bedanya ? property text adalah berisi nilai
text saat mendapat focus dan dalam kondisi dirty (belum tersimpan), sedangkan
value adalah nilai yang sudah disimpan dalam tabel, atau nilai text0 saat focus
sudah tidak di text0 lagi.
aksan kurdin
--- In [email protected], "Gatot Subroto" <ga...@...> wrote:
>
> Mohon bantuannya...maaf saya masih pemula.
>
> misal : saya punya dua text box. pada text box 1 saya beri syarat tertentu
> misalnya range tanggal (bila dibandingkan dengan tanggal sekarang) kurang
> dari 7 hari maka ada pesan error. Saya pergunakan MsgBox (".....",vbOK) pada
> setting after update. Pesan tersebut sudah muncul, tapi setelah saya klik
> tombol OK, kursor langsung berpindah ke text box 2. Saya inginnya kursor
> tetap pada text box 1, karena input tanggalnya masih salah. Bagaimana
> caranya?
>
> Terima kasih atas bantuannya.
>