kết quả từ 1 tới 9 trên 9

Ðề tài:
Vấn đề ngày tháng trong Access

  1. #1
    Tham gia ngày
    Jan 2010
    Bài gởi
    231
    Cảm ơn
    96
    Được cảm ơn 84 lần trong 67 bài viết
    Rep Power
    12

    Vấn đề ngày tháng trong Access

    Cho mình hỏi chút nhé,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
    Thanks

    Các bài viết khác cùng chuyên mục:


  2. # ADS
    DanketoanAds Circuit advertisement
    Tham gia ngày
    Always
    Bài gởi
    Many
    Công ty CP Tư Vấn Thuế Vinatax CleverCFO Lac Viet

    Dịch vụ đại lý thuế VINATAS: Dịch vụ Đại Lý Thuế | Dịch vụ quyết toán Thuế | Dịch vụ kiểm toán Thuế | Dịch vụ hoàn thuế | Dịch vụ kế toán trọn gói

     
  3. #2
    Tham gia ngày
    Aug 2006
    Nơi ở
    Chỗ nào ở được, chỗ đó là nhà
    Bài gởi
    933
    Cảm ơn
    453
    Được cảm ơn 2,167 lần trong 969 bài viết
    Rep Power
    47

    Ðề: Vấn đề ngày tháng trong Access

    Trích Nguyên văn bởi glasseggs View Post
    Cho mình hỏi chút nhé,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
    Thanks
    Có nhiều hướng dẫn cho vấn đề này rồi. Nhưng đa số đều khá phức tạp.
    Sau một thời gian viết vài chương trình cho các công ty Đài Loan thì tôi nghiệm ra rằng, cách nhập giá trị ngày theo kiểu của họ là OK nhất. Nghĩa là nhập theo kiểu yyyy/MM/dd.

    Cho nên một lời gợi ý là, đối với field ngày, bạn hãy nhập theo kiểu yyyy/MM/dd. Phần định dạng sẽ do Access đảm nhận. Như vậy bạn không bận tâm về định dạng của máy đang sử dụng nữa.
    Để có thể hoàn thành cuộc hành trình ngàn dặm, đầu tiên phải bước đi cái đã.

  4. #3
    Tham gia ngày
    Dec 2007
    Bài gởi
    342
    Cảm ơn
    221
    Được cảm ơn 220 lần trong 118 bài viết
    Rep Power
    19

    Ðề: Vấn đề ngày tháng trong Access

    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 modul

    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

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

    Chúc thành công!
    thay đổi nội dung bởi: dongnamnb, 03-02-2010 lúc 09:33
    Cung cấp thẻ diệt virus BKAV giá cạnh tranh, siêu khuyến mại, có hóa đơn. Mọi lúc, mọi nơi chỉ cần alo 0983178339 là có.

  5. Có 2 thành viên sau đây cảm ơn dongnamnb vì bài viết có ích này:


  6. #4
    Tham gia ngày
    Aug 2006
    Nơi ở
    Chỗ nào ở được, chỗ đó là nhà
    Bài gởi
    933
    Cảm ơn
    453
    Được cảm ơn 2,167 lần trong 969 bài viết
    Rep Power
    47

    Ðề: Vấn đề ngày tháng trong Access

    Trích Nguyên văn bởi dongnamnb View Post
    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 modul



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



    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úc thành công!
    Đây là một đoạn code hữu ích, nhưng như thế là "không fair" lắm, khi chương trình chạy trên một máy của người khác, mà tất cả tài liệu của họ được định dạng theo mm/dd/yyyy ????

    Bạn làm thế, khi chương trình thoát rồi mà không trả lại định dạng cũ cho người ta, lỡ người ta sơ ý, người ta nhập sai dữ liệu trong tài liệu khác thì sao?

    Do vậy cần phải có một thao tác Reset lại format cho người ta khi chương trình thoát nữa thì mới tốt.
    Để có thể hoàn thành cuộc hành trình ngàn dặm, đầu tiên phải bước đi cái đã.

  7. Các thành viên đã cảm ơn phatnq2002 về bài viết hữu ích này :


  8. #5
    Tham gia ngày
    Jan 2010
    Bài gởi
    231
    Cảm ơn
    96
    Được cảm ơn 84 lần trong 67 bài viết
    Rep Power
    12

    Ðề: Vấn đề ngày tháng trong Access

    Nghe bác Phatnq2002 nói em thấy cũng có vẻ rắc rối vấn đề ngày tháng nhỉ.Mà theo bác nếu nhập theo kiểu yyyy/MM/dd thì có phải đặt Format trên Textbox Date là yyyy/MM/dd không ?

    Mà theo em nghĩ nếu ngày hệ thống đang để là MM/dd/yyyy thì khi nhập dữ liệu nó vẫn bắt mình nhập theo kiểu đó chứ.

  9. #6
    Tham gia ngày
    Aug 2006
    Nơi ở
    Chỗ nào ở được, chỗ đó là nhà
    Bài gởi
    933
    Cảm ơn
    453
    Được cảm ơn 2,167 lần trong 969 bài viết
    Rep Power
    47

    Ðề: Vấn đề ngày tháng trong Access

    Trích Nguyên văn bởi glasseggs View Post
    Nghe bác Phatnq2002 nói em thấy cũng có vẻ rắc rối vấn đề ngày tháng nhỉ.Mà theo bác nếu nhập theo kiểu yyyy/MM/dd thì có phải đặt Format trên Textbox Date là yyyy/MM/dd không ?

    Mà theo em nghĩ nếu ngày hệ thống đang để là MM/dd/yyyy thì khi nhập dữ liệu nó vẫn bắt mình nhập theo kiểu đó chứ.
    Thông lệ, có 2 hình thức format:
    Display format: định dạng hiển thị giá trị hiện có của control
    Edit format: định dạng giá trị khi nhập

    Cái rắc rối ở chỗ là cái Display format. Nếu Edit format = Display format thì không vần đề gì, nhưng nếu khác là có chuyện như đã, đang bàn.

    Tuy nhiên, như một ngầm định, hầu hết các ứng dụng khi nhập vào theo dạng yyyy/MM/dd (tức là Edit format) thì sẽ tự động chuyển dạng Display format theo đúng như hệ thống, hoặc theo Custom format (format do người dùng đặt).

    Bạn có thể thử trên Excel hoặc Access để thấy.

    Riêng với Excel, nếu định dạng hệ thống là MM/dd/yyyy, thì khi bạn nhập vào một giá trị ngày dạng dd/MM/yyyy nhưng có dd <= 12 thì Excel xem như đó là tháng. VD: nếu ta nhập vào ngày 12/02/2010 thì Excel hiểu là tháng 12 ngày 2 năm 2010. Nếu dd > 12 thì giá trị đó được hiểu là Text chứ không phải là Date. (Bằng chứng là giá trị đó được mặc định canh trái ô).

    Với Access, nếu định dạng hệ thống là MM/dd/yyyy, thì khi bạn nhập vào textbox một giá trị ngày dạng dd/MM/yyyy nhưng có dd <= 12 thì Access xem như đó là tháng. Nhưng nếu dd > 12 thì Access tự động hiểu đó là ngày. VD: nếu nhập ngày 12/02/2010 thì Access hiểu là tháng 12 ngày 2 năm 2010. Nếu nhập ngày 13/02/2010 thì Access hiểu là tháng 2 ngày 13 năm 2010.

    Như vậy, tùy theo tình huống, trường hợp thì nên dùng cách nào cho hợp lý và đơn giản.
    Để có thể hoàn thành cuộc hành trình ngàn dặm, đầu tiên phải bước đi cái đã.

  10. Các thành viên đã cảm ơn phatnq2002 về bài viết hữu ích này :


  11. #7
    Tham gia ngày
    Jan 2010
    Bài gởi
    231
    Cảm ơn
    96
    Được cảm ơn 84 lần trong 67 bài viết
    Rep Power
    12

    Ðề: Vấn đề ngày tháng trong Access

    Em nhập thử theo kiểu yyyy/mm/dd thì nó cũng đúng theo ý bác. Nhưng như thế em thấy nó cũng không hay lắm.Em muốn ''Việt Hóa" nó theo kiểu cả Display format và Edit format giống nhau là : dd/mm/yyyy.
    Vậy có lẽ để tự người dùng muốn để kiểu nào thì họ tự chỉnh thôi vậy.

  12. #8
    Tham gia ngày
    Dec 2007
    Bài gởi
    342
    Cảm ơn
    221
    Được cảm ơn 220 lần trong 118 bài viết
    Rep Power
    19

    Ðề: Vấn đề ngày tháng trong Access

    Trích Nguyên văn bởi phatnq2002 View Post
    Đây là một đoạn code hữu ích, nhưng như thế là "không fair" lắm, khi chương trình chạy trên một máy của người khác, mà tất cả tài liệu của họ được định dạng theo mm/dd/yyyy ????

    Bạn làm thế, khi chương trình thoát rồi mà không trả lại định dạng cũ cho người ta, lỡ người ta sơ ý, người ta nhập sai dữ liệu trong tài liệu khác thì sao?

    Do vậy cần phải có một thao tác Reset lại format cho người ta khi chương trình thoát nữa thì mới tốt.
    Khi đã có đoạn code trên thì việc reset lại format date cho hệ thống sau khi thoát chương trình tôi nghĩ không phải là việc khó đối với Programmers. Tuy nhiên để làm triệt để như bác phat nêu ra thì quả là khó.

    VD khi ta khởi động ứng dụngthì format ngày hệ thống sẽ được tự động đổi thành dd/mm/yyyy, khi thoát khỏi ứng dụng thì format ngày hệ thống lại tự động đổi lại như cũ. Thời gian từ khi mở ứng dụng làm việc đến khi đóng ứng dụng NSD vẫn có thể làm việc với các ứng dụng khác. Do đó lỗi có thể sảy ra như bác phat đã nêu là không thể tránh khỏi.

    Tuy nhiên chúng ta thường chỉ ứng dụng Access để tạo các ứng dụng nhỏ cho người Viêt Nam sử dụng, format date của người Việt là dd/mm/yyyy do đó bạn sử dụng đoạn code trên để thay đối format cho ngày hệ thống là tương đối tiện lợi, có thể chấp nhận được.
    thay đổi nội dung bởi: dongnamnb, 03-02-2010 lúc 04:30
    Cung cấp thẻ diệt virus BKAV giá cạnh tranh, siêu khuyến mại, có hóa đơn. Mọi lúc, mọi nơi chỉ cần alo 0983178339 là có.

  13. #9
    Tham gia ngày
    Jan 2010
    Bài gởi
    231
    Cảm ơn
    96
    Được cảm ơn 84 lần trong 67 bài viết
    Rep Power
    12

    Ðề: Vấn đề ngày tháng trong Access

    Cho mình hỏi chút ,đoạn code trên có tác dụng trên Windows 7 không .Sao mình chạy không thấy tác dụng.

Thông tin về chủ đề

Users Browsing this Thread

Hiện đang có 1 người xem chủ đề này. (0 thành viên và 1 khách)

Chủ đề tương tự

  1. các hàm tài chính trong Excel
    By mùađông in forum Excel căn bản
    Trả lời: 20
    Bài mới gởi: 09-03-2014, 05:21
  2. Văn bản pháp luật tháng 12
    By Susun in forum CẬP NHẬT VĂN BẢN PHÁP LUẬT
    Trả lời: 6
    Bài mới gởi: 02-01-2010, 08:18
  3. Văn bản pháp luật tháng 10
    By Susun in forum CẬP NHẬT VĂN BẢN PHÁP LUẬT
    Trả lời: 7
    Bài mới gởi: 31-10-2009, 08:04
  4. Văn bản pháp luật tháng 9
    By Susun in forum CẬP NHẬT VĂN BẢN PHÁP LUẬT
    Trả lời: 9
    Bài mới gởi: 03-10-2009, 08:04
  5. Văn bản pháp luật tháng 06/2009
    By tiger2774 in forum CẬP NHẬT VĂN BẢN PHÁP LUẬT
    Trả lời: 7
    Bài mới gởi: 04-07-2009, 08:35

Quyền hạn

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •