Your problem probably is that you are using a forward only cursor.
You need to us a Static or Keyset cursor, which means not creating the recordset like this:
Set rs = conn.Execute("SELECT..."
But like this:
Dim rs As ADODB.Recordset
Set rs = NEW ADODB.Recordset
Set rs.ActiveConnection = Conn
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.Source = "SELECT..."
rs.Open Options:=adCmdText
or
Dim rs As ADODB.Recordset
Set rs = NEW ADODB.Recordset
Set rs.ActiveConnection = Conn
rs.CursorLocation = adUseServer
rs.CursorType = adOpenKeyset
rs.Properties("IRowsetIdentity"

= True
rs.Source = "SELECT..."
rs.Open Options:=adCmdText
Depending on the provider, you may not need to set the IRowsetIdentity (With the JET provider you will need to if using a server side cursor)