Mình xin được giới thiệu bổ sung về biện pháp của bạn "Grasses" nhé!
Bạn khuenguyen.tran có đề cập như thế này "Mình thấy đâu cần Module tăng mã hả bạn ? Vì nó là Autonumber nên tự động tăng mà, bạn có thể giải thích rõ hơn không ? Nếu được, bạn gởi cho mình với, bạn gởi vào
khuenguyen.tran@gmail.com nhé, cám ơn bạn nhiều"
Trường kiểu Autonumber là trường đánh số tăng tự động kiểu số vì thế bạn không thể đưa kiểu khoá NK0001 tự động tăng được, nếu muốn làm thế bạn chỉ có 2 cách:
1. Vẫn để trường là kiểu autonumber song khi truy xuất xử lý dữ liệu bạn dùng đến các lệnh format để gắn thêm chuỗi NK vào dữ liệu đầu ra, kiểu này đôi lúc cũng phức tạp lắm vì bạn có thể vô tình quên mất ở đâu đó thủ tục xử lý dữ liệu.
2. Bạn thiết lập trường kiểu ký tự với độ dài tối đa phải được tính trước (ví dụ là 10 thì sẽ hiển thị được số có 8 chữ số và cụm NK). Với cách này thì không thể tự động đánh số được mà bạn phải thiết kế thuật toán để thực hiện việc tăng dần số đếm.
Đại loại thuật toán đó phải làm việc dạng như thế này:
+ Tìm số cực đại có trong CSDL - để làm việc naỳ bạn cần dùng đến hàm Mid để lấy phần số của chuỗi và hàm val để đổi chuỗi thành số
Ví dụ chuỗi là NK00123 thì dùng hàm như sau mid("NK00123,2) kết quả nhận được là 123.
Để tìm số cực đại, bạn có thể dùng truy vấn SQL. ví dụ
Select Max(Mid([KeyField],2)) from [Tenbang];
Với câu truy vấn trên bạn hãy dự đoán các kết quả có thể xảy ra nhé - quan trọng lắm đấy - vì nếu không có thể có lỗi.
Bạn có thể thử viết thủ tục và kiểm tra xem.
+ Sau khi lấy được số cực đại, bạn có thể tự động gán thêm 1 để tăng thêm vào kết quả và tiếp tục dùng hàm format để gắn thêm giá trị cho chuỗi kết quả. ví dụ
Dim MyKey as long, RetStr as string
MyKey=1
RetStr="NK" & format(Mykey,"000000")
(Kết quả sẽ là NK000001)
Bạn hãy thử tự mình viết đoạn chương trình trên xem nào.