AnNguyen > 29-10-20, 06:29 PM
ongke0711 > 30-10-20, 12:29 AM
Option Explicit
Private mlngSelTop As Long 'Vi tri Record duoc chon dau tien'
Private mlngSelheight As Long 'Vi tri Record cuoi trong danh sach chon'
Public Function DeleteIDList() As String
'# Hàm dùng de lay danh sach cac records duoc chon trong Subform dang DataSheet hoac Continuous Form.'
'# Phai ket hop voi event Subform_Exit de lay vi tri record dau (SelTop) và cuôi (Selheight) cua danh chon chon,'
' vì khi thoat khoi Subform thì vùng chon cung bien mat'
Dim rs As DAO.Recordset
Dim frm As Access.Form
Dim strX As String
Dim i As Long
Set frm = Me.sfmSYLL.Form
Set rs = frm.RecordsetClone
If mlngSelheight = 0 Then Exit Function 'Subform không focus -> không xu ly'
rs.MoveFirst
rs.Move mlngSelTop - 1 'Di chuyen den Record duoc chon dau tien'
For i = 1 To mlngSelheight
strX = strX & rs![Ten] & ", "
rs.MoveNext
Next i
strX = Left$(strX, Len(strX) - 2)
DeleteIDList = strX
MsgBox strX
End Function
Private Sub sfmSYLL_Exit(Cancel As Integer)
With sfmSYLL.Form
mlngSelheight = .SelHeight
mlngSelTop = .SelTop
End With
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then
KeyCode = 0
Me.Parent.Text3.SetFocus
Call Forms("frmMain").DeleteIDList
End If
End Sub
AnNguyen > 30-10-20, 10:21 AM
(30-10-20, 12:29 AM)ongke0711 Đã viết: Đối với việc hiện thị ID (tạm gọi) của các dòng được chọn trong Subform thì dùng 2 phương thức của Form là:
- SelTop: vị trí record đầu tiên của vùng chọn
- SelHeight: Vị trí cuối cùng của vùng chọn
Cách làm này chỉ áp dụng đối với việc chọn các dòng liên tiếp nhau thì được, nếu chọn dòng cách khoảng thì tôi phải dùng thêm cột phụ dạng Yes/No trong Table để xác định dòng được chọn.
Dưới đây là tôi demo cho bạn cách 1. Code như sau.
- Code trong Main Form:
Mã PHP:Option Explicit
Private mlngSelTop As Long 'Vi tri Record duoc chon dau tien'
Private mlngSelheight As Long 'Vi tri Record cuoi trong danh sach chon'
Public Function DeleteIDList() As String
'# Hàm dùng de lay danh sach cac records duoc chon trong Subform dang DataSheet hoac Continuous Form.'
'# Phai ket hop voi event Subform_Exit de lay vi tri record dau (SelTop) và cuôi (Selheight) cua danh chon chon,'
' vì khi thoat khoi Subform thì vùng chon cung bien mat'
Dim rs As DAO.Recordset
Dim frm As Access.Form
Dim strX As String
Dim i As Long
Set frm = Me.sfmSYLL.Form
Set rs = frm.RecordsetClone
If mlngSelheight = 0 Then Exit Function 'Subform không focus -> không xu ly'
rs.MoveFirst
rs.Move mlngSelTop - 1 'Di chuyen den Record duoc chon dau tien'
For i = 1 To mlngSelheight
strX = strX & rs![Ten] & ", "
rs.MoveNext
Next i
strX = Left$(strX, Len(strX) - 2)
DeleteIDList = strX
MsgBox strX
End Function
Private Sub sfmSYLL_Exit(Cancel As Integer)
With sfmSYLL.Form
mlngSelheight = .SelHeight
mlngSelTop = .SelTop
End With
End Sub
- Code trong Subform: để bắt sự kiện bấm nút "Delete". Trong code này tôi có thiết lập SetFocus vào một Textbox khác trên Main form để kích hoạt sự kiện On Exit của Subform. Bạn có thể thiết lập focus vô bất cứ Control nào trên Main form.
Mã PHP:Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then
KeyCode = 0
Me.Parent.Text3.SetFocus
Call Forms("frmMain").DeleteIDList
End If
End Sub
Link file: http://www.mediafire.com/file/u7cnx5rsb9...accdb/file