-
Sinh maso tự động trên form
thanhquyt > 25-08-15, 09:48 PM
Chào mọi người
Mình có 1 table.chứa 2 trường ID là autonumber và trường maso là number.
Mình muốn khi nhập dữ liệu trên form thì maso tự sinh ra lấy ngày tháng năm hiện tại.
vd: ngày 19 tháng 8 năm 2015 thì sẽ là :1982015001. 001 sẽ tự động tăng khi nhập dữ liệu vào form và sẽ tự động giảm khi xóa record
Ai demo giúp mình với
Thank -
RE: Sinh maso tự động trên form
maidinhdan > 26-08-15, 12:02 AM
Câu hỏi bạn cầm làm rõ vài vấn đề.
1. ID là autonumber để làm cái gì?
2. Tạo sao maso là number. chứ không phải là kiểu text? ví dụ nếu là ngày 01/01/2015 => theo ý bạn nó sẽ cho ra 112015.001 (10 ký tự) => số ký tự không thống nhất so với ý định của bạn trên là 1982015001. 001 (14 ký tự)
3. từ 001-999, vậy huốt 999 bạn có muốn lấy số 1000 hay không?
* Kết luận, cú pháp đưa ra không thống nhất, cần tìm cú pháp cho ra 1 số ổn định mới có thể viết code tự tăng lên.
Thân mến! -
RE: Sinh maso tự động trên form
thanhquyt > 26-08-15, 12:24 AM
Trước hết cảm ơn maidinhdan
Không cần trường id là autonumber.Mình chỉ cần trường maso là text như bạn nói.và maso sẽ tự động có dạng 112015.001 (10 ký tự).
Bạn code giúp mình được không -
RE: Sinh maso tự động trên form
maidinhdan > 26-08-15, 12:30 AM
Nếu bạn xác định như vậy cũng không ổn. Bài của bạn có 3 vế.
Vế 1: lấy ngày tháng năm, cái này tôi ok, không hỏi nửa: => 8 ký tự đầu.
Vế 2: là dấu chấm
Vế 3: bạn phải thống nhất là bao nhiêu ký tự, không lẽ bạn chỉ có 999 record. -
RE: Sinh maso tự động trên form
tranthanhan1962 > 26-08-15, 12:34 AM
(25-08-15, 09:48 PM)thanhquyt Đã viết: Chào mọi người
Mình có 1 table.chứa 2 trường ID là autonumber và trường maso là number.
Mình muốn khi nhập dữ liệu trên form thì maso tự sinh ra lấy ngày tháng năm hiện tại.
vd: ngày 19 tháng 8 năm 2015 thì sẽ là :1982015001. 001 sẽ tự động tăng khi nhập dữ liệu vào form và sẽ tự động giảm khi xóa record
Ai demo giúp mình với
Thank
Tại sao phải thêm trường auto number rồi cắt ra 001. Nếu như đến 999 rồi thì trở lại 000 hay 001. Tặng bạn một cách xử lý nhẹ nhàng:
=Format$(Now();"yyyymmddhhmmss").
Sẽ không có chuyện trùng từ giờ cho đến năm 12015
Còn nếu chương trình chỉ cần sử dụng từ nay đến năm 3014.
=Format$(Now();"yymmddhhmmss").
Còn nếu chắc chắn dữ liệu của bạn ít hơn 1000 record. Đồng thời sắp thứ tự sau mỗi lần xử lý khi thêm xóa thì viết code VBA hơi bị nhiều. post lên csdl mình sẽ xử lý cho. Mình thì không bao giờ đưa thứ tự vào primary keys cả. Muốn gì thì ra report sắp thứ tự thôi -
RE: Sinh maso tự động trên form
thanhquyt > 26-08-15, 12:34 AM
Vế 2: dấu chấm. nếu bạn code được thì càng tốt nếu phức tạp quá thì ko cần cũng được
Vế 3: thay vì 001 thành 0001. 9999 record như vậy là ok rồi -
RE: Sinh maso tự động trên form
thanhquyt > 26-08-15, 12:40 AM
(26-08-15, 12:34 AM)tranthanhan1962 Đã viết:
(25-08-15, 09:48 PM)thanhquyt Đã viết: Chào mọi người
Mình có 1 table.chứa 2 trường ID là autonumber và trường maso là number.
Mình muốn khi nhập dữ liệu trên form thì maso tự sinh ra lấy ngày tháng năm hiện tại.
vd: ngày 19 tháng 8 năm 2015 thì sẽ là :1982015001. 001 sẽ tự động tăng khi nhập dữ liệu vào form và sẽ tự động giảm khi xóa record
Ai demo giúp mình với
Thank
Tại sao phải thêm trường auto number rồi cắt ra 001. Nếu như đến 999 rồi thì trở lại 000 hay 001. Tặng bạn một cách xử lý nhẹ nhàng:
=Format$(Now();"yyyymmddhhmmss").
Sẽ không có chuyện trùng từ giờ cho đến năm 12015
Còn nếu chương trình chỉ cần sử dụng đến năm 3014.
=Format$(Now();"yymmddhhmmss").
Xin hỏi bạn vậy trườnng maso có tự động tao ra maso không. =Format$(Now();"yyyymmddhhmmss"). thì chèn nó ở đâu vậy -
RE: Sinh maso tự động trên form
tranthanhan1962 > 26-08-15, 01:06 AM
(26-08-15, 12:40 AM)thanhquyt Đã viết: Xin hỏi bạn vậy trườnng maso có tự động tao ra maso không. =Format$(Now();"yyyymmddhhmmss"). thì chèn nó ở đâu vậy
Ok. Trên record của bạn sẽ có các trường khác là record souce của textbox nào đó. Ví dụ hoten chẳng hạn.
Code như sau:
Mã PHP:Private Sub hoten_AfterUpdate()
If VarType(maso.Value) = 1 Then
maso.Value = Format$(Now(), "yyyymmddhhmmss")
End If
End Sub
Sử dụng If VarType(maso.Value) = 1 để xử lý khi mã số đã có rồi nó sẽ không tạo nữa. Nếu không mỗi lần bạn chỉnh sửa hoten nó sẽ tạo lại