nam8384 > 17-03-16, 05:46 PM
ongke0711 > 18-03-16, 12:31 AM
Private Sub chkChonTatCa_Click()
Dim rs As DAO.Recordset
Set rs = Me.Tên subform.Form.RecordsetClone
If rs.RecordCount > 0 Then
rs.MoveFirst
End If
Do While Not rs.EOF
rs.Edit
If rs![Chon] = True Then
rs![Chon] = False
Else
rs![Chon] = True
End If
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Sub
nam8384 > 18-03-16, 09:46 AM
(18-03-16, 12:31 AM)ongke0711 Đã viết: Không có file mẫu database của bạn nên không biết form tìm kiếm của bạn là lọc = câu lệnh SQL và thay thế Record source của form bằng câu lệnh SQL hay cách khác.
Tôi cũng chỉ gợi ý code như sau: (áp dụng cho form có Record source = câu lệnh SQL).
- Tạo 1 check box "Chọn tất cả" có name là: chkChonTatCa
- Giả sử cái table bạn lọc ra kết quả có 1 trường là [Chọn] - kiểu True/False như trên form của bạn.
- Code như sau:
Mã PHP:Private Sub chkChonTatCa_Click()
Dim rs As DAO.Recordset
Set rs = Me.Tên subform.Form.RecordsetClone
If rs.RecordCount > 0 Then
rs.MoveFirst
End If
Do While Not rs.EOF
rs.Edit
If rs![Chon] = True Then
rs![Chon] = False
Else
rs![Chon] = True
End If
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Sub
- Nếu dùng command button thì code cũng như trên và bạn thêm dòng code để đổi tên của nút lệnh khi click. (tên của nút lệnh trong mã VBA không sử dụng tiếng Việt có dấu được nhé).
Vd:
...
If rs![Chon] = True Then
rs![Chon] = False
Me.cmdSelectAll.Caption = "Deselect all"
Else
rs![Chon] = True
Me.cmdSelectAll.Caption = "Select all"
End If
...
nam8384 > 18-03-16, 10:42 AM
(18-03-16, 12:31 AM)ongke0711 Đã viết: Không có file mẫu database của bạn nên không biết form tìm kiếm của bạn là lọc = câu lệnh SQL và thay thế Record source của form bằng câu lệnh SQL hay cách khác.
Tôi cũng chỉ gợi ý code như sau: (áp dụng cho form có Record source = câu lệnh SQL).
- Tạo 1 check box "Chọn tất cả" có name là: chkChonTatCa
- Giả sử cái table bạn lọc ra kết quả có 1 trường là [Chọn] - kiểu True/False như trên form của bạn.
- Code như sau:
Mã PHP:Private Sub chkChonTatCa_Click()
Dim rs As DAO.Recordset
Set rs = Me.Tên subform.Form.RecordsetClone
If rs.RecordCount > 0 Then
rs.MoveFirst
End If
Do While Not rs.EOF
rs.Edit
If rs![Chon] = True Then
rs![Chon] = False
Else
rs![Chon] = True
End If
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Sub
- Nếu dùng command button thì code cũng như trên và bạn thêm dòng code để đổi tên của nút lệnh khi click. (tên của nút lệnh trong mã VBA không sử dụng tiếng Việt có dấu được nhé).
Vd:
...
If rs![Chon] = True Then
rs![Chon] = False
Me.cmdSelectAll.Caption = "Deselect all"
Else
rs![Chon] = True
Me.cmdSelectAll.Caption = "Select all"
End If
...
paulsteigel > 18-03-16, 02:51 PM
SELECT * FROM [bangtong] WHERE [noidung] like '*bằng*';
SqlTxt="UPDATE [bangtong] SET [chon]=True WHERE [noidung] LIKE '*bằng*';"
CurrentDb.Execute SqlTxt
Private Sub Command46_Click()
Dim SqlTxt As String
SqlTxt = "UPDATE [bangtong] SET [chon]=True WHERE [noidung] LIKE '*" & txtFindAsUTypeValue & "*';"
CurrentDb.Execute SqlTxt
End Sub
nam8384 > 18-03-16, 04:26 PM
(18-03-16, 02:51 PM)paulsteigel Đã viết: Điều đó không có gì khó cả, bạn nên dùng SQL dạng UPDATE. Tuy nhiên, cần lưu ý trả lời câu hỏi sau đây:Thanks bác, em làm được rồi. Trong filed "nội dung" thì ok, còn nếu em muốn check trong filed "ID" hay "tên"...
+ Bạn chọn để thực hiện việc nào đó (ví dụ in ra các phiếu có chữ "Bằng"): Nếu là như vậy thì không cần và hãy xem một đoạn SQL như sau:
Và khi cần in ra bạn chỉ cần truyền cho báo cáo cái chuỗi SQL kia là xongMã:SELECT * FROM [bangtong] WHERE [noidung] like '*bằng*';
+ Bạn muốn cập nhập thông tin vào Bảng để đánh dấu việc gì đó...
Vậy thì có nhiều cách nhưng đơn giản nhất là dùng SQL UPDATE. Cú pháp là
và thực thi nó bằng cách sauMã:SqlTxt="UPDATE [bangtong] SET [chon]=True WHERE [noidung] LIKE '*bằng*';"
Mã:CurrentDb.Execute SqlTxt
Các bước làm như sau:
1. Nút tìm kiếm
2. Nút chọn tất
Mã nút chọn tất cả như sau:
Mã:Private Sub Command46_Click()
Dim SqlTxt As String
SqlTxt = "UPDATE [bangtong] SET [chon]=True WHERE [noidung] LIKE '*" & txtFindAsUTypeValue & "*';"
CurrentDb.Execute SqlTxt
End Sub
Thân...
paulsteigel > 18-03-16, 04:40 PM
(18-03-16, 04:26 PM)nam8384 Đã viết: .....
Thanks bác, em làm được rồi. Trong filed "nội dung" thì ok, còn nếu em muốn check trong filed "ID" hay "tên"...
nói chung là với tất cả các field thì em phải bổ sung code vào như thế nào ah
nam8384 > 18-03-16, 06:34 PM
(18-03-16, 04:40 PM)paulsteigel Đã viết:(18-03-16, 04:26 PM)nam8384 Đã viết: .....
Thanks bác, em làm được rồi. Trong filed "nội dung" thì ok, còn nếu em muốn check trong filed "ID" hay "tên"...
nói chung là với tất cả các field thì em phải bổ sung code vào như thế nào ah
Câu hỏi của em không rõ ràng...
Một là em dùng tiếng Anh loạn xạ làm cho người trả lời không hiểu được.
1. Trường hợp 1: Check có nghĩa là đánh dấu tức là bấm vào cái ô vuông ở cột Chọn nó sẽ chuyển trạng thái từ không chọn sang chọn với dấu hình chữ V và ngược lại;
2. Trường hợp 2: Check có nghĩa là kiểm tra.
Em hãy đọc lại câu hỏi của mình trước xem có gây hiểu lầm không đã!
Mình không trả lời câu hỏi này cho đến khi bạn làm rõ ý định của mình.
(vì với câu hỏi trước thì đã được giải đáp bằng bài vừa rồi của mình đấy).
Thân
paulsteigel > 18-03-16, 09:53 PM
(18-03-16, 06:34 PM)nam8384 Đã viết: Ý của em là khi lọc ra kết quả có bao nhiêu record thì phần mềm tự động tick vào ô vuông của cột "chọn", không phải mất công tick thủ công vào từng ôCâu trả lời của mình có rồi đấy!
Private Sub Command46_Click()
Dim SqlTxt As String
SqlTxt = "UPDATE [bangtong] SET [chon]=True WHERE [noidung] LIKE '*" & txtFindAsUTypeValue & "*';"
CurrentDb.Execute SqlTxt
End Sub