-
RE: Lỗi trùng mã khách hàng
tieu_ngao > 18-06-17, 11:04 AM
(18-06-17, 10:52 AM)MTNQ Đã viết:
Cám ơn anh! Có để thể hướng dẫn cách sửa hàm fctaomabn thành dạng text dc ko anh?(17-06-17, 02:23 PM)tieu_ngao Đã viết: MTNQ giải thích giùm mình đoạn này, mình chưa hiểu:
Nếu mình muốn lấy mã theo dạng: yyyymmdd001 kiểu dữ liệu của mình là textMã:datNgay_Max = DateValue(Mid(lngMaBN_Max, 5, 2) & "/" & Mid(lngMaBN_Max, 3, 2) & "/" & Left(lngMaBN_Max, 2))
thì làm thế nào?
Xin lỗi. Hàm DateValue trong trường hợp này có thể trả về giá trị không như mong muốn nếu format ngày giờ trên hệ thống khác "dd/MM/yyyy"
Nên sửa lại như sau
Mã:datNgay_Max = Format(Mid(lngMaBN_Max, 5, 2) & "/" & Mid(lngMaBN_Max, 3, 2) & "/" & Left(lngMaBN_Max, 2), "dd/mm/yy")
-Nếu muốn format theo kiểu yyyymmdd001 thì :
datNgay_Max = Format(Mid(lngMaBN_Max, 7, 2) & "/" & Mid(lngMaBN_Max, 5, 2) & "/" & Left(lngMaBN_Max, 4), "dd/mm/yy")
Tuy nhiên phải sửa hàm fcTaoMaBN lại cho phù hợp với dữ liệu kiểu text -
RE: Lỗi trùng mã khách hàng
MTNQ > 18-06-17, 11:04 AM
(17-06-17, 09:41 AM)cannguyen Đã viết:
(17-06-17, 06:35 AM)MTNQ Đã viết: File của bạn đây:
http://www.mediafire.com/file/my2x1d7x7y4q7gh/PK1.rar
Cám ơn bạn rất nhiều.
Hiện tại mình không có máy nên chưa test được. Hi vọng là ok
Để tránh lỗi trùng mã khi có nhiều hơn một người Enter cùng lúc thì thêm bẫy lỗi vào:
Mã:Private Sub TenBN_AfterUpdate()
If Nz(Me.TenBN, "") = "" Then Exit Sub
On Error GoTo ErrorHandler
If Nz(MaBN, 0) = 0 Then
Me.MaBN = fcTaoMaBN
DaLuu = "Y"
DoCmd.RunCommand acCmdSaveRecord
End If
Exit_ErrorHandler:
Exit Sub
ErrorHandler:
If Err.Number = 3022 Then
Call XuLyTrungMaBN
Resume Next
Else
MsgBox "Err Number: " & Err.Number & vbCrLf & Err.Description, , "Error: TenBN_AfterUpdate"
End If
Resume Exit_ErrorHandler
End Sub
Thủ tục xử lý lỗi:
Mã:Private Sub XuLyTrungMaBN()
Dim I As Integer
Dim lngMaBN As Long
On Error GoTo ErrorHandler
lngMaBN = Me.MaBN
TaoLaiMabn:
lngMaBN = lngMaBN + 1
If DCount("[MaBN]", "BenhNhan", "[MaBN] = " & lngMaBN) = 0 Then
Me.MaBN = lngMaBN
DoCmd.RunCommand acCmdSaveRecord
Else
GoTo TaoLaiMabn
End If
Exit_ErrorHandler:
Exit Sub
ErrorHandler:
If Err.Number = 3022 Then
I = I + 1
If I < 100 Then
Resume TaoLaiMabn
Else
MsgBox "Loi trung MaBN: vui long lien he Admin!", vbCritical, "Loi!"
End If
Else
MsgBox "Err Number: " & Err.Number & vbCrLf & Err.Description, , "Error: XuLyTrungMaBN"
End If
Resume Exit_ErrorHandler
End Sub
MTNQ đã up lại file ở bài trên bạn tải lại nhé -
RE: Lỗi trùng mã khách hàng
MTNQ > 18-06-17, 05:13 PM
(18-06-17, 11:04 AM)tieu_ngao Đã viết: Cám ơn anh! Có để thể hướng dẫn cách sửa hàm fctaomabn thành dạng text dc ko anh?
đây:http://www.mediafire.com/file/o2yv1285k5agblr/PK2.rar
bạn test thử nhé (Lâu rùi không làm Bound Form)
-
RE: Lỗi trùng mã khách hàng
MTNQ > 18-06-17, 05:22 PM
(18-06-17, 11:04 AM)MTNQ Đã viết:
(17-06-17, 09:41 AM)cannguyen Đã viết:
(17-06-17, 06:35 AM)MTNQ Đã viết: File của bạn đây:
http://www.mediafire.com/file/my2x1d7x7y4q7gh/PK1.rar
Cám ơn bạn rất nhiều.
Hiện tại mình không có máy nên chưa test được. Hi vọng là ok
MTNQ đã up lại file ở bài trên bạn tải lại nhé
Do hạn chế của kiểu Long Ingteger nên nếu test file ở năm 2022 trở lên sẽ báo lỗi, theo mình nếu muốn định dạng theo kiểu "năm tháng ngày" thì nên chuyển sang kiểu text -
RE: Lỗi trùng mã khách hàng
tieu_ngao > 19-06-17, 09:26 PM
(18-06-17, 05:13 PM)MTNQ Đã viết:
(18-06-17, 11:04 AM)tieu_ngao Đã viết: Cám ơn anh! Có để thể hướng dẫn cách sửa hàm fctaomabn thành dạng text dc ko anh?
đây:http://www.mediafire.com/file/o2yv1285k5agblr/PK2.rar
bạn test thử nhé (Lâu rùi không làm Bound Form)
Cám ơn MTNQ nhé. Để mình chạy thử có gì mình hồi âm nha. -
RE: Lỗi trùng mã khách hàng
advnamk > 27-06-17, 11:31 PM
(15-06-17, 02:48 PM)cannguyen Đã viết: Chào các bạn
Mình cần tạo form Bệnh nhân với yêu cầu Mã khách hàng sắp xếp theo ngày. Cấu trúc Mã BN như sau: Năm+Tháng+Ngày+STT. Ví dụ: 2017061501
Mình viết lệnh cho sự kiện như sau:
If [NgayNay] = [NgayTruoc] Then
L2 = BNCuoi + 1
Else
L2 = 1
End If
DoCmd.GoToRecord , , acNewRec
MaBN = Year(NgayDau) & Right(("0" & Month(NgayDau)), 2) & Right(("0" & Day(NgayDau)), 2) & Right(("00" & L2), 2)
Nhâp 1 máy thì ok nhưng nhập nhiều máy thì lỗi trùng mã bệnh nhân. Nhờ các bạn giúp nhé
Mình gửi kèm link: https://drive.google.com/open?id=0B7F3oA...HNoeE5nNm8
Cám ơn các bạn
Cái vấn đề này mình cũng đã mất nhiều thời gian.
đây là giải pháp của mình. ban tham khảo nha.
- Khi nhập phiếu mới. ta cho nó 1 mã số tạm. (tất cả các máy chung 1 mã số vd 20170601000 (Mỗi ngày có thể lập 999 phiếu)
- Khi nhấn lút lưu ta mới tạo hàm chính thức trong CSDL dùng hàm tìm tất cả các phiếu có chung yyy,mm,dd (viết hàm thì hơi mất công dùng Queries với điều kiện là "yyyymmdd*" cho dễ làm rồi dùng hàm counta + 1 ) Mình cũng cỏ thể tạo 1 Textbox "Tổng Số phiếu đã nhập trong ngày :..." +1 rồi ghép cái yyyymmdd với right("000" & cái counta + 1 này) là ok.
Chúc bạn thành công.