जॉनएफएक्स द्वारा प्रदान किया गया कोड अच्छी तरह से काम करता है। मैं इसे एक टाइमर के बिना इस तरह से लागू किया (एमएस एक्सेस 2003):
1- फार्म की कुंजी पूर्वावलोकन सेट हाँ
2- एक समारोह में कोड डालने के लिए
3 समारोह कॉल करने के लिए घटना onkeyup और OnMouseUp सेट ।
Option Compare Database
Option Explicit
Dim rowSelected() As String
Private Sub Form_Load()
'initialize array
ReDim rowSelected(0, 2)
End Sub
Private Sub Form_Current()
' if cursor place on a different record after a selection was made
' the selection is no longer valid
If "" <> rowSelected(0, 2) Then
If Me.Recordset.AbsolutePosition <> rowSelected(0, 2) Then
rowSelected(0, 0) = ""
rowSelected(0, 1) = ""
rowSelected(0, 2) = ""
End If
End If
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
rowsSelected
If KeyCode = vbKeyDelete And Me.SelHeight > 0 Then
removeRows
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
rowsSelected
End Sub
Sub rowsSelected()
Dim i As Long, rs As DAO.Recordset, selH As Long, selT As Long
selH = Me.SelHeight
selT = Me.SelTop - 1
If selH = 0 Then
ReDim rowSelected(0, 2)
Exit Sub
Else
ReDim rowSelected(selH, 2)
rowSelected(0, 0) = selT
rowSelected(0, 1) = selH
rowSelected(0, 2) = Me.Recordset.AbsolutePosition ' for repositioning
Set rs = Me.RecordsetClone
rs.MoveFirst ' other key touched caused the pointer to shift
rs.Move selT
For i = 1 To selH
rowSelected(i, 0) = rs!PositionNumber
rowSelected(i, 1) = Nz(rs!CurrentMbr)
rowSelected(i, 2) = Nz(rs!FutureMbr)
rs.MoveNext
Next
Set rs = Nothing
Debug.Print selH & " rows selected starting at " & selT
End If
End Sub
Sub removeRows()
' remove rows in underlying table using collected criteria in rowSelected()
Me.Requery
' reposition cursor
End Sub
Private Sub cmdRemRows_Click()
If Val(rowSelected(0, 1)) > 0 Then
removeRows
Else
MsgBox "To remove row(s) select one or more sequential records using the record selector on the left side."
End If
End Sub
स्रोत
2017-07-14 13:31:06
आश्चर्यजनक ... यही कारण है कि मैं 0 पर सेल्हेइट प्राप्त कर रहा था ... बहुत बहुत धन्यवाद, मैं इसे तुरंत कोशिश करूँगा और अगर यह काम करता है तो आपका जवाब स्वीकार करें! – karlipoppins
हम्म इसे काम नहीं कर सकता ... एक्सेस 2007 के साथ , selheight 0 पर रहता है ... – karlipoppins
यह चाल फोकस खोने से पहले मूल्य को पकड़ रही है। आप किस घटना में सेल्हेइट वैल्यू को पकड़ रहे हैं? क्या आपने इसे सबफ़ॉर्म में टाइमर में आज़माया? तत्काल मूल्य को जांचने का प्रयास करें विंडो (ctrl-g) और देखें कि समस्या फोकस खोने के बाद चयन रीसेटिंग है या नहीं। – JohnFx