Gustav Brock
gustav at cactus.dk
Sat Oct 25 03:59:21 CDT 2008
Hi Rocky
A.D is right, this may not be as simple as it seems.
If you mark records and push Delete, selection remains and you can read SelTop and SelHeight.
If you push a button, selection is lost as the focus moves.
However, a piece of code I played with years ago lets you keep the selection and reapply it:
<code>
Option Compare Database
Option Explicit
Dim lngSelTop As Long
Dim lngSelHeight As Long
Dim booCancelDelete As Boolean
Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
Cancel = booCancelDelete
End Sub
Private Sub Form_Current()
lngSelHeight = 0
Me!btnDelete.Enabled = False
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
lngSelTop = Me.SelTop
lngSelHeight = Me.SelHeight
Me!btnDelete.Enabled = True
End Sub
Private Sub btnDelete_Click()
If lngSelHeight > 0 Then
' Repaint selection of rows.
Me.SelTop = lngSelTop
Me.SelHeight = lngSelHeight
Call DeleteRecords
End If
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then
Call DeleteRecords
End If
End Sub
Private Sub DeleteRecords()
Dim strPrompt As String
strPrompt = "Delete record" & Str(lngSelTop) & _
IIf(lngSelHeight = 1, vbNullString, " to" & Str(lngSelTop + lngSelHeight - 1)) & "?"
If MsgBox(strPrompt, vbQuestion + vbOKCancel + vbDefaultButton2) = vbOK Then
' Delete record(s).
Else
booCancelDelete = True
End If
End Sub
</code>
Note that this does not count for selection of records with the navigation keys combos: Ctrl+Shift+PgUp and Ctrl+Shift+PgDn.
You would have to apply code for this as well. And fine tune as well - if you press Delete and cancel, selection remains as it should but the btnDelete stays disabled ...
Anyway, I'm sure you get the idea.
/gustav
>>> adtp at airtelmail.in 25-10-2008 08:27 >>>
Rocky,
Volatile nature of SelHeight property constitutes a typical hurdle faced in capturing the status of selected records on continuous form. This is because the erstwhile selection as well as the value of SelHeight is lost as soon you click a command button on the form.
Simplest course of action would be to use bound check box for selecting / de-selecting records.
If you wish to track the selection status without resorting to bound check box, my sample db named ContFormsKeyNavAndHighLightMultiSelect might be of interest to you. It is available at Rogers Access Library (other developers library). Link -
http://www.rogersaccesslibrary.com/forum/forum_topics.asp?FID=45
This db demonstrates identification of selected records on a continuous form. Selection of scattered non-contiguous blocks of records is also permitted. ID's of all records selected in current session are displayed in a text box in form footer and remain intact till cleared by double click on any record.
Best wishes,
A.D. Tejpal
------------
----- Original Message -----
From: Rocky Smolin at Beach Access Software
To: 'Access Developers discussion and problem solving'
Sent: Friday, October 24, 2008 21:36
Subject: [AccessD] Selected Records on a Continuous Form
Dear List:
Is there a way to determine which records on a continuous form have been
selected using the record selector boxes.
For complicated reasons I cannot use the Access delete records thing - had
to put a 'Delete Selected Record' button on the form. That works OK and
through code I delete the selected record and requery the form.
Now the user wants to be able to select multiple records like they could
before. I can use my code to delete the selected records if I can determine
which ones are selected.
But there's not .Selected property I can find for recordsets like there is
with multi-select list boxes although it appears that you can only select
contiguous records on a continuous form using the shift key. Control key to
select non-contiguous forms doesn't seem to to work.
Is there such a property or a way to find out which records have been
selected?
MTIA
Rocky Smolin