Sobre la pregunta, sql server no lo he usado para hacer reportes en visual pero creo que no debería haber problema con este código. Realiza la sentencia sql en lazandola al reporte para mostrar lo que deseas enviar a crystal, Private sub command1_click() ' yo creo una tabla que contiene la misma estructura que ls tabla principal y en ella solo hago los reportes a imprimir, tb se le pueden añadir campos de otras tablas 'conta=tabla principal y conta_imprimir= la que utilizo pa imprimir 'Borra todos los valores almacenados en la tabla utilizada para imprimir Dim Borrar As Database Set Borrar = OpenDatabase("v:\Conta\Conta.mdb")'ruta de tu base de datos Borrar.Execute "delete * from conta_imprimir" Borrar.Close 'Inserta los valores de la consulta que queremos en la tabla para imprimir Dim insertar As Database Set insertar = OpenDatabase("v:\Conta\Conta.mdb") 'puedes poner cualquier consulta con condiciones ' aquí escribes la sentencia sql que deseas mostrar Data8.RecordSource = "Select * from conta where codigo='" & Text1.Text & "'" & "and Fecha_apun=#" & DBCombo4.Text & "#" Data8.Refresh With Data8.Recordset .MoveFirst Do 'Aquí es donde insertas los datos en la tabla creada insertar. Execute "insert into conta_imprimir(Codigo,Titulo,Fecha_apun,Documento,Linea,Con,Comentario,D,Importe,Debe,Haber,Saldo)" & _ "values ('" & .Fields("Codigo") & "','" & .Fields("Titulo") & "','" & .Fields("Fecha_apun") & "','" & _ .Fields("Documento") & "','" & .Fields("Linea") & "','" & .Fields("Con") & "','" & _ .Fields("Comentario") & "','" & .Fields("D") & "','" & .Fields("Importe") & "','" & _ .Fields("Debe") & "','" & .Fields("Haber") & "','" & .Fields("Saldo") & "')" .MoveNext Loop Until .EOF End With Insertar.Close 'Manda a imprimir la tabla para imprimir Data8.RecordSource = "select * from conta_imprimir" Data8.Refresh If Data8.Recordset.AbsolutePosition = -1 Then MsgBox "NO HAY DATOS" Else imprimir End If End sub 'luego llamo a crystal Private Sub imprimir() CrystalReport1.Destination = 0 'para mandar a impresora CrystalReport1.ReportFileName = "v:\Conta\conta_imprimir.rpt" 'ubicacion del informe CrystalReport1.DiscardSavedData = True 'para que se actualizen los datos CrystalReport1.WindowState = crptMaximized 'maximiza la ventana CrystalReport1.Action = 2 'accion de imprimir End Sub