none
Como abrir archivos PDF que estan almacenados en una base SQL Server desde Vb.net RRS feed

  • Pregunta

  • Hola estoy haciendo un sistema de documetacion de procesos y yo almaceno archivo en una base sql server 2008 puedo guardarlos (en binario)y descargarlos en el disco duro pero ahora me solicitan que el archivo se habra automaticamente al dar click en un boton.. que el archivo PDF se habra automaticamente   Espero que me pudan ayudar gracias.....

    jueves, 25 de noviembre de 2010 17:54

Respuestas

  • Hola:
    Para crear un fichero desde una base de datos, seria algo como esto:

        ' recuperamos el documento de la base de datos y lo pasamos a un fichero
        Try
            Dim aBytDocumento() As Byte = Nothing
            Dim oFileStream As FileStream
            Dim lsQuery As String = "Select TUCAMPO From TUTABLA Where ID=" & lsID
            Using loConexion As New SqlConnection(TUCADENADECONEXION)
                Using loComando As New SqlCommand(lsQuery, loConexion)
                    loConexion.Open()
                    Using drDocumentos As SqlDataReader = loComando.ExecuteReader(CommandBehavior.SingleRow)
                       If drDocumentos.Read() Then
                          aBytDocumento = CType(drDocumentos("TUCAMPO"), Byte())
                       End If
                    End Using
                End Using
                oFileStream = New FileStream("C:\PEPE.PDF" , FileMode.CreateNew, FileAccess.Write)
                oFileStream.Write(aBytDocumento, 0, aBytDocumento.Length)
                oFileStream.Close()
            End Using
            Dim loPSI As New ProcessStartInfo
            Dim loProceso As New Process
            loPSI.FileName = "C:\PEPE.PDF"
                loProceso = Process.Start(loPSI)
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "xxx", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
       
    Para poder ejecutar el proceso desde un click de boton, el fichero PDF se tiene que llamar siempre igual,
    en el ejemplo "C:\PEPE.PDF" y estar en el mismo path; sino tienes que poner un cuadro de dialogo para poder
    buscar el fichero PDF generado.

    Espero que se entienda
    Un saludo desde Bilbo
    Carlos

    viernes, 26 de noviembre de 2010 10:38

Todas las respuestas

  • Hola,

     

    Puedes usar el elemento webbrowser para mostrarlo. En el foro en ingles tienes una buena referencia

    Abrir pdf desde un boton

     

    Este es otro ejemplo que podrias adaptar

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Response As DialogResult
            OpenFileDialog1.FileName = ""
            OpenFileDialog1.Filter = "PDF Files(*.pdf)|*.pdf|All Files(*.*)|*.*"
            Response = OpenFileDialog1.ShowDialog()
            If Response <> Windows.Forms.DialogResult.Cancel Then
                If OpenFileDialog1.FileName <> "" Then
                    WebBrowser1.Navigate(OpenFileDialog1.FileName)
                End If
            End If
        End Sub

     

    Saludos,



    Jason Ulloa
    Mi Blog
    jueves, 25 de noviembre de 2010 18:01
  • hola

       
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        OpenFileDialog1.Filter = "PDF Files(*.pdf)|*.pdf|All Files(*.*)|*.*"

        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
           
            Process.Start(OpenFileDialog1.FileName)
           
        End If
       
    End Sub

    recuerda agregar el Imports System.Diagnostics

    para poder usar la clase Process

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 25 de noviembre de 2010 18:32
  • Hola:
    Para crear un fichero desde una base de datos, seria algo como esto:

        ' recuperamos el documento de la base de datos y lo pasamos a un fichero
        Try
            Dim aBytDocumento() As Byte = Nothing
            Dim oFileStream As FileStream
            Dim lsQuery As String = "Select TUCAMPO From TUTABLA Where ID=" & lsID
            Using loConexion As New SqlConnection(TUCADENADECONEXION)
                Using loComando As New SqlCommand(lsQuery, loConexion)
                    loConexion.Open()
                    Using drDocumentos As SqlDataReader = loComando.ExecuteReader(CommandBehavior.SingleRow)
                       If drDocumentos.Read() Then
                          aBytDocumento = CType(drDocumentos("TUCAMPO"), Byte())
                       End If
                    End Using
                End Using
                oFileStream = New FileStream("C:\PEPE.PDF" , FileMode.CreateNew, FileAccess.Write)
                oFileStream.Write(aBytDocumento, 0, aBytDocumento.Length)
                oFileStream.Close()
            End Using
            Dim loPSI As New ProcessStartInfo
            Dim loProceso As New Process
            loPSI.FileName = "C:\PEPE.PDF"
                loProceso = Process.Start(loPSI)
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "xxx", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
       
    Para poder ejecutar el proceso desde un click de boton, el fichero PDF se tiene que llamar siempre igual,
    en el ejemplo "C:\PEPE.PDF" y estar en el mismo path; sino tienes que poner un cuadro de dialogo para poder
    buscar el fichero PDF generado.

    Espero que se entienda
    Un saludo desde Bilbo
    Carlos

    viernes, 26 de noviembre de 2010 10:38
  • Jason y Leandro, POR FAVOR, Leer los mensajes del usuario BIEN,antes de contestar, si os dais cuenta la respuesta que dais ambos es practicamente la misma y no es el problema que tiene el USUARIO.
    Javier Torrecilla
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    viernes, 26 de noviembre de 2010 10:41
    Moderador
  • Y de paso leer esta entrada de Lluis Franco:

    http://social.msdn.microsoft.com/Forums/es-ES/moderadoresmsdnes/thread/977f5a39-23b3-4fcf-a1fd-bfdb8f7ca59a

    Un saludo


    http://geeks.ms/blogs/lruiz - MADNUG Member - Spenta Consulting .: MCP -MCTS :.
    viernes, 26 de noviembre de 2010 11:01