lunes, 29 de febrero de 2016

Cómo Generar un reporte en PDF (con filtro)

Primero definir una variable en el módulo para almacenar el filtro:

Public filtro_pdf_aesel As String

Utilizar el siguiente código para generar el reporte

filtro_pdf_aesel = "[ID]=" & Me("ID") & " AND [Tipo]='V'"
DoCmd.OutputTo acOutputReport, "Extraccion_Ensayo", acFormatPDF, archivo, True

En el evento OPEN y CLOSE del reporte

Private Sub Report_Open(Cancel As Integer)
    If Len(filtro_pdf_aesel) <> 0 Then
         Me.Filter = filtro_pdf_aesel
         Me.FilterOn = True
    End If
End Sub

Private Sub Report_Close()
    filtro_pdf_aesel = vbNullString
End Sub


miércoles, 24 de febrero de 2016

Crear una función escalar en SQL Server y utilizarla desdea MS Access

CREATE FUNCTION Retornar_Opcion (@opcionId NVARCHAR(50)) RETURNS NVARCHAR(250)
AS
BEGIN
DECLARE @valor NVARCHAR(250)
SELECT @valor = Valor
FROM Certi_Opciones
WHERE Opcion = @opcionId
RETURN @valor
END
GO


Ahora bien, en principio hay dos formas de usarla en MS Access:
  • Usar DAO Querydef y acceder directamente a la base para que la función definida por el usuario sea reconocida
  • Crear una vista en SQL Server que utilice la función y llamar a la vista normalmente desde MS Access. Ejemplo:

CREATE VIEW V_Snippets_Parametrizados
AS
SELECT S.ID, dbo.Retornar_Opcion(S.ID) AS Snippet
FROM Snippets S
GO

Con este último método se accede sin problemas vía ODBC porque MS Access no utiliza la función en forma directa.

Cómo Generar un reporte en PDF

DoCmd.OutputTo acOutputReport, "Mi reporte", acFormatPDF, "C:\Users\jp\Desktop\test1.pdf", True