-
Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
Xuân Thanh > 24-04-13, 12:31 PM
Khi thiết kế các chương tình quản lý Học viên, Hộ khẩu, Nhân sự...ta thường phải tạo Mã cho Học viên, Nhân Khẩu, Nhân viên... Có nhiều cách tạo mã cho các trường hợp này. Xin giới thiệu với các bạn hàm CreateCode mà tôi hay sử dụng. Hàm này dựa vào khai báo Họ Tên, Ngày Sinh, Giới tính để tạo Mã
1/ Lấy các chữ cái đầu của Họ tên để tạo ra thành phần HOTEN
Ví dụ : Nguyễn Văn Thanh thì HOTEN = NVT, Trần Thị Mộng Hoài thì HOTEN = TTMH
2/ Lấy Năm của Ngày sinh, Tháng của Ngày Sinh(2 số), Ngày của Ngày Sinh(2 số) ghép lại tạo thành NGAYSINH
Ví dụ Ngày sinh = 15/11/1958 thì NGAYSINH = 19581115, Ngày sinh = 3/7/1965 thì NGASINH = 19650703
3/ Lấy Giới tính tạo ra GIOITINH
Ví dụ Giới tính = Nam thì GIOITINH = M, Giới tính = Nữ thì GIOITINH = F
Và CreateCode = HOTEN & NGAYSINH & GIOITINH
Ví dụ Nhân viên Trần Thị Mộng Hoài, sinh 3/7/1965, giới tính nữ thì Mã Nhân Viên sẽ là NTMH19650703F
Với cách tạo mã tự sinh như thế này thì trong một bộ hồ sơ ít xảy ra trường hợp bị trùng Mã
Mời các bạn tham khảo hàm CreateCode
Mã PHP:Function CreateCode(strName As String, strDateOfBirth As Date, strGender As String) As String
Dim sName As String
Dim sNowName As String
sNowName = Trim(strName)
sName = Left(sNowName, 1)
Dim i As Integer
For i = 1 To Len(sNowName)
If Mid(sNowName, i, 1) = Space(1) Then
sName = sName & Mid(sNowName, i + 1, 1)
End If
Next
Dim sDate As String
sDate = Year(strDateOfBirth) & Right("0" & Month(strDateOfBirth), 2) & Right("0" & Day(strDateOfBirth), 2)
Dim sGender As String
sGender = IIf(strGender = "Nam", "M", "F")
CreateCode = sName & sDate & sGender
End Function
Chúc các bạn vui
Thân mến -
RE: Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
tracanhtam > 25-04-13, 10:11 AM
(24-04-13, 12:31 PM)Xuân Thanh Đã viết: Khi thiết kế các chương tình quản lý Học viên, Hộ khẩu, Nhân sự...ta thường phải tạo Mã cho Học viên, Nhân Khẩu, Nhân viên... Có nhiều cách tạo mã cho các trường hợp này. Xin giới thiệu với các bạn hàm CreateCode mà tôi hay sử dụng. Hàm này dựa vào khai báo Họ Tên, Ngày Sinh, Giới tính để tạo Mã
Bạn cho hỏi, nếu một người không có ngày sinh hoặc tháng sinh hoặc cả hai thì làm sao? Xin cám ơn
1/ Lấy các chữ cái đầu của Họ tên để tạo ra thành phần HOTEN
Ví dụ : Nguyễn Văn Thanh thì HOTEN = NVT, Trần Thị Mộng Hoài thì HOTEN = TTMH
2/ Lấy Năm của Ngày sinh, Tháng của Ngày Sinh(2 số), Ngày của Ngày Sinh(2 số) ghép lại tạo thành NGAYSINH
Ví dụ Ngày sinh = 15/11/1958 thì NGAYSINH = 19581115, Ngày sinh = 3/7/1965 thì NGASINH = 19650703
3/ Lấy Giới tính tạo ra GIOITINH
Ví dụ Giới tính = Nam thì GIOITINH = M, Giới tính = Nữ thì GIOITINH = F
Và CreateCode = HOTEN & NGAYSINH & GIOITINH
Ví dụ Nhân viên Trần Thị Mộng Hoài, sinh 3/7/1965, giới tính nữ thì Mã Nhân Viên sẽ là NTMH19650703F
Với cách tạo mã tự sinh như thế này thì trong một bộ hồ sơ ít xảy ra trường hợp bị trùng Mã
Mời các bạn tham khảo hàm CreateCode
Mã PHP:Function CreateCode(strName As String, strDateOfBirth As Date, strGender As String) As String
Dim sName As String
Dim sNowName As String
sNowName = Trim(strName)
sName = Left(sNowName, 1)
Dim i As Integer
For i = 1 To Len(sNowName)
If Mid(sNowName, i, 1) = Space(1) Then
sName = sName & Mid(sNowName, i + 1, 1)
End If
Next
Dim sDate As String
sDate = Year(strDateOfBirth) & Right("0" & Month(strDateOfBirth), 2) & Right("0" & Day(strDateOfBirth), 2)
Dim sGender As String
sGender = IIf(strGender = "Nam", "M", "F")
CreateCode = sName & sDate & sGender
End Function
Chúc các bạn vui
Thân mến -
RE: Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
Xuân Thanh > 25-04-13, 10:47 AM
-
RE: Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
tracanhtam > 25-04-13, 11:21 AM
(25-04-13, 10:47 AM)Xuân Thanh Đã viết:
(25-04-13, 10:11 AM)tracanhtam Đã viết: Bạn cho hỏi, nếu một người không có ngày sinh hoặc tháng sinh hoặc cả hai thì làm sao? Xin cám ơn
1/ Nhân viên không có ngày sinh là sao?
2/ Hàm trên chỉ mang tính chất gợi ý. Cụ thể thì các bạn tuy32nghi chế biến cho phù hôp
Thân mến
Nhân viên không có ngày sinh tức là có thể nhân viên đó chỉ có duy nhất năm sinh mà thôi -
RE: Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
bomnhauag > 25-04-13, 11:41 AM
có 1 cách tối ưu hơn là tạo Field tên ID<Autonumber> làm khóa chính cho table, sẽ ổn hơn, mã NV,HS thì phát sinh dựa vào ID này bảo đảm tuyệt đối không trùng luôn.
Table: tbHocSinh(ID<Autonumber>, MaHS, TenHS,.....)
VD:
function taoMaHS(id as integer) as string
taoMaHS = "HS" & right("00000" & id, 5)
end function
-
RE: Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
Xuân Thanh > 25-04-13, 04:31 PM
(25-04-13, 11:41 AM)bomnhauag Đã viết: có 1 cách tối ưu hơn là tạo Field tên ID<Autonumber> làm khóa chính cho table, sẽ ổn hơn, mã NV,HS thì phát sinh dựa vào ID này bảo đảm tuyệt đối không trùng luôn.
Table: tbHocSinh(ID<Autonumber>, MaHS, TenHS,.....)
VD:
function taoMaHS(id as integer) as string
taoMaHS = "HS" & right("00000" & id, 5)
end function
Cái dở của Autonumber chính là khi một record bị xóa thì Autonumber không còn liên tục nữa. Chính vì thế người ta rất ít dùng. Nếu muốn như bomnhau thì thêm một trường STT nữa và gán vào sau cùng của Mã
STT = Right("0000" & STT, 5)
CreateCode = HOTEN & NGAYSINH & GIOITINH & STT
Thân mến -
RE: Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
TvAcc > 27-04-13, 11:16 AM
- Thêm trường STT thì mã không bị trùng, nhưng khi xóa record thì nó cũng không liên tục như là Autonumber vậy.
- Ví dụ
1. NGUYỄN TRẦN TÂM 1987 -> MÃ: NTT1987M1
2. NGUYỄN TUẤN THANH 1987 -> MÃ: NTT1987M2
3. NGUYỄN TUẤN TÚ 1987 -> MÃ: NTT1987M3
4 NGUYỄN THANH TUẤN 1987 -> MÃ: NTT1987M4
- Một doanh nghiệp có nhiều công nhân thì xảy ra trường hợp như ví dụ là bình thường.
- Tôi có hỏi họ là tại sao giấy CMND chỉ có năm sinh, họ bảo rằng trong giấy khai sinh và hộ khẩu chỉ có năm sinh, nên công an cấp giấy CMND chỉ có năm sinh (tỉnh nào ở miền Tây cũng có).
- Khi đăng ký mã số thuế cá nhân cho họ, phần mềm của bộ Tài chính không chấp nhận. Hỏi bên thuế họ bảo những người nào chỉ có năm sinh thì nhập 01/01/1987 !!!??? -
RE: Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
bomnhauag > 28-04-13, 02:18 AM
liên tục hay không đâu có quan trọng đâu. khi 1 nhân sự nghỉ chẳng hạn, thì mã đó sẽ bị xóa chứ không cấp lại cho đối tượng khác, trống là đương nhiên. -
RE: Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
TvAcc > 28-04-13, 03:09 AM
Đúng vậy. Dùng Autonumber đơn giản hơn. -
RE: Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
Xuân Thanh > 28-04-13, 03:56 PM
Cách của tôi thường làm là vẫn dùng cách tạo mã như trên. Dùng phương pháp bẫy lỗi để nếu trùng thì thêm một ký tự vào cuối dãy mã, vì thực sự trong một bộ hồ sơ ít bị trùng lắm theo mã trên
Thân mến