[Reporting Services] Configurando el DataSource para Access

Buenas :), en alguna ocasión, me han preguntado como trabajar con una base de datos Access o como conectarse a esta. Pues bien, la forma de diseñar para informes de servidor es la misma que para otra base de datos. Si es verdad, que la forma de conectarse no, aunque no es muy diferente, os la explico a continuación de forma detallada :D.

Primero, configuramos nuestro DataSource, que es la fuente de acceso a nuestro origen de datos. Para ello, en la pestaña data, nos vamos donde pone dataset y desplegamos el combo que aparece al lado. A continuación, pulsamos nuevo New DataSet como está en la siguiente imagen:

Data

Al pulsar, no sale una ventana para configurar nuestro DataSource. En este pondremos un nombre y en Type (1), elegiremos OLE DB. Luego pulsamos edit (2) para configurar la siguiente pantalla.

Data Source

En esta pantalla, tenemos las siguientes opciones:

  • DataSource: Esta es la pestaña edit, de la pantalla anterior. Si pulsamos change (o cambiar si estáis con la interfaz en español), podremos volver a cambiarla.
  • OLE DB Provider (1): Este es el proveedor de datos que vamos a utilizar. Este nombre sale así porque en la pestaña edit de la pantalla anterior así lo elegimos. Del desplegable (o combo), elegiremos el que más se adapte a nuestras versión de office. En nuestro caso será Microsoft Jet 4.0 OLE DB Provider.
  • Enter a Server or file name (2): Aquí le diremos la ruta donde se encuentra nuestra base de datos.
  • Log on to the Server. Aquí solo le diremos que no tiene contraseña (Blank password (3)), asi es que activaremos esa pestaña.
    En caso de que nuestra base de datos tuviese usuario y password, tan sólo tendríamos que rellenar los dos textbox que viene para ello (User Name y Password)
  • Test Connection (4). Por último, probamos que la conexión está correcta y ya podemos pulsar ok.

Connection Properties

Bueno, pues la primera parte de conexión a la base de datos, ya está realizada. Después de hacer esto, la pestaña de datos del informe, ya tendrá el dataset en su combo, con lo que podremos ver todas las tablitas que tiene nuestra base de datos.

Barra Menú 1

Si pulsamos cuarto icono después de esta lista (el que está en rojo en la imagen), podremos ver como esta pequeña barra cambia por esta otra:

Barra Menú 2

Si pulsamos el último icono (el que está en un cuadro rojo), nos saldrá una ventan con todas nuestras tablas y vistas.

clip_image012[1]

Ahora, tan sólo tenemos que agregar las que nosotros tengamos y queramos utilizar.

Por último, una vez tenemos las tablas agregadas, y creadas las consultas necesarias que nos devolverán nuestros datos, pulsamos el botón actualizar (tercer botón después del combo, donde aparece el nombre de nuestro DataSet).
Al hacer esto, se actualizará la ventana DataSet (en la siguiente imagen, la de la izquierda), donde saldrá nuestro dataset y los campos de la consulta que hayamos creado.

Y ahora sólo nos queda diseñar nuestro informe (pestaña layout), pero eso ya es otro tema (más info aquí).

Espero que os sirva.

Un Saludo

Sin categoría

11 thoughts on “[Reporting Services] Configurando el DataSource para Access

  1. DESPUES DE QUE SE HA DEFINIDO EL DATASOURCE PUEDE SER FILTRADO MEDIANTE PROGRAMACION EN UNA FUNCION LANZADA DESDE FUERA DEL FORMULARIO DONDE SE ENCUENTRA REPORTVIEWER QUIEN CONSUMIRA LA INFORMACION AL SER LANZADO EN EL EVENTO LOAD, DE LA SIGUIENTE MANERA:

    *VISUAL BASIC 2008

    Function IniciarForma() As Integer ‘Devuelve el numero de registros de: dsForm.tables(0)

    IniciarForma = 0

    strSQL = “SELECT”
    Select Case strTipoDelInforme.ToUpper
    Case “INCIDENCIAS”
    strSQL += ” INC.idIncidencias,”
    strSQL += ” INC.idEmpresa,”
    strSQL += ” INC.idPeriodo,”
    strSQL += ” INC.TipoPeriodo,”
    strSQL += ” INC.Ejercicio,”
    strSQL += ” INC.Periodo,”
    strSQL += ” INC.Incidencia,”
    strSQL += ” INC.Descripción,”
    strSQL += ” INC.FechaHora,”
    strSQL += ” EMP.NombreLargo,”
    strSQL += ” ERE.NombreEmpresa,”
    strSQL += ” HOR.DescripcionHorario,”
    strSQL += ” EMP.Departamento,”
    strSQL += ” EMP.Puesto,”
    strSQL += ” EMP.TipoEmpleado,”
    strSQL += ” EMP.Status”
    strSQL += ” FROM”
    strSQL += ” tbIncidencias AS INC,”
    strSQL += ” tbEmpresas AS ERE, ”
    strSQL += ” tbHorarios AS HOR,”
    strSQL += ” tbEmpleados AS EMP”
    strSQL += ” WHERE”
    strSQL += ” ERE.idEmpresa = INC.idEmpresa”
    strSQL += ” AND”
    strSQL += ” INC.idEmpleado = EMP.idEmpleado”
    strSQL += ” AND”
    strSQL += ” HOR.idHorario = EMP.idHorario”
    ‘NOMBRE DEL INFORME
    Select Case strNombreDelInforme.ToUpper
    Case “INCIDENCIAS1″
    strSQL += ” AND”
    strSQL += ” Aplicado = ‘SI'”
    strNombreArchivoInforme = “rsIncidencias1.rdlc”
    Case “INCIDENCIAS2”
    strNombreArchivoInforme = “rsIncidencias2.rdlc”
    End Select
    ‘EMPLEADOS
    If strEmpleados.Length > 0 Then
    strSQL += strEmpleados
    End If
    ‘FILTRO POR FECHAS O POR PERIODOS
    If strTipoPeriodo.Length > 0 Then
    ‘FILTRO POR PERIODOS
    strSQL += ” AND”
    strSQL += ” INC.TipoPeriodo = ‘” & strTipoPeriodo & “‘”
    strSQL += ” AND”
    strSQL += ” idPeriodo >= ” & intIdPeriodoInicial.ToString
    strSQL += ” AND”
    strSQL += ” idPeriodo < = " & intIdPeriodoFinal.ToString End If If strFechaInicial.Length > 0 Then
    ‘FILTRO POR FECHAS
    strSQL += ” AND”
    strSQL += ” FechaHora”
    strSQL += ” BETWEEN”
    strSQL += ” CONVERT(CHAR(10), CONVERT(DATETIME, ‘” & strFechaInicial & ” 00:00:00 AM’), 112)”
    strSQL += ” AND”
    strSQL += ” CONVERT(CHAR(10), CONVERT(DATETIME, ‘” & strFechaFinal & ” 00:00:00 AM’), 112)”
    End If
    End Select

    dsForm = Obtener_dsDeSQL(strSQL, , , , gl.NombreSistema, gl.BaseDatos)
    IniciarForma = dsForm.Tables(0).Rows.Count

    If IniciarForma > 0 Then ‘Si hay registros por mostrar
    Select Case strTipoDelInforme.ToUpper
    Case “INCIDENCIAS”
    rvReportes.LocalReport.ReportEmbeddedResource = “TempoControl.” & strNombreArchivoInforme
    tbIncidenciasBindingSource.DataSource = Nothing
    tbIncidenciasBindingSource.DataSource = dsForm
    tbIncidenciasBindingSource.DataMember = dsForm.Tables(0).TableName.ToString
    Me.tbIncidenciasTableAdapter.Fill(Me.dsIncidencias.tbIncidencias)
    End Select
    End If
    End Function
    Private Sub FrmReportes_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    ‘Lanzar el reporte
    rvReportes.RefreshReport()
    End Sub

  2. Fran en tu experiencia, haber si te ha sucedido algo asi, mis informes los muestro con un ReportViewer conectandolo a una BD SQl Server, pero de manera local, he evitado que te pida la contrasena un inicio de sesion y demas, pero cuando ejecutamos en una red(acceso remoto), te vuelve a hacer el mismo cuadro auqnue no pone el nombre de la DB y aunque le des el pass y user correcto no se conecta, habra una forma de evitar esto?

  3. Agradecemos tus aportes; estoy buscando algo asi como un manual de microsoft reporting services que este en pdf pero aun no he encontrado alguno; SaludoS desde HONDURAS

  4. Bueno soy nuevo en esto y posiblemente mi pregunta sea algo muy muy simple.

    La cosa es que no me aparece la pestaña Data y ya la busque por todos lados y no la encuentro

  5. Hola Miguel,

    Escribe a través del contacta de este blog (el mío :)) y te contesto.
    Si no, seguro se me olvida el comentario cuando lo vaya a leer no recuerdo quién escribió :$

    Un Saludo

  6. Hola Fran, cuando uno lo hacer pero utilizando el control Report View y el archivo .rdlc, que no es una interfaz igual a la que muestras, 1)pero supongo que todo se hace igual con DataSet?, 2) Cuando uno crea una consulta SQL para obtener los datos de access pero la implementa desde Visual Studio, se hace con SQL de SQL Server o SQL de Access?
    Gracias,
    Saludos

    Jose Antonio::..

  7. Hola Ramón,

    Si añades a tu consulta algo así:

    Select TusCampos From TuTabla WHERE TuCampo1 = @Valor

    Reporting entenderá que @Valor es un parámetro y te lo tratará como tal.

    Un Saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *