Friday, June 29, 2012

Cara Mengubah Deret angka / serial / (misalnya NIP) menjadi tanggal pada Microsoft Access

Convert serial number to date format

Bila kita dihadapkan pada sebuah data angka di dalam sebuah tabel Microsoft Access, misalnya NIP 19880315 dimana kita tahu empat angka pertama menunjukkan tahun, yaitu 1988, dua angka kedua adalah bulan, yaitu 03, dan dua angka paling kirikanan menunjukkan tanggal yaitu 15, tentunya bila kita diminta membuat tabel baru yang berisi tanggal tadi sangat mudah kita tinggal menulis "15 Maret 1988", masalahnya bila datanya berjumlah ratusan, tentu tidak akan efektif bila kita mengisinya satu persatu, saat inilah kita bisa memanfaatkan query Microsoft access dengan menggunakan rumus FORMAT dan CDATE dan MID. bagaimana caranya?
Sebelumnya kita perlu mengenal apa itu table apa itu query microsoft access (Saya pakai Microsoft Access 2007),

TABEL adalah tempat kita menyimpan data, disana kita bisa menambah/mengurangi data. misalnya kita punya tabel Pertama berisi NIP, Nama, Golongan, tabel kedua berisi Pangkat, Golongan,

QUERY, yang merupakan manipulasi dari tabel tabel yang menghasilkan data yang kita minta contohnya dalam tabel di atas kita pengen tampilin Nama(dari tabel 1) dan Pangkat(dari tabel 2), caranya tinggal menghubungkannya dengan relationship.

Create=>Query Design=>dobel klik tabel yang ingin kita ambil, lalu hubungkan relasi keduanya, dalam contoh diatas hubungkan Golongan pada tabel pertama dengan Golongan pada tabel kedua, dari sini kita bisa mengambil manfaat kita tidak perlu meng entry nama,nip, golonga, dan pangkat yang berulang ulang.

Kembali ke inti, bila ada tabel berisi data angka 19880315, kemudian kita pengen mengubahnya menjadi data tanggal yang mudah dibaca, caranya

klik Create=>Query Design=> klik table, selanjutnya dalam salah satu kolom query, klik build dan masukkan rumus TglLhr : FORMAT(CDATE(MID([Tabel1]![NIP];7;2)&"/"&MID([Tabel1]![NIP];5;2)&"/"&MID([Tabel1]![NIP];1;4);"dd mmmm yyyy")
Maka hasilnya setelah kita ketik run 15 Maret 1988 :) kalau belum jelas silahkan coment dibawah.

rumus di atas maksudnya Kita membuat FORMAT hasilnya berformat dd mmmm yyyy, d adalah day / hari, m adalah month / bulan, dan y adalah year / tahun, dari hasil rumus CDATE, yaitu 15/01/1988, angka 15 akan dikenali sebagai day, 01 dikenali sebagai month dan 1988 dikenali sebagai year, bila misalnya kita memberikan entry tabel yang salah misalnya 19880115 maka query tetap menghasilkan data 15 Januari 1988, namun bila ada data misalnya 19880506 maka hasil rumus diatas akan menjadi 06 Mei 1988 bukan 05 Juni 1988.

Rumus Mid adalah untuk mengambil karakter dalam serial number tersebut MID([NamaTabel]![NamaKolom];Text yang akan diambil mulai urutan ke...;Berapa karakter yang akan diambil.

Semoga bermanfaat

21 comments:

  1. mau tanya klo misal nya ada 2 field tanggal.
    contoh field pertama [tanggal sewa]
    field kedua [tanggal pengembalian]
    di field ketiga [status]

    kalau misal saya isi tgl sewa dan tgl pengembalian , di field ketiga langsung muncul status "telat" , atau "tidak telat" , tp otomatis di ambil dari perhitungan field1-field2 , itu sintaks nya gimana ya ? thanks :)

    ReplyDelete
  2. @anomymous : pake rumus iif aja di query,

    Bikin Table isinya data ID, tanggal pinjam dan tanggal pengembalian, kemudian buat query yang isinya ID tadi kemudian satu kolom lagi isinya rumus iif,
    misalnya kalo aturannya begini "LEBIH DARI TIGA HARI MAKA " TELAT" SELAIN ITU TIDAK TELAT" maka rumusnya IIf([tanggal]![TglPengembalian]-[tanggal]![TglSewa]>3;"Telat";"TidakTelat") , mbacanya jika "tglpengembalian" pada tabel tanggal dikurangi "tglsewa" pada tabel tanggal lebih dari tiga maka hasilnya "tidak telat" selain itu "telat" jangan lupa Data Typenya diubah ke Date/Time,

    ReplyDelete
  3. makasih pertanyaan saya udah di respon :) . soal ny saya pusing cari2 pemecahan masalah nya blm dpt jg . udah saya coba , tp pas saya klik open malah muncul message box "enter parameter value" ya .

    ReplyDelete
  4. iya soalnya nama kolomnya gak sama dengan yang di rumus, kalau ngikut rumus yang di atas berarti di tabel kolomnya namanya harus "ID", kolom "TglPengembalian", dan kolom TglSewa

    ReplyDelete
  5. iya saya udah ganti nama field dan nama table nya sesuai dengan table dan field di database saya , tapi sewaktu saya klik open muncul message box "enter parameter value" , apa klo muncul message box "enter parameter value" tanda nya ada sintaks yang salah ya? . trima kasih . (maaf ya klo banyak nanya )

    ReplyDelete
  6. wah trima kasih banyak Pak , bingung saya mau bilang apa lagi . semoga dibalas Allah ya . trima kasih sekali lagi

    ReplyDelete
  7. Saya ada satu table dimana salah satu fieldnya adalah field date dan saldo, bila saya membuat query berdasarkan table ini, kemudian saya menggunakan fungsi groupby (, dimana utk saldo sy pilih sum, dan field date sy ingin tampilkan/pilih hanya tgl yg terbaru saja, gmn caranya ya pak? Thx b4

    ReplyDelete
  8. @taufan : kalo tanggal terbaru bisa pilih MAX pada field date

    ReplyDelete
  9. Sudah saya coba pak, terima kasih, tp kok hasilnya muncul semua tanggal2nya ya (di table tsb ada 3 jenis tanggal yaitu 3 tanggal pd 3 bln yg beda namun tahun yg sama)? Cm bedanya jadi 1 baris (mgkn krn digroupby?). Mgkn ada alternatif solusi lain ya pa? Tks.

    ReplyDelete
  10. @taufan : sebenarnya itu data apa ya pak hehe susah susah jg kalo ngomongin pake bahasa access, trus dari data itu mau diapakan

    ReplyDelete
  11. Iya pak, hehe, mungkin agak susah klo cm diverbalkan gini, Itu data keuangan pak, mgkn bs sy detailkkan lg sbb:
    Sy punya satu table dimana ada field tgl ( valuenya br ada 3 periode tgl yg beda bulan, nama (valuenya ada 5 nama karyawan) dan gaji (valueny beda2 tiap entry dgn format curr). Casenya, sy maw buat query berdasarkan table tsb, dgn view field tgl (memunculkan hanya 1 periode tanggal yg terbaru scr otomatis/default, sy blm taw gmn setting field ini); field nama (ckp sy groupby) dan field gaji (maksudnya total gaji PER-karyawan PER-bulan, field ini sy sum); field gaji total (field ini berisikan TOTAL gaji SELURUH karyawan pada/PER periode tgl yg terakhir, sy jg blm taw gmn setting field ini). Mohon pencerahannya utk setting field2 yg sy blm taw caranya. Tks again

    ReplyDelete
  12. unduh disini, query 2 gabungan table 1 dan query 1 buat nyari gaji pada tgl terakhir

    ReplyDelete
  13. Punya eMail ga pa? Blh dibantu? Sekiranya sy ada pertanyaan2 lg ttg access? eMail sy : aguszulkarnaen@yahoo.com atau taufanaguszulkarnaen@gmail.com, thx b4

    ReplyDelete
  14. tolong aku merubah sel format tanggal ke teks:
    mis: 01/02/2012 menjadi 01 Februari

    ReplyDelete
  15. kalo rumus querynya
    Nilai akhir = (Nilai uts*40%)+(Nilai uas*60%) itu gimana ya? kok jawabannya enter parameter value

    ReplyDelete
    Replies
    1. Expr1: [Table1]![Nilai Uts]*0.4+[Table1]![Nilai UAS]*0.6

      Delete
    2. yg enter parameter value itu disebabkan karena nama kolom di table ga sama dengan nama yang ada di rumus bro

      Delete

mohon koreksinya apabila salah (CMIIW), silahkan berkomentar dengan baik, penulis tidak bertanggung jawab atas apa yang anda sampaikan, jadi silahkan anda bertanggung jawab dengan apa yang anda sampaikan, terima kasih telah berkunjung, semoga bermanfaat [ baca disclaimer]