Form.Seltop not selecting top most record
A followup to this question: Moving records from one table to another I have a subform attached to a form. On highlighting a form and clicking something else (exit), it sends the number of rows highlighted to the main form via text box control. Set frm = Forms!Form.[subform_subform].Form Set rst = frm.RecordsetClone recordStart = frm.SelTop - 1 recordEnd = recordStart + Me.SH - 1 Debug.Print Me.SH Debug.Print recordStart Debug.Print recordEnd Where Me.SH is the number of rows selected. (Using http://www.tek-tips.com/viewthread.cfm?qid=1499722) When selecting the rows from top to bottom, I get as an output for recordStart the top row that I have selected. But when I select the rows from bottom to top, I instead get the last row for recordStart. Is there a way to prevent this? The second link (as well as https://msdn.microsoft.com/en-us/library/office/ff194148.aspx) above implies that this should not happen. Is there a workaround for this?
It's you that label the records "start" and "end". To Access there is a "Top" record selected and a "height" (count) of records selected no matter how the user (or your code) selected the records. If you wish a different sequence of selected records, apply the needed sorting first, then select the records.
I believe I have figured it out, and I believe this is a result of the way form selections work: On exit, parametres such as .SelHeight are lost, as expected. .SelTop, however, works differently. Say [Subform] is in datasheet view, and is a [Subform] of [Form]: Set frm = Forms![Form].[Subform].Form Debug.Print frm.SelTop If you were to select the records from top to bottom, then frm.SelTop will obviously be your first selected form. But if you were to select from bottom to top, then frm.SelTop will be your bottom row, because it was the first selected row. That is, whatever you click first will be frm.SelTop, because for whatever reason Access passes that on as frm.SelTop. One way to solve this, besides using a bunch of public variables (Moving records from one table to another) is to create a textbox control for .SelTop, and pass the .SelTop value to your textbox control.
VBA traversing through recordset via button
Add new Items in a combo box in access
Generate an ID from different column choices in Microsoft Access 2013
MSACCESS query: not part of an aggregate function
pdi spoon ms-access concat
iff command issue in MS Access
How to display the maximum value from one column in a listbox, in a textbox on the same form
access 2010 writing SQL statements
Add Working Days to Start Date to Create End Date (including Bank Holiday)
ms access input mask MM/DD/YYYY
'Microsoft.ACE.OLEDB.12.0' provider is not registered -but it is
How do I run this query?
Sending Email with Late Binding Error Through VBA
Microsoft Access 2010 VB Script and Query
Delete query for multiple tables
write an Access query have more than 1 SELECT statement