a prescindere dal tuo problema, io avrei scritto semplicemente così:
codice:
rcs.Open "EXEC SP_ElencoUI_Sfitte 42, 15", cnn, 1, 3
Set DRElencoUISfitte.DataSource = rcs
DRElencoUISfitte.Show
semplicemente perchè non mi piace usare i command, ma è questione di abitudini 
e la stored l'avrei scritta così:
codice:
Procedure Sp_ElencoUI_Sfitte
@PI_id_soc numeric,
@PI_id_stabile numeric
AS
DECLARE @strSelect VARCHAR(500)
if @PI_id_stabile is null
SET @strSelect = 'select id_immobile,id_inquilino,
indirizzo, n_civico, piano, scala, interno,
tipo_immobile
from Unità_Immobiliari
where id_soc = ' + @PI_id_soc + ' and affittato=0
order by indirizzo, n_civico,scala, piano, interno'
else
SET @strSelect = 'select select u.id_immobile,
u.id_inquilino, s.indirizzo, s.n_civico,
u.piano, u.scala, u.interno, u.tipo_immobile
from Unità_Immobiliari as u, Stabili as s
where u.id_stabile = s.id_stabile and u.id_stabile = '
+ @PI_id_stabile + ' and affittato =0
order by s.indirizzo,s.n_civico,u.scala, u.piano,
u.interno'
EXEC(@strSelect)
GO