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....)
#11
^^ sẵn bàn thì bàn luôn. mình thấy cách dùng ký tự đầu tên như vậy cũng hay nhưng gặp trường hợp tên Ánh, Ân, Định, Được... thì mã tạo ra không đẹp lắm.

Hơn nữa, khi người nhập gõ bằng font này, người kiếm lỡ gõ bằng font khác thì toi, trong trường hợp gặp mấy cái tên như vậy.
ღღღღღTài sản của bomnhauag (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#12
Em cũng thấy việc tạo mã này hay, vô tình lang thang tìm tòi thấy bài viết này, kiến thức nông cạn nên mạnh phép hỏi anh Xuan Thanh là, function createcode đặt ở sự kiện nào, hay nút lệnh nào trong form nhập một học sinh, hoặc 01 nhân viên ??? Xin chỉ giáo
Chữ ký của vulhu06 Xin chào, mình là vulhu06, Tham gia http://thuthuataccess.com/forum từ ngày 15-06 -12.
Reply
Những người đã cảm ơn
#13
(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

Chào Anh Xuan Thanh, em cũng đang tìm code tạo mã tự động, may quá gặp bài viết này. Có một số vấn đề xin chỉ giáo
1. Như ta đã biết thì Mã hocsinh, manv,... được chỉ định làm khóa chính trong table, vậy thì khi nhập liệu thì phải nhập field này trước, nếu thế thì làm gì đã có hoten, ngaysinh để có cơ sở tạo mahv,manv được
2. Code này là hàm tự tạo, vậy ta sẽ đặt vào đâu, sự kiện nào để cập nhật?
Xin cảm ơn anh
Chữ ký của vulhu06 Xin chào, mình là vulhu06, Tham gia http://thuthuataccess.com/forum từ ngày 15-06 -12.
Reply
Những người đã cảm ơn
#14
1/ Table tblHocSinh gồm MaHS, HoTen, NgaySinh, GioiTinh.....
2/ Tạo Form nhập liệu lấy nguồn từ table này, không nhập trực tiếp vào txtMaHS
3/ Các Event AfteUpdate của các txtHoTen, txtNgaySinh, txt GioiTinh gọi hàm CreateCode như sau

Mã:
Private Sub txtHoTen_AfteUpdate()
    Me.txtMaHS = CreateCode(Me.txtHoTen, Me.txtNgaySinh, Me.txtGioiTinh)
End Sub

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
#15
Mình làm không ra bạn ạ, mong được chỉ giáo cụ thể.
Mình làm theo thứ tự sau:
1/ Mình chọn Modules, kích New để mở một modules mới, lưu lại với tên CreateCode
2/ Sau đó tạo Table tblHocSinh gồm MaHS, HoTen, NgaySinh, GioiTinh.....
3/ Tạo Form nhập liệu lấy nguồn từ table này, không nhập trực tiếp vào txtMaHS
4/ Các Event AfteUpdate của các txtHoTen, txtNgaySinh, txt GioiTinh gọi hàm CreateCode như sau
Mã:
Private Sub txtHoTen_AfteUpdate()
    Me.txtMaHS = CreateCode(Me.txtHoTen, Me.txtNgaySinh, Me.txtGioiTinh)
End Sub[/quote]
5/ Mở form đã tạo bước 4 ở chế độ View. Ô Mahs mình không điền, ô hoten mình điền thì nó báo lỗi như hình:

[Hình: 58810417.untitled.png]

Mong XuanThanh giúp đỡ!
Chữ ký của nguyendinhvinh0410 Xin chào, mình là nguyendinhvinh0410, Tham gia http://thuthuataccess.com/forum từ ngày 24-02 -14.
Reply
Những người đã cảm ơn
#16
Tạo mã như bạn bomnhauag nói không cần phải liên tục rất đúng, nhưng nếu sử dụng right("00000" & id, 5) thì vần có thể bị trùng. Ví dụ Học sinh có ID=1 và học sinh có ID=100001 sẽ có cùng mã là HS00001. Cách tạo mã của bạn Xuân Thanh có cái hay riêng nhưng nếu gặp phải hai người có tên trùng hợp lại trùng ngày sinh như: Nguyễn Văn Minh và Nguyễn Văn Mạnh trùng ngày sinh có STT=1 và STT=100001 cũng vẫn bị trùng. Trước giờ tôi có cách tạo mã không bao giờ bị trùng là thêm phía trước Format(Now(),"yyyymmddhhnnss"). Tức là ghép vào năm, tháng, ngày, giờ, phút... khi nhập. Ví dụ khi nhập tên đối tượng HS lúc 10g15'28" ngày 1/1/2014 mã học sinh đó sẽ là "20040101101528HS" thứ tự sắp xếp của mã này vẫn theo thứ tự nhập dữ liệu. Có một điều khi tôi viết mã là Format(Now(),"YYYYMMDDhhmmss"). M=tháng, m=phút thì Access tự động đổi thành Format(Now(),"yyyymmddhhnnss") =>n =phút. Chả hiểu ra sao cả. chắc nó sợ bị hiểu nhằm m là month chứ không phải là minute. Riêng phần STT thường thì khi nào xuất ra report cần sắp xếp theo tên, họ, ngày sinh thì xử lý sau. Có nếu muốn có trường thứ tự cho đẹp Form hay dùng vào việc gì thì viết code cho event Unload của form

Private Sub Form_Unload(Cancel As Integer)
Dim DANHSACHHOCSINH As Recordset
Dim TT As Integer

Set DANHSACHHOCSINH = Me.RecordsetClone
TT = 1
DANHSACHHOCSINH.MoveFirst
Do While Not DANHSACHHOCSINH.EOF
DANHSACHHOCSINH.Edit
DANHSACHHOCSINH![SOTHUTU] = TT
TT = TT + 1
DANHSACHHOCSINH.Update
DANHSACHHOCSINH.MoveNext
Loop
DANHSACHHOCSINH.Close

End Sub

Khi nào Close form SOTHUTU sẽ được tạo lại liên tục dù có record bị xóa
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#17
Chào cả nhà !
1. Tiên cũng đã làm theo cách tương tự "tranthanhan1962". Tạo mã tự động theo 1 quy luật nào đó bất kể miễn không trùng mã.
2. Khi cần hiển thị theo Stt thì tạo Stt, có thể tạo Stt trong Query (Như bài A.Noname đã hướng dẫn trên diễn đàn) hoặc tạo bằng Code như "tranthanhan1962".

Theo Tiên thì nên tạo Stt trong Query thuận tiện hơn, nếu tạo code như "tranthanhan1962" thì đối với table có số record ít chứ với table có số lượng record nhiều nhiều thì tốn nhiều thời gian nhâm nhi coffee.
Như thế đỡ phải đau cái đầu về việc quản lý mã có liên tục hay ko liên tục.
Thân chào !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#18
Đồng ý với bạn Minh Tiên. Thông thường STT khi nào xuất ra Report mình mới tạo 1 textbox sử dụng thuộc tính data running sun cho nó sắp xếp chứ không tạo field STT cho nặng nề. Còn ở Form chỉ cần tạo 1 textbox = CurrentRecord và 1 textbox = RecordCount cho nó nhẹ nhàng. Còn code làm STT nêu trên mình chỉ làm khi cần thiết làm tham số xử lý này nọ cho nó nhẹ hơn khi sử dụng mã làm tham số. Bởi vì bản thân nó cũng gần giống mã vì STT này cũng không trùng. Vã lại code này được xử lý khi close Form nên sự chờ đợi cũng không đáng là bao.
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (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,043 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,693 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 376 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 554 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,261 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ơ