Jika anda baru mulai bermain dengan Visual Basic, hal-hal yang keliahatannya sepele bisa menjadi masalah besar seperti apa yang saya alami 3 tahun yang lalu. Hal yang paling saya ingat adalah ketika saya harus memformat tanggal output ke format YYYY-MM-DD. Ketika itu saya benar-benar pusing karena tidak tahu solusi-nya. Hal itu terjadi di karenakan saya ingin memasukkan date stamp untuk memberikan informasi kapan transaksi tersebut di buat ke dalam database MySQL saya, kalau untuk modified transaction date kan bisa memakai built-in tipe data TIMESTAMP dari MySQL.
Hal ini juga terjadi ketika kita akan memformat data MySQL ke format tanggal dengan format Indonesia.
Sebetulnya Visual Basic sudah memberikan satu built-in function untuk mengatasi hal ini. Function tersebut adalah Format. Cara penggunaannya sangat mudah yaitu Format(data_input, format). Udah gitu aja…
Meskipun fungsi Format ini bisa di inject langsung ke string SQL kita, saya sangat menyarankan agar hasil format ini di masukkan ke variable dulu. Jika dalam kasus saya ini, tampung dulu hasil Format ini ke satu variable dengan tipe String. Misalnya saja kita ingin mengubah suatu data tanggal yang berasal control DTPicker dengan nama cmbtgl_trans dan kita ingin memasukkannya ke database MySQL yang menerima format tanggal YYYY-MM-DD, maka baris program yang harus anda tulis seperti ini:
'/deklarasikan dulu variable untuk menampung hasil tanggal
Dim tgl_trans As String
'/isi variable dengan hasil format
tgl_trans = Format(cmbtgl_trans.Value, "YYYY-MM-DD")
Lalu anda tinggal memasukkan variable tgl_trans
tersebut ke SQL string anda.
Kalau kasusnya kebalikan, kita ingin mengambil data MySQL dengan format YYYY-MM-DD ke format tanggal Indonesia yang berformat DD-MM-YYYY, tinggal rubah dikit aja rumus format di atas menjadi:
cmbtgl_trans.Value = Format(recordset1.Fields("tgl_trans").Value, "DD-MM-YYYY")
Tentu anda harus membuka data anda dan menampungnya ke Recordset anda dulu. Sebetulnya, untuk membuka data tamggal ke sebuah control DTPicker anda tidak perlu memformatnya karena khusus untukĀ DTPicker bisa menerjemahkan sendiri secara internal, tapi anda harus melakukan format jika anda ingin menampilkan data tanggal tersebut ke control Textbox atau label yang tidak bisa memformat ulang sebuah data tanggal.
Simpel sekali kan?
makasih banyak ya Mas tas materi materinya yang dipostkan,,,mudah mudahan berkah
Saya ucapkan banyak terima kasih kepada Bang Edi karena artikelnya sudah banyak membantu saya dalam menyelesaikan tugas kantor.
@Suhendar Wiryawan: sama-sama pak….
mas bisa bantu saya gk??koq skrip saya koq gk bisa jalan y…ini skrip saya mas…
Private Sub Form_Load()
Move (Screen.Width – Width) / 2, _
(Screen.Height – Height) / 3
Call BukaDatabase
DTPicker1.Value = Format(Date, “dd MMMM yyyy”)
End Sub
Private Sub TbKeluar_Click()
Unload Me
End Sub
Private Sub TbTampil_Click()
Dim SQL As String
Dim Rs_Tampil As New ADODB.Recordset
Set Rs_Tampil = New ADODB.Recordset
SQL = “”
SQL = ” SELECT Penjualan.No_Nota, Penjualan.Tgl_Nota, ” _
& ” Detail_Penjualan.Kode_Barang, Barang.Nm_Barang, ” _
& ” Detail_Penjualan.Harga_Jual, ” _
& ” Detail_Penjualan.Jumlah_Jual, ” _
& ” Detail_Penjualan.Subtotal, Pengguna.Nama From” _
& ” ((Penjualan INNER JOIN Detail_Penjualan ON ” _
& ” Penjualan.No_Nota = Detail_Penjualan.No_Nota) ” _
& ” INNER JOIN Pengguna ON ” _
& ” Penjualan.UserId = Pengguna.UserId) ” _
& ” INNER JOIN Barang ON ” _
& ” Detail_Penjualan.Kode_Barang = Barang.Kode_Barang ” _
& ” WHERE Penjualan.tgl_Nota ='” _
& CDate(DTPicker1.Value) & “‘”
Set Rs_Tampil = KoneksiDB.Execute(SQL)
If Rs_Tampil.BOF Then
MsgBox “Maaf penjualan dengan tanggal ” _
& Format(DTPicker1.Value, “dd MMMM yyyy”) _
& ” tidak tersedia !”, vbInformation + vbOKOnly, _
“Informasi”
Else
DElaporan.Commands(5).CommandText = SQL
With rptjualtgl
.Sections(“section4”).Controls(“label12”).Caption = _
Format(DTPicker1.Value, “dd/MM/yyyy”)
.Sections(“section4”).Controls(“label13”).Caption = _
Format(Date, “dd MMMM yyyy”)
.Refresh
.WindowState = 2
.Show 1
End With
End If
End Sub
@ary: kesalahan yang muncul apa?
muncul kesalahan ( “[microsoft][odbc sql server driver][sql server]the conversion of a char data type to a datetime data type resulted in an out-of range datetime value” )
mas boleh minta alamat emailnya
pesan errornya [microsoft][odbc sql server driver][sql server]the conversion of a char data type to a datetime data type resulted in an out-of range datetime value
boleh tw alamat emailnya
Makasih bos…
Tapi gini bos…aku pengen bikin tanggal yang ga mengikuti tanggalan system…jadi meskipun tanggalan di system di rubah…di program ga berubah…
mau tanya,,,aku punya data
nama field tgl
type timestamp
atribut : ON UPDATE CURRENT_TIMESTAMP
default :CURRENT_TIMESTAMP
extra : on update CURRENT_TIMESTAMP
isinya filednya jadinya seperti ini “2011-01-26 13:58:14”
gmn ya melakukan filter tanggal…??
sqlq seperti ini,tapi tanggalnya ga di baca,,
mohon pencerahan
sql = “SELECT * FROM penjualan_manual WHERE tgl >= ‘” + Format(frm_penjualan_manual.dt_1.Value, “YYYY/MM/DD”) + “‘ and tgl <='" + Format(frm_penjualan_manual.dt_2.Value, "YYYY/MM/DD ") + "' order by tgl desc"
saya pke mysql + vb 6.0
klo ada script nya tolong diemail.
thanks banget atas artikel ini, sangat membantu banget.
Pak mau tanya nih klw saya punya database input nama, jd di formnya cuma input nama aja, tp saya pngen didatabase nya muncul tanggal sama jam saat qt nginput.. boleh minta bantuannya itu gmn codingnya.. kirim ke email saya pak terimakasih..
Mau nanya nas ? gimana source code lok mau yimpan satu lawan banyak mas
Mas saya juga punya masalah yang sama Mas, seperti mas Wahyu kalau bisa saya minta di Email juga ya Mas..
terimakasih infonya sangat membantu
JLOU ^_^
wah sukses…..ma kasih… ma kasih… ma kasih