Xuân Thanh > 09-02-20, 09:25 AM
(09-02-20, 08:29 AM)tracanhtam Đã viết: Cám ơn bạn ongke0711 rất nhiều, tôi đã chạy được code như bạn hướng dẫn. Còn cột tuần là cố định theo năm từ 1 đến 37, vậy nếu muốn đánh số từ 1 đến 37 bằng code trên access thì làm thế nào vậy bạn, xin cám ơn (Table gồm Tuannamhoc(khóa chính),tungay,denngay)
Sub TaoLichTuan()
Dim i As Integer, Ngay As Date
Dim NamHoc As DAO.Recordset
Dim Tuan As DAO.Recordset
Set NamHoc = CurrentDb.OpenRecordset("tblNamHoc", dbOpenDynaset)
Set Tuan = CurrentDb.OpenRecordset("tblTuanNamHoc", dbOpenDynaset)
If Tuan.RecordCount > 0 Then CurrentDb.Execute "Delete From tblTuanNamHoc"
If NamHoc!NgayKhaiGiang = "" Then
MsgBox "Chua nhap ngay khai giang"
Exit Sub
Else
Ngay = NamHoc!NgayKhaiGiang
End If
For i = 1 To 37
Tuan.AddNew
Tuan!TuanNamHoc = i
If i = 1 Then Tuan!NgayDauTuan = Ngay Else Tuan!NgayDauTuan = Ngay + (i - 1) * 7
Tuan!NgayCuoiTuan = Tuan!NgayDauTuan + 5
Tuan.Update
Next
End Sub
ongke0711 > 09-02-20, 10:21 AM
(09-02-20, 09:25 AM)Xuân Thanh Đã viết:Mã PHP:Sub TaoLichTuan()
Dim i As Integer, Ngay As Date
Dim NamHoc As DAO.Recordset
Dim Tuan As DAO.Recordset
Set NamHoc = CurrentDb.OpenRecordset("tblNamHoc", dbOpenDynaset)
Set Tuan = CurrentDb.OpenRecordset("tblTuanNamHoc", dbOpenDynaset)
If Tuan.RecordCount > 0 Then CurrentDb.Execute "Delete From tblTuanNamHoc"
If NamHoc!NgayKhaiGiang = "" Then
MsgBox "Chua nhap ngay khai giang"
Exit Sub
Else
Ngay = NamHoc!NgayKhaiGiang
End If
For i = 1 To 37
Tuan.AddNew
Tuan!TuanNamHoc = i
If i = 1 Then Tuan!NgayDauTuan = Ngay Else Tuan!NgayDauTuan = Ngay + (i - 1) * 7
Tuan!NgayCuoiTuan = Tuan!NgayDauTuan + 5
Tuan.Update
Next
End Sub
tracanhtam > 09-02-20, 10:42 AM
(09-02-20, 10:21 AM)ongke0711 Đã viết:Bạn ongke0711 nói rất đúng ý của tôi, cách làm của bạn Xuân Thanh rất hay, chỉ 1 cái clich chuột. Nhưng nếu các tuần nó không liên tục, tôi muốn nhập từ tuần a đến tuần b, ví dụ : 1->18,19->21, 22 đến 37. Rất cám ơn mọi người đã giúp đở.(09-02-20, 09:25 AM)Xuân Thanh Đã viết:Mã PHP:Sub TaoLichTuan()
Dim i As Integer, Ngay As Date
Dim NamHoc As DAO.Recordset
Dim Tuan As DAO.Recordset
Set NamHoc = CurrentDb.OpenRecordset("tblNamHoc", dbOpenDynaset)
Set Tuan = CurrentDb.OpenRecordset("tblTuanNamHoc", dbOpenDynaset)
If Tuan.RecordCount > 0 Then CurrentDb.Execute "Delete From tblTuanNamHoc"
If NamHoc!NgayKhaiGiang = "" Then
MsgBox "Chua nhap ngay khai giang"
Exit Sub
Else
Ngay = NamHoc!NgayKhaiGiang
End If
For i = 1 To 37
Tuan.AddNew
Tuan!TuanNamHoc = i
If i = 1 Then Tuan!NgayDauTuan = Ngay Else Tuan!NgayDauTuan = Ngay + (i - 1) * 7
Tuan!NgayCuoiTuan = Tuan!NgayDauTuan + 5
Tuan.Update
Next
End Sub
Tôi nghĩ code của bác Xuân Thanh chưa đáp ứng đúng yêu cầu của chủ thớt đâu. Vì số tuần 1 -37 là liền mạch nhưng trong đó sẽ có đoạn [Từ Ngày] [Đến Ngày] sẽ bị nhảy cóc, không liền mạch. Phải loại bỏ những ngày được nghỉ ra rồi tạo tuần.
Xuân Thanh > 09-02-20, 10:54 AM
(09-02-20, 08:29 AM)tracanhtam Đã viết: Cám ơn bạn ongke0711 rất nhiều, tôi đã chạy được code như bạn hướng dẫn. Còn cột tuần là cố định theo năm từ 1 đến 37, vậy nếu muốn thêm số tuần từ 1 đến 37 (37 record cho cột tuần) bằng code trên access thì làm thế nào vậy bạn, xin cám ơn (Table gồm Tuannamhoc(khóa chính),tungay,denngay)
ongke0711 > 09-02-20, 02:23 PM
Xuân Thanh > 09-02-20, 03:48 PM
(09-02-20, 02:23 PM)ongke0711 Đã viết: Bạn xem file demo này.
Link: http://www.mediafire.com/file/lb2sjh64xp...accdb/file
- Bạn phải cập nhật ngay từ đầu các tuần nghỉ học vào table "tblNgayNghiLe" khi qua năm học mới.
- Các tuần nghỉ phải là chẳn tuần thì code mới chạy đúng. Tức là nghỉ nguyên tuần chứ không nghĩ lẻ mấy ngày giữa tuần.
Bạn test các trường hợp xem có chạy đúng không.
@XuanThanh: có thể bạn chủ thớt muốn tạo sẳn table Tuần học theo qui ước riêng để dễ xử lý hơn cho các truy vấn sau đó chứ thực ra dùng thẳng luôn số tuần của hệ thống cũng được nhưng cách tổ chức xử lý dữ liệu phải khác đi mà bạn chủ thớt chưa làm được.
tracanhtam > 09-02-20, 05:23 PM
(09-02-20, 02:23 PM)ongke0711 Đã viết: Bạn xem file demo này.Cám ơn bạn ongke0711 rất nhiều, cách làm của bạn rất hay, tôi đã test thấy đúng hết. Nhưng nếu xảy ra trường hợp có 1 tuần nào đó mà nghỉ không trọn 1 tuần thì mình nhập thủ công cho tuần đó, vậy sang tuần sau nữa nó trở lại như cũ thì mình có giải quyết được không, xin cám ơn.
Link: http://www.mediafire.com/file/lb2sjh64xp...accdb/file
- Bạn phải cập nhật ngay từ đầu các tuần nghỉ học vào table "tblNgayNghiLe" khi qua năm học mới.
- Các tuần nghỉ phải là chẳn tuần thì code mới chạy đúng. Tức là nghỉ nguyên tuần chứ không nghĩ lẻ mấy ngày giữa tuần.
Bạn test các trường hợp xem có chạy đúng không.
@XuanThanh: có thể bạn chủ thớt muốn tạo sẳn table Tuần học theo qui ước riêng để dễ xử lý hơn cho các truy vấn sau đó chứ thực ra dùng thẳng luôn số tuần của hệ thống cũng được nhưng cách tổ chức xử lý dữ liệu phải khác đi mà bạn chủ thớt chưa làm được.
ongke0711 > 09-02-20, 05:33 PM
(09-02-20, 05:23 PM)tracanhtam Đã viết: Cám ơn bạn ongke0711 rất nhiều, cách làm của bạn rất hay, tôi đã test thấy đúng hết. Nhưng nếu xảy ra trường hợp có 1 tuần nào đó mà nghỉ không trọn 1 tuần thì mình nhập thủ công cho tuần đó, vậy sang tuần sau nữa nó trở lại như cũ thì mình có giải quyết được không, xin cám ơn.
Xuân Thanh > 09-02-20, 06:53 PM
(09-02-20, 05:23 PM)tracanhtam Đã viết: Cám ơn bạn ongke0711 rất nhiều, cách làm của bạn rất hay, tôi đã test thấy đúng hết. Nhưng nếu xảy ra trường hợp có 1 tuần nào đó mà nghỉ không trọn 1 tuần thì mình nhập thủ công cho tuần đó, vậy sang tuần sau nữa nó trở lại như cũ thì mình có giải quyết được không, xin cám ơn.
tracanhtam > 09-02-20, 11:54 PM
(09-02-20, 05:33 PM)ongke0711 Đã viết:1/ Bạn xem file này có những tình huống không trọn một tuần(09-02-20, 05:23 PM)tracanhtam Đã viết: Cám ơn bạn ongke0711 rất nhiều, cách làm của bạn rất hay, tôi đã test thấy đúng hết. Nhưng nếu xảy ra trường hợp có 1 tuần nào đó mà nghỉ không trọn 1 tuần thì mình nhập thủ công cho tuần đó, vậy sang tuần sau nữa nó trở lại như cũ thì mình có giải quyết được không, xin cám ơn.
Bạn nên đưa ra (dự kiến trước) tất cả các trường hợp có thể phát sinh, dùng file Excel cũng được.
Liệt kê từng trường hợp một với ví dụ mình hoạ.