Đánh giá chủ đề:
  • 6 Votes - 2.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Set Mặc Định định dạng ngày tháng
#1
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

Mã PHP:
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:

Mã PHP:
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
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan , Cafe Via He
#2
Hàm trên chỉ Set được SHORT DATE, Noname điều chỉnh thêm giúp để set được LONG DATE nữa nhé.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
Sao mình làm theo hướng dẫn này, nhưng máy mình chỉ set được theo dạng dd/MM/yy mà không phải dạng dd/MM/yyyy. Có bác nào biết nguyên nhân không, giúp với!!!!
Chữ ký của hmhieu Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#4
Nhờ các bạn xem hộ, làm thế nào thiết lập được date với năm cao như hình (mặc định của máy là 1930-2029)

[Hình: hinh.jpg]
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
(12-05-11, 01:46 PM)haquocquan Đã viết: Nhờ các bạn xem hộ, làm thế nào thiết lập được date với năm cao như hình (mặc định của máy là 1930-2029)

[Hình: hinh.jpg]

Thì anh cứ nhập số năm mà mình muốn vào ô đó! Ô mờ kia sẽ tự tăng theo.
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
Vấn đề là dùng VBA cơ. (không thích làm thủ công)
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#7
Bé Quân toàn thích chơi hàng độc skull
Chữ ký của Cafe Via He Ở nhờ nhà mẹ mình big green
ღღღღღTài sản của Cafe Via He (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#8
Có một bộ phần mềm, đã cung cấp cho bạn bè dùng.
Mình nhập ngày chỉ có dd/mm/yy. Nhưng nếu nhập năm từ 30 trở lên, máy lại tự hiểu là từ 1930 trở đi (nhưng thực tế là 2030 trở đi cơ).
Đã cung cấp rồi, muốn nếu họ chạy, tự động set luôn cho máy, chứ nhiều người chỉ biết dùng thôi, không biết gì về hệ thống cả. Khó quá.
Giúp nhé.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#9
việc điều chỉnh này cũng không phức tạp lắm.bạn vừa điều chỉnh định dạng trong relagiolna & language va format trong filed dữ liệu như sau. ở mục general format: dd/mm/yyyy. cách này hiệu quả.
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#10
Bé Quân Thân mếm, sau thời gian mài mò, Cafe cũng tìm ra cách chỉnh theo ý muốn rồi.

Giờ chẳng nhớ cách dùng VBA để ghi vào Registry nữa. Bé Quân tự search lại nha big green

Default của Window lower-limit year là 1930 và upper-limit year là 2029. Nếu gõ 1/12/30 thì mặc định nó là 1/12/1930 chứ k phải là 1/12/2030. Theo ý bé là chỉnh số upper-limit year lên con số tuỳ ý và hơn 2029.

Tạo key trong Registry như sau:

HKEY_CURRENT_USER\Control Panel\International

Add key:Calendars

--->> HKEY_CURRENT_USER\Control Panel\International\Calendars

add key : TwoDigitYearMax

--->> HKEY_CURRENT_USER\Control Panel\International\Calendars\TwoDigitYearMax

Add Value:

+Value Name:1
+Data Type:REG_SZ
+ Value:20XX (2050 chẳng hạn)


restart lại máy, đánh thử 1/12/30 để thấy kết quả. Tạo Key registry bằng tay trước đã rồi hãy dùng VBScript :P


Chúc bé Thành Công. Cafe tan sở rồi. Dìa đây
Chữ ký của Cafe Via He Ở nhờ nhà mẹ mình big green
ღღღღღTài sản của Cafe Via He (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan , Noname


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Thủ Thuật] [Shared Code- PhầnII]Chọn ngày tháng bằng click chuột [No Calendar] maidinhdan 13 540 30-11-16, 11:45 AM
Bài mới nhất: ongke0711
  [Thủ Thuật] Demo_Chọn ngày tháng bằng nút (No Calender Tiếng việt) maidinhdan 7 1,401 25-06-16, 12:44 AM
Bài mới nhất: zinzin8x
  [Thủ Thuật] Ẩn record trong table theo ngày tháng tvn_hut 6 492 24-04-16, 01:00 AM
Bài mới nhất: tvn_hut
  Msg Box tiếng Việt Unicode có định dạng chữ đậm tranthanhan1962 13 2,269 30-01-16, 12:39 AM
Bài mới nhất: khanghychu
  [Thủ Thuật] Hỏi_Xác định phiên bản Access đang dùng maidinhdan 1 379 18-12-15, 08:43 AM
Bài mới nhất: ongke0711

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ