-- Creamos una tabla if not objectproperty(object_id('Pruebas'),'IsTable') is null drop table pruebas go Create table pruebas (id int identity(1,1) not null primary key, descripcion varchar(50)) go if not objectproperty(object_id('spPruebas'),'IsProcedure') is null drop procedure spPruebas go create procedure spPruebas(@idDesde int = 0, @idHasta int=999999999) as begin select * from Pruebas where id between @idDesde and @idHasta end go -- Y le insertamos datos de prueba... Declare @i int set @i=1 while @i<50 begin insert into pruebas (descripcion) values('Insertamos fila'+ cast(@i as varchar(20)) ) set @i=@i+1 end go spPruebas go spPruebas 1,12 ' Ahora el código de V.B. Private Sub CargarDatos_Click() Dim Res As ADODB.Recordset Dim Conexion As String Conexion = "Provider=SQLOLEDB;Data Source=127.0.0.1;" & _ "User id=sa;Password=;Initial Catalog=pruebas" Set Res = New ADODB.Recordset Res.Open "spPruebas " & IIf(txtId.Text = "", "null", txtId.Text) & "," & _ IIf(txtidHasta.Text = "", "null", txtidHasta.Text), _ Conexion, adOpenForwardOnly, adLockReadOnly FlexDatos.Rows = FlexDatos.FixedRows Do Until Res.EOF FlexDatos.AddItem "" & Res!id & vbTab & Res!Descripcion Res.MoveNext Loop Res.Close Set Res = Nothing End Sub