Chủ đề: Vấn đề ngày tháng trong Access
-
02-02-2010, 05:44 AM #1Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
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
:giabo:View more random threads:
- Checkbox và option button
- [Hỏi] Biểu tượng hình tam giác màu vàng có dấu chấm thang trong macro !!!
- xin giúp đỡ về Recordsource và controlsource bằng VBA
- Giúp đở vấn đề share csdl access để được nhiều người dùng
- So sánh Access 2003 với Access 2007,Access 2010
- liên kết giữa textbox và listbox
- Xuất report access sang word,excell
- chuyển font Vntime sang unicode
- Tạo Menu trong Access
- Tắt mục
-
02-02-2010, 06:44 PM #2Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 3
Ðề: Vấn đề ngày tháng trong Access
Gửi bởi glasseggs
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.
-
02-03-2010, 04:27 PM #3Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 137
Ðề: 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
Private Sub Form_Load()
SetSysDate
End Sub
Chúc thành công!
-
02-03-2010, 05:00 PM #4Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 4
Ðề: Vấn đề ngày tháng trong Access
Gửi bởi dongnamnb
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.
-
02-03-2010, 05:52 PM #5Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 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ứ.
-
02-03-2010, 07:02 PM #6Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Vấn đề ngày tháng trong Access
Gửi bởi glasseggs
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.
-
02-03-2010, 10:28 PM #7Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 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.
-
02-03-2010, 11:27 PM #8Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Ðề: Vấn đề ngày tháng trong Access
Gửi bởi phatnq2002
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.
-
02-04-2010, 03:03 AM #9Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 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.
Sản phẩm đan lọc được sinh sản và thiết kế dùng cho cả các công trình bể lọc xây dựng mới lẫn các bể lọc hiện hữu. Đan lọc lovense domi giúp tăng khả năng phân phối gió và nước trong quá trình rửa...
Những đặc điểm vượt trội của đan lọc 2 tầng De Nora (8)