The function is attempting to find something that doesn't exist yet, or at least hasn't been released for use. In theory, the recordset is defined, but until the Current event, there is no particular guarantee that a record actually exists. I doubt your function cares that the recordset is defined. It probably wants to use it for some purpose that requires it to be ready to expose content, like perhaps using the clone so that you can navigate to a specific record.
You say that you have both an Access BE and an SQL server BE. So... which of those two sources does the form use? The timing for the two cases would differ somewhat in availability. You COULD just use code in the form's _Current event to use the RecordSetClone to navigate for you, but doing from a UDF in a query is, I think, LITERALLY putting the cart before the horse.