Thủ Thuật Access

Thế Giới Thủ Thuật với Access

Set Mặc Định định dạng ngày tháng

Posted by Noname on 03.02.2010

Hỏi: Nếu như trong phần mềm của mình định dạng Format cho trường Date là dd/mm/yyyy mà ngày tháng hệ thống là mm/dd/yyyy thì sẽ dẫn đến lẫn lộn ngày tháng khi nhập vào CSDL .Nếu như mình nhập 12/06/2009 thì nó sẽ hiển thị 6/12/2009.
Vậy có cách nào để khi mình mở phần mềm lên nó sẽ tự kiểm tra ngày hệ thống để trả về định dạng dd/mm/yyyy không ?
Đừng bảo mình chuyển trong Control Panel nhé ,vì như thế cứ mang pm đi máy nào cũng phải chỉnh lại mất công lắm,mà không pro

Đáp: ( dongnamnb- Danketoan)
Bạn có thể giải quyết bằng hàm API. Cách làm như sau:

1. Copy đoạn code sau vào 1 module

Option Compare Database

Public Const LOCALE_SSHORTDATE = &H1F
Public Const WM_SETTINGCHANGE = &H1A
‘same as the old WM_WININICHANGE
Public Const HWND_BROADCAST = &HFFFF&

Public Declare Function SetLocaleInfo Lib “kernel32” Alias _
“SetLocaleInfoA” (ByVal Locale As Long, ByVal LCType As _
Long, ByVal lpLCData As String) As Boolean
Public Declare Function PostMessage Lib “user32” Alias _
“PostMessageA” (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GetSystemDefaultLCID Lib “kernel32” _
() As Long
Public Declare Function GetLocaleInfo Lib “kernel32” Alias _
“GetLocaleInfoA” (ByVal Locale As Long, ByVal LCType As Long, ByVal _
lpLCData As String, ByVal cchData As Long) As Long

Sub SetSysDate()
Dim lLocal As Long
Dim Length As Long
Dim dwLCID As Long
Dim Buf As String * 1024

On Error GoTo SetSysDate_Error
lLocal = GetSystemDefaultLCID()
Length = GetLocaleInfo(lLocal, LOCALE_SSHORTDATE, Buf, Len(Buf))
If Not Left$(Buf, Length – 1) = “dd/MM/yyyy” Then
dwLCID = GetSystemDefaultLCID()
If SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE, “dd/MM/yyyy”) = False Then
MsgBox “Khong doi duoc dinh dang ngay he thong.”, 64, “Thong bao”
Exit Sub
End If
PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0

End If

Exit Sub

SetSysDate_Error:
MsgBox “Unexpected Error No. ” & Err.Number & _
” in procedure SetSysDate of Form Main. ” _
& vbCrLf & vbCrLf & Err.Description, 64, “Dish Care Centre”
End Sub

Ở sự kiện Form_Load của form startup của bạn, bạn gọi thủ tục SetSysDate như sau:

Private Sub Form_Load()

SetSysDate

End Sub

 Như vậy mỗi lần chạy chương trình của bạn thì định dạng ngày hệ thống sẽ tự động chuyển thành dạng dd/mm/yyyy
____________________________________________________________________________________
Thảo luận thêm: http://thuthuataccess.co.cc/forum

11 phản hồi to “Set Mặc Định định dạng ngày tháng”

  1. Anonymous said

    Sao chương trình báo lỗi ngay thủ tục gọi hàm SetSysDate. Lỗi như sau :"Sub or function not defined". Xin chỉ giáo. Cám ơn nhiều!

  2. Noname said

    Có lẽ thủ tục SetSysDate bị khai báo là Private nên mới có hiện tượng trên. Bạn khai báo lại thành public thử.

  3. Anonymous said

    Nó báo lỗi "Type-declaration character doesn't match declared data type" tại hàm left$

  4. Noname said

    Bạn thử bỏ dấu $

  5. Anonymous said

    vay minh viet doan code nay vao cho nao trong access ji,minh cung gap phai truong hop nay khi lam acess,xin thinh~ giao

  6. Anonymous said

    Thủ thuật này rất hay, chương trình đã chạy tốt trên máy của mình. Xin hỏi có thủ thuật nào tương tự để set dấu phân các và dầu thập phân: Ví dụ: Mặc định dấu phân cách nhóm là "," và dấu thập phân: "." (theo hệ Mỹ). Vậy có thủ thuật nào để sét về tương ứng: "." và ",". Ths

  7. Anonymous said

    sao mình làm ko dc nhỉ

  8. KHAC DUY said

    vậy muốn đổi thành yy/mm/dd thì sửa đoạn code lại như thế nào bạn. Vui lòng chỉ giúp

  9. KHAC DUY said

    mình sửa đoạn code để set hệ thống theo định dạng yy/mm/dd thì như thế nào, bạn vui lòng chỉ giúp.

  10. Phan Gia said

    bạn ơi, cho mình hỏi. Mình đang làm bài tập web cơ sở dữ liệu access . Mình có một bảng có một cột là định dạng date time nhưng mình làm mọi cách rồi mà khi select dữ liệu ra nó chỉ ra giờ thôi, không ra ngày tháng như mong muốn. Mở bảng lên, thêm dữ liệu trực tiếp vào thì được, nhưng insert vào từ web thì khi mở bảng lên ngày tháng vẫn như vậy, nhưng khi click chuột vào record ngày tháng đó nó lại chuyển sang giờ(bực mình thật). Có bạn nào có phương hướng giải quyết không? chỉ dùm mình với. Thanks!

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

 
%d bloggers like this: