>> You do NOT select that other row first but you click directly on the other-button like most people would do.
indeed, this is expected.
>> The effect is that the row ID field of the first row is "passed" through to the procedure that the other-button calls
no, this is inaccurate. Assuming you have the "Include Row ID" option for the button on, then the RowID for _that row_ will be passed to the receiver. but _only_ the ID field, not the contents of the whole row.
The form _cannot_ rely on any code you've added to the _browse_.
>> and a fraction of a second later the row id field of the other-button's row (the right id field, the one you want).
At the "same time" a second request is passed from the browser to the server, this gets processed on a separate thread, and informs the browse of the new row selected. Clearly the "button procedure" cannot rely on this as it happens asynchronously.
>> I guess what is happening is that the other button fires before the row where it is on is selected and when that
row is selected it fires again.
there are 2 requests - completely separate requests though. One fores to the button procedure, the other to the browse procedure.
>> If I put a pause of 1/10 sec instead of the stop this problem is gone.
this is a very (very) bad solution because it relies on the one thread completing before the other thread does what it needs to do. It will be highly timing dependant, and will vary from one machine, and one time of day to another. The correct solution is to get the correct rowid in the email procedure.
cheers
Bruce