Fungsi untuk menghitung dan untuk menampilkan nilai tanggal dalam akses

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 210604 - Melihat produk di mana artikel ini berlaku.
Moderat: Memerlukan dasar makro, coding, dan interoperabilitas keterampilan.

Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Karena nilai tanggal/waktu disimpan sebagai nomor double-precision, Anda mungkin menerima salah format hasil saat Anda mencoba untuk memanipulasi tanggal/waktu nilai-nilai dalam ekspresi. Artikel ini menunjukkan cara membuat ekspresi dan fungsi kustom untuk menampilkan tanggal tertentu dan untuk menghitung waktu interval.

Microsoft menyediakan contoh pemrograman hanya sebagai ilustrasi, tanpa jaminan apa pun baik tersurat maupun tersirat. Termasuk, namun tidak terbatas pada, jaminan tersirat mengenai kelayakan untuk diperdagangkan atau kesesuaian untuk keperluan tertentu. Artikel ini mengasumsikan bahwa Anda telah terbiasa dengan bahasa pemrograman yang ditunjukkan dan dengan alat yang digunakan untuk membuat dan mendebug prosedur. Teknisi dukungan Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu, namun mereka tidak akan memodifikasi contoh untuk memberikan fungsionalitas tambahan atau menyusun prosedur untuk memenuhi persyaratan khusus Anda.

INFORMASI LEBIH LANJUT

Menampilkan tanggal tertentu

Untuk menampilkan tanggal tertentu, Anda dapat menggunakan DateSerial() fungsi memanipulasi bagian hari, bulan dan tahun dari tanggal. Misalnya, Anda dapat menggunakan kalimat berikut di ControlSource properti dari kotak teks atau di jendela segera kembali tanggal tertentu:
  • Bulan ini:
    DateSerial(Year(Date()), Month(Date()), 1)
  • Bulan berikutnya:
    DateSerial(Year(Date()), Month(Date()) + 1, 1)
  • Hari terakhir bulan ini:
    DateSerial(Year(Date()), Month(Date()) + 1, 0)
  • Hari terakhir bulan berikutnya:
    DateSerial(Year(Date()), Month(Date()) + 2, 0)
  • Hari pertama bulan sebelumnya:
    DateSerial(Year(Date()), Month(Date())-1,1)
  • Hari terakhir dari bulan sebelumnya:
    DateSerial(Year(Date()), Month(Date()),0)
  • Hari pertama kuartal saat ini:
    DateSerial(Year(Date()), Int((Month(Date()) - 1) / 3) * 3 + 1, 1)
  • Hari terakhir kuartal saat ini:
    DateSerial(Year(Date()), Int((Month(Date()) - 1) / 3) * 3 + 4, 0)
  • Hari pertama dari minggu saat (dengan asumsi minggu = hari 1):
    Date() pada PHP - WeekDay(Date()) + 1
  • Hari terakhir minggu saat:
    Date() pada PHP - WeekDay(Date()) + 7
  • Hari pertama dari minggu saat (menggunakan pengaturan dalam dialog Opsi kotak):
    Date() pada-PHP WeekDay(Date(), 0) + 1
  • Hari terakhir minggu saat:
    Date() pada-PHP WeekDay(Date(), 0) + 7
Untuk informasi lebih lanjut tentang menghitung tahun fiskal atau bulan fiskal, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
210249Bagaimana untuk mendapatkan fiskal tahun atau bulan dari tanggal tertentu di Access 2000
HATI-HATI: Jika Anda mengikuti langkah-langkah dalam contoh ini, Anda mengubah database contoh Northwind.mdb. Anda dapat membuat cadangan berkas Northwind.mdb dan ikuti petunjuk pada salinan database.

Menghitung waktu interval

Karena nilai waktu disimpan sebagai sebagian kecil dari 24 jam sehari, Anda dapat menerima salah format hasil saat Anda mencoba untuk menambah, mengurangi, kalikan atau membagi data time lebih dari 24 jam.

Sebagai contoh, jika Anda mencoba untuk menemukan jumlah jam berlalu antara dua tanggal dengan mengurangi nilai-nilai dalam Visual Basic, Anda dapat menerima nomor yang salah. Untuk menunjukkan hal ini, ketik kode berikut dalam Jendela segera dan catatan bahwa ia mengembalikan nilai 0: 00 jam daripada nilai benar 53:00 jam:
   StartDate=#6/1/93 8:00AM#
   EndDate=#6/3/93 1:00PM#
   ?Format(EndDate-StartDate,"hh:mm")

Untuk menyelesaikan masalah-masalah format yang disebabkan oleh nilai-nilai waktu yang lebih besar dari 24 jam, Anda dapat menggunakan Int() dan CSng() fungsi dalam Visual Basic untuk memisahkan nilai waktu dihitung dalam variabel yang berbeda untuk hari, jam, menit dan detik. Sebagai contoh, Anda dapat memasukkan fragmen kode berikut dalam fungsi kustom untuk menciptakan variabel waktu terpisah:
 '-------------------------------------------------------------------
 ' This sample code separates a time interval into seven variables for
 ' the following values: days, hours, minutes, seconds, total time in
 ' hours, total time in minutes, and total time in seconds.
 '
 ' The interval argument is flexible; it can be a single value, an
 ' expression, or a field reference.
 '-------------------------------------------------------------------

 Dim totalhours As Long, totalminutes As Long, totalseconds As Long
 Dim days As Long, hours As Long, minutes As Long, seconds As Long
 Dim interval As Variant

 days = Int(CSng(interval))
 totalhours = Int(CSng(interval * 24))
 totalminutes = Int(CSng(interval * 1440))
 totalseconds = Int(CSng(interval * 86400))
 hours = totalhours Mod 24
 minutes = totalminutes Mod 60
 seconds = totalseconds Mod 60

Anda dapat menggunakan totalhours, totalminutes, dan totalseconds variabel menampilkan nilai waktu sebagai satu unit waktu. Hari, jam, menit, dan detik variabel memungkinkan Anda untuk memecah nilai waktu menjadi bagian waktu. Untuk menampilkan nilai-nilai waktu dalam format yang berbeda, Anda dapat menggabungkan variabel ini seperti yang ditunjukkan dalam contoh fungsi-fungsi berikut:
  • The GetElapsedDays() fungsi menghitung berlalu waktu antara dua tanggal nilai dan menampilkan hasilnya di hari.
  • The GetElapsedTime() fungsi menghitung waktu yang berjalan antara nilai-nilai waktu dan menampilkan hasilnya di hari, jam, menit dan detik.
  • The GetTimeCardTotal() fungsi merangkum bidang nilai-nilai waktu di meja dan menampilkan total dalam jam dan menit.

GetElapsedDays() contoh fungsi

Untuk membuat GetElapsedDays() fungsi, ikuti langkah berikut:
  1. Buka database contoh Northwind.mdb.
  2. Buat modul dan ketik baris berikut Deklarasi bagian jika tidak sudah ada:
     Option Explicit
  3. Ketik fungsi berikut:
     Function GetElapsedDays (interval)
        Dim days As Long
    
        days = Int(CSng(interval))
        GetElapsedDays = days & " Days "
     End Function
  4. Untuk menguji fungsi ini, membuat permintaan baru berdasarkan tabel pesanan.
  5. Dalam QBE grid, menambahkan bidang berikut.
        Field: ShippedDate
        Show: True
    
        Field: OrderDate
        Show: True
    
        Field: ElapsedTime: GetElapsedDays([ShippedDate]-[OrderDate])
        Show: True
  6. Menjalankan query. Perhatikan bahwa kolom ElapsedTime menampilkan jumlah hari antara bidang ShippedDate dan OrderDate lapangan untuk setiap record di tabel pesanan.

GetElapsedTime() contoh fungsi

Untuk membuat GetElapsedTime() fungsi, ikuti langkah berikut:
  1. Membuat sebuah tabel baru dengan struktur berikut dan menyimpannya sebagai TimeLog.
        Table: TimeLog
        -----------------------
        Field Name: StartTime
        Data Type: Date/Time
        Format: General Date
    
        Field Name: EndTime
        Data Type: Date/Time
        Format: General Date
  2. Melihat tabel TimeLog dalam Datasheet tampilan, masukkan tiga berikut Catatan, dan kemudian tutup tabel:
        StartTime                 EndTime
        --------------------------------------------
        5/10/95 4:57:00  PM       5/15/95 2:38:00 AM
        5/11/95 10:17:31 AM       5/24/95 6:05:00 PM
        5/18/95 9:16:43  AM       5/19/95 5:03:00 PM
  3. Buat modul dan ketik baris berikut Deklarasi bagian:
     Option Explicit
  4. Masukkan fungsi berikut:
     Function GetElapsedTime(interval)
    
     Dim totalhours As Long, totalminutes As Long, totalseconds As _
         Long
     Dim days As Long, hours As Long, Minutes As Long, Seconds As Long
    
     days = Int(CSng(interval))
     totalhours = Int(CSng(interval * 24))
     totalminutes = Int(CSng(interval * 1440))
     totalseconds = Int(CSng(interval * 86400))
     hours = totalhours Mod 24
     Minutes = totalminutes Mod 60
     Seconds = totalseconds Mod 60
    
     GetElapsedTime = days & " Days " & hours & " Hours " & Minutes & _
     " Minutes " & Seconds & " Seconds "
    
     End Function

    CATATAN: The GetElapsedTime fungsi memerlukan bahwa Anda melewati tanggal dan waktu.
  5. Untuk menguji fungsi ini, buat laporan baru didasarkan pada TimeLog tabel menggunakan AutoReport Wizard.
  6. Melihat laporan dalam Design view.
  7. Menambahkan kotak teks terikat untuk TimeLog tabel detail bagian dan mengatur sifat sebagai berikut:
        Textbox
        ---------------
        Name: ElapsedTime
        ControlSource: =GetElapsedTime([EndTime]-[StartTime])
        Width: 3 inches
  8. Pratinjau laporan. Catatan bahwa setiap record menampilkan total berlalu waktu dalam hari, jam, menit dan detik.

GetTimeCardTotal() contoh fungsi

Untuk membuat GetTimeCardTotal() fungsi, ikuti langkah berikut:

CATATAN: Kode contoh dalam artikel ini menggunakan Microsoft Data akses objek. Untuk kode ini untuk menjalankan dengan benar, Anda harus referensi perpustakaan objek Microsoft DAO 3,6. Untuk melakukannya, klik Referensi pada Alat menu di Editor Visual Basic, dan memastikan bahwa Perpustakaan objek Microsoft DAO 3,6 kotak centang dipilih.

  1. Membuat sebuah tabel baru dengan struktur berikut dan menyimpannya sebagai TimeCard.
        Table: TimeCard
        -----------------------
        Field Name: Daily Hours
        Data Type: Date/Time
        Format: Short Time
  2. Melihat tabel TimeCard dalam Datasheet tampilan, masukkan empat berikut Catatan, dan kemudian tutup tabel:
        8:15
        7:37
        8:12
        8:03
  3. Buat modul dan ketik baris berikut Deklarasi bagian jika tidak sudah ada:
     Option Explicit
  4. Ketik fungsi berikut:
     Function GetTimeCardTotal ()
    
     Dim db As DAO.Database, rs As DAO.Recordset
     Dim totalhours As Long, totalminutes As Long
     Dim days As Long, hours As Long, minutes As Long
     Dim interval As Variant, j As Integer
    
     Set db = dbengine.workspaces(0).databases(0)
     Set rs = db.OpenRecordset("timecard")
     interval = #12:00:00 AM#
        While Not rs.EOF
           interval = interval + rs![Daily hours]
           rs.MoveNext
        Wend
     totalhours = Int(CSng(interval * 24))
     totalminutes = Int(CSng(interval * 1440))
     hours = totalhours Mod 24
     minutes = totalminutes Mod 60
    
     GetTimeCardTotal = totalhours & " hours and " & minutes & " minutes"
    
     End Function
  5. Untuk menguji fungsi ini, ketik baris berikut di jendela segera, dan kemudian tekan ENTER:
     ?GetTimeCardTotal()

    Perhatikan bahwa jendela segera menampilkan 32 jam 7 menit.

REFERENSI

Untuk informasi lebih lanjut tentang menghitung nilai-nilai tanggal, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
210276Menyimpan, menghitung dan membandingkan data Date/Time

Properti

ID Artikel: 210604 - Kajian Terakhir: 19 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Kata kunci: 
kbhowto kbprogramming kbmt KB210604 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:210604

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com