pherotao > 21-12-17, 11:07 PM
Dim DB As DAO.Database
Dim rs As DAO.Recordset
Dim tt As Integer
Private Sub Them_Click()
On Error GoTo Err_Them_Click
DoCmd.GoToRecord , , acNewRec
Set DB = CurrentDb()
Set rs = DB.OpenRecordset("T_NhanVien", dbOpenDynaset)
tt = DCount("MaNV", "T_NhanVien")
For i = 1 To tt
rs.Edit
rs!MaNV = "NV" & Right("00000" & i, 5)
rs.Update
rs.MoveNext
Next
rs.Close
DB.Close
Exit_Them_Click:
Exit Sub
Err_Them_Click:
MsgBox Err.Description
Resume Exit_Them_Click
End Sub
ongke0711 > 22-12-17, 09:36 AM
cpucloi > 22-12-17, 10:50 AM
pherotao > 22-12-17, 12:51 PM
(22-12-17, 09:36 AM)ongke0711 Đã viết: Bạn diễn giải thử từng dòng code bên trên của bạn xem bạn hiểu như thế nào nhé. Bắt đầu từ dòng Set rs = DB....
ongke0711 > 22-12-17, 01:04 PM
(22-12-17, 12:51 PM)pherotao Đã viết: ...
Set DB = CurrentDb() 'Lấy (gán) CSDL hiện hành
Set rs = DB.OpenRecordset("T_NhanVien", dbOpenDynaset) 'Mở một đối tượng kiểu Dynaset ( tham chiếu đến recordset T_NhanVien)
tt = DCount("MaNV", "T_NhanVien") 'Đếm Mã Nhân Viên
For i = 1 To tt 'Cho i chạy từ 1 đến tt
..
duynamvnn1208 > 22-12-17, 01:17 PM
pherotao > 22-12-17, 11:09 PM
(22-12-17, 01:04 PM)ongke0711 Đã viết:(22-12-17, 12:51 PM)pherotao Đã viết: ...
Set DB = CurrentDb() 'Lấy (gán) CSDL hiện hành
Set rs = DB.OpenRecordset("T_NhanVien", dbOpenDynaset) 'Mở một đối tượng kiểu Dynaset ( tham chiếu đến recordset T_NhanVien)
tt = DCount("MaNV", "T_NhanVien") 'Đếm Mã Nhân Viên
For i = 1 To tt 'Cho i chạy từ 1 đến tt
..
Nói bạn diễn giải để xem bạn có hiểu code nó chạy như thế nào chứ đâu kêu bạn dịch ra tiếng Việt vòng lặp... . Khi bạn hiểu cách code chạy sẽ tự thấy ra cái sai của code so với trường hợp của bạn.
- Đếm table T_NhanVien để xem đang có bao nhiêu NV, lấy số tổng. Sau đó duyệt toàn bộ T_NhanVien từ dòng đầu tiên...
Dim DB As DAO.Database
Dim rs As DAO.Recordset
Dim tt As Integer
Private Sub Them_Click()
On Error Resume Next
DoCmd.Requery
Set DB = CurrentDb()
Set rs = DB.OpenRecordset("T_NhanVien", dbOpenDynaset)
tt = DCount("MaNV", "T_NhanVien")
For i = 1 To tt
rs.Edit
rs!MaNV = "GD" & Right("00000" & i, 5)
rs.Update
rs.MoveNext
Next
rs.Close
DB.Close
Ghi.Visible = False
Khong.Visible = False
DoCmd.GoToControl "Them"
End Sub
Dim DB As DAO.Database
Dim rs As DAO.Recordset
Dim tt As Integer
Private Sub Them_Click()
On Error Resume Next
DoCmd.Requery
Set DB = CurrentDb()
Set rs = DB.OpenRecordset("T_NhanVien", dbOpenDynaset)
tt = DCount("MaNV", "T_NhanVien")
For i = 1 To tt
rs.Edit
rs!MaNV = "VA" & Right("00000" & i, 5)
rs.Update
rs.MoveNext
Next
rs.Close
DB.Close
Ghi.Visible = False
Khong.Visible = False
DoCmd.GoToControl "Them"
End Sub
maidinhdan > 23-12-17, 02:03 AM
Private Sub Them_Click()
Dim rs As DAO.Recordset
Dim i As Integer
Set rs = CurrentDb.OpenRecordset("Select MaNV from T_NhanVien")
With rs
If .EOF = False Then
.MoveFirst
i = 0
Do Until .EOF
i = i + 1
.Edit
.Fields("MaNV") = Format(i, "VA00000")
.Update
.MoveNext
Loop
Ghi.Visible = False
Khong.Visible = False
DoCmd.GoToControl "Them"
End If
.Close
End With
Set rs = Nothing
End Sub
ongke0711 > 23-12-17, 07:35 PM
(22-12-17, 11:09 PM)pherotao Đã viết: Chỗ dòng: rs!MaNV = "VA" & Right("00000" & i, 5) e chỉ sửa lại chữ "GD" thành "VA" mà nó không chịu chạy (DATA_2017). Nhưng nếu e sủa lại là "GD" thì nó chạy ok.
E thật lòng không hiểu tại sao.
pherotao > 24-12-17, 02:00 AM