Membuat Format Tanggal Sesuai Kebutuhan

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?

15 comments

  1. makasih banyak ya Mas tas materi materinya yang dipostkan,,,mudah mudahan berkah

  2. 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

  3. 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

  4. 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

  5. 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…

  6. 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.

  7. 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..

  8. Mas saya juga punya masalah yang sama Mas, seperti mas Wahyu kalau bisa saya minta di Email juga ya Mas..

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.