Bình chọn: Bạn có ý kiến gì vế cách tạo mã này?
Bình chọn đã bị khoá.
Tốt
100.00%
2 100.00%
Bình thường
0%
0 0%
Tổng cộng 2 bình chọn 100%
* Bạn đã bình chọn cho mục này. [Hiển thị kết quả]

Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hàm] Hàm tạo Mã (dùng cho Học Sinh, Sinh Viên, Cán Bộ, Hộ Khẩu....)
#1
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 StringstrDateOfBirth As DatestrGender As String) As String
    Dim sName 
As String
    Dim sNowName 
As String
    sNowName 
Trim(strName)
    
sName Left(sNowName1)
    
Dim i As Integer
    
For 1 To Len(sNowName)
        If 
Mid(sNowNamei1) = Space(1Then
            sName 
sName Mid(sNowName11)
        
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
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn hueqlhc , Noname , thuc1605
#2
(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ã
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 StringstrDateOfBirth As DatestrGender As String) As String
    Dim sName 
As String
    Dim sNowName 
As String
    sNowName 
Trim(strName)
    
sName Left(sNowName1)
    
Dim i As Integer
    
For 1 To Len(sNowName)
        If 
Mid(sNowNamei1) = Space(1Then
            sName 
sName Mid(sNowName11)
        
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
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
Chữ ký của tracanhtam Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#3
(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 tùy nghi chế biến cho phù hôp
Thân mến
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
(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
Chữ ký của tracanhtam Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#5
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

020
ღღღღღTài sản của bomnhauag (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
(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

020

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
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#7
- 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 !!!???
Chữ ký của TvAcc Xin chào, mình là TvAcc, Tham gia http://thuthuataccess.com/forum từ ngày 06-01 -13.
Reply
Những người đã cảm ơn
#8
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.
ღღღღღTài sản của bomnhauag (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#9
Đúng vậy. Dùng Autonumber đơn giản hơn.
Chữ ký của TvAcc Xin chào, mình là TvAcc, Tham gia http://thuthuataccess.com/forum từ ngày 06-01 -13.
Reply
Những người đã cảm ơn
#10
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
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hàm] Thư viện hàm cần biết cho người mới học truongtrungviet 30 1,044 17-11-16, 05:12 PM
Bài mới nhất: Nguyễn Hồng Quân
  Hàm đọc số dùng mã Unicode trong Access Noname 28 11,695 23-03-16, 11:45 PM
Bài mới nhất: thiennamlong
  [Thủ Thuật] Hỏi_Xác định phiên bản Access đang dùng maidinhdan 1 378 18-12-15, 08:43 AM
Bài mới nhất: ongke0711
  [Thủ Thuật] 25 thủ thuật sử dụng Combobox, ListBox, Option group (Sưu tầm) ongke0711 0 556 03-12-15, 05:06 PM
Bài mới nhất: ongke0711
  Xây dựng đồng hồ đếm ngược Noname 7 4,263 17-03-15, 04:57 PM
Bài mới nhất: ledungddk001

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ