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

Thảo luận trong 'Access và VBA' bắt đầu bởi glasseggs, 1/2/10.

  1. glasseggs

    glasseggs New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    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
    :giabo:
     
  2. phatnq2002

    phatnq2002 Tích cực giảm cân... Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Vấn đề ngày tháng trong Access

    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.
     
  3. dongnamnb

    dongnamnb Member Hội viên mới

    Được cảm ơn:
    1
    Điểm thành tích:
    6
    Ðề: 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

    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!
     
    Chỉnh sửa cuối: 3/2/10
  4. phatnq2002

    phatnq2002 Tích cực giảm cân... Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Vấn đề ngày tháng trong Access

    Đâ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.
     
  5. glasseggs

    glasseggs New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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ứ.
     
  6. phatnq2002

    phatnq2002 Tích cực giảm cân... Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Vấn đề ngày tháng trong Access

    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.
     
  7. glasseggs

    glasseggs New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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.
     
  8. dongnamnb

    dongnamnb Member Hội viên mới

    Được cảm ơn:
    1
    Điểm thành tích:
    6
    Ðề: Vấn đề ngày tháng trong Access

    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.
     
    Chỉnh sửa cuối: 3/2/10
  9. glasseggs

    glasseggs New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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.
     

Chia sẻ trang này

XenForo Add-ons by Brivium ™ © 2012-2013 Brivium LLC.