-
Tạo mã số
thanhquyt > 13-09-15, 04:16 PM
Hi mọi người
Mình có 1 table có 2 trường.
id : autonumber
maso : number
Sau khi lưu thi maso= ngay+thang+nam+id+1.Nhưng có 1 lỗi ở đây là hôm nay là ngày 12 mình tạo ra 5 record có maso 12920151 - 12920155. Ngày 13 tạo thêm 1 record nữa thì ma so tự động chuyển thành 13920151-13920156.Ai biết cách khi đã lưu thì nó sẽ ko thay đổi ngày tháng năm nữa giúp mình với
Mã:Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim st As String
Dim i As Integer
i = 1
Set db = CurrentDb
Set rs = db.OpenRecordset("Table1", dbOpenDynaset)
rs.MoveFirst
Do While Not rs.EOF
st = ""
st = st & Day(Now) & Month(Now) & Year(Now) & i
rs.Edit
rs!maso = CLng(st)
rs.Update
i = i + 1
rs.MoveNext
Loop
Set rs = Nothing -
RE: Tạo mã số
ongke0711 > 13-09-15, 05:19 PM
Cái code của bạn là đi về dòng đầu tiên (rs.movefirst) của table 1 rồi update maso thì nó update lại hết toàn bộ các record cũ rồi còn gì.
Bạn chỉ cần update nhưng dòng nào mà cột maso là Null thôi.
strSQL="SELECT * FORM Table1 WHERE maso is null;"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
Nhưng tôi có thắc mắc về cách Lưu record của bạn. Bạn nhập tất cả các dòng rồi tạo mã số 1 lần hay sao? Tại sao không tạo dòng nào rồi update maso cho đúng dòng đó thôi?
Sau khi cột ngày, cột stt được cập nhật thì tạo maso cho cột maso luôn.
Private sub Ngay_AfterUpdate
Me.maso=Format (Me.Ngay,"ddmmyyy") & Me.stt
End sub -
RE: Tạo mã số
tranthanhan1962 > 13-09-15, 07:17 PM
Do bạn không có điều kiện nên mỗi lần xử lý là vòng lập nó phang lệnh Edit từ trên xuống dưới không quan tâm là dữ liệu của bạn có hay chưa. Bạn chỉ cần thêm điều kiện để nó né các record đã tạo mã ra.
Mã PHP:Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim st As String
Dim i As Integer
i = 1
Set db = CurrentDb
Set rs = db.OpenRecordset("Table1", dbOpenDynaset)
rs.MoveFirst
Do While Not rs.EOF
st = ""
st = st & Day(Now) & Month(Now) & Year(Now) & i
If IsNull(rs!maso) Or rs!maso = "" Then
rs.Edit
rs!maso = CLng(st)
rs.Update
rs.MoveNext
Else
rs.MoveNext
End If
i = i + 1
Loop
Set rs = Nothing -
RE: Tạo mã số
thanhquyt > 13-09-15, 07:27 PM
(13-09-15, 05:19 PM)ongke0711 Đã viết: Cái code của bạn là đi về dòng đầu tiên (rs.movefirst) của table 1 rồi update maso thì nó update lại hết toàn bộ các record cũ rồi còn gì.
Bạn chỉ cần update nhưng dòng nào mà cột maso là Null thôi.
strSQL="SELECT * FORM Table1 WHERE maso is null;"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
Nhưng tôi có thắc mắc về cách Lưu record của bạn. Bạn nhập tất cả các dòng rồi tạo mã số 1 lần hay sao? Tại sao không tạo dòng nào rồi update maso cho đúng dòng đó thôi?
Sau khi cột ngày, cột stt được cập nhật thì tạo maso cho cột maso luôn.
Private sub Ngay_AfterUpdate
Me.maso=Format (Me.Ngay,"ddmmyyy") & Me.stt
End sub
Mã số từng dòng đó bạn