From Xojo Documentation
Returns True when the RowSet is before the first row or the RowSet is empty.
A new RowSet is always at the first row (if any rows were returned). The only way to set the RowSet to be before the first row is to use RowSet.MoveToPreviousRow, which is not supported by all data sources.
This moves the RowSet pointer so that BeforeFirstRow is True:
rs = db.SelectSQL("SELECT * FROM data")
If rs <> Nil Then
If rs.BeforeFirstRow Then MsgBox("You are before the first row!")