Guardar Word en una tabla MySQL

Guardar Word en una tabla MySQL

Postby Marcelo Roggeri » Wed Sep 26, 2018 3:09 pm

Hola buenos días, estoy necesitando guardar un informe médico hecho en un Word, el mismo incrustado dentro de una MDI, mi idea es poner un botón para guardar el informe en una tabla de MySQL (campo blob).
Necesito saber cómo guardar ese informe y también poder leerlo en el momento que lo soliciten.
Espero haberme explicado bien de lo que necesito
Agradezco la ayuda, busque en el foro pero no encontré lo que necesito si hay un link al respeto por favor me lo pasan por favor.
Marcelo
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: Guardar Word en una tabla MySQL

Postby Marcelo Roggeri » Thu Sep 27, 2018 7:56 pm

Hola buenas tardes, bueno días pasado les comente un caso de uso que tenia, el cual gracias al foro (buscando y ayudas de colegas) pude ir solucionando.
Solo me queda un error en cuestion que es al insertar el archivo de word en una ventana hija.
Les comparto el cóodigo y el error
Code: Select all  Expand view
FUNCTION ShowWord( oServer )
    local oQry, nHandle
    local oWndChild, oActiveX
    local cTemp := hb_CurDrive() + ":\" + CurDir() + "\tempWord.docx"
    local oWord, oDoc
    local oteste, oWindow, oView, oIncorp

    oQry = oServer:Query("
SELECT file FROM files WHERE filename='marcelo.docx'")

    IF oQry:RecCount() > 0
       FErase( cTemp )

       nHandle := FCreate( cTemp )

       IF FError() # 0
          CursorArrow()
          MsgInfo( "
Error al crear el archivo"  )
       ELSE

          FWrite( nHandle, oQry:file, Len( oQry:file ) )
          FClose( nHandle )

          oQry:End()

          DEFINE WINDOW oWndChild MDICHILD TITLE "
WORD EN VENTANA HIJA" OF oWnd

                 oWord := CreateObject("
Word.Application")

                 syswait(.2)
                 oWndChild := FindWindow( "
opusapp", 0 )

                 if oWndChild != nil
                   SetWindowLong( oWndChild, -16, WS_OVERLAPPED+WS_CLIPCHILDREN)
                   SetWindowLong( oWndChild, -20,  WS_EX_NOPARENTNOTIFY+WS_EX_TOPMOST )
                   SetParent( oWndChild, oWnd:hWnd )
                 endif

                 oWord:WindowState := -4137

                 oWord:Move(0,0)

                 oWord:Visible           := .T.

                 oDoc  := oWord:Documents:Open(cTemp) // abre el doc modelo

                 sysrefresh()

          ACTIVATE WINDOW oWndChild

       ENDIF
    ELSE
        MsgInfo( "
Archivo no encontrado" )
    ENDIF


RETURN NIL


Error description: Error BASE/1004 No exported method: BLCLICKED
El error es en el ACTIVATE WIDNDOW

Saludos y gracias por la ayuda que puedan darme
Marcelo
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: Guardar Word en una tabla MySQL

Postby Xevi » Fri Sep 28, 2018 9:13 am

Marcelo,

¿puedes poner un ejemplo de como hiciste para "salvar" un documento Word en un campo de una base de datos SQL ???

Gracias.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 174
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Guardar Word en una tabla MySQL

Postby Marcelo Roggeri » Fri Sep 28, 2018 11:57 am

Hola Xevi buenos dias aca te lo paso
Code: Select all  Expand view
FUNCTION SaveWord( oServer )

    local uData
    local oQry

    oQry = oServer:Query("SELECT filename FROM files WHERE filename='Informe.docx'")

    IF oQry:RecCount() > 0
        oQry:Delete()
    ENDIF

    oQry:End()

    uData = D_ReadFile( hb_CurDrive() + ":\" + CurDir() + "\Informe.docx" )

    IF oServer:Insert( "
files", {"filename", "file"}, { "Informe.docx", uData } )
        MsgInfo( "
Save successfull")
    ELSE
        MsgInfo( "
Not saved" )
    ENDIF

RETURN NIL

Saludos
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: Guardar Word en una tabla MySQL

Postby Marcelo Roggeri » Fri Sep 28, 2018 12:01 pm

Para recuperarlo o leerlo de la tabla asi:
Code: Select all  Expand view
FUNCTION ShowWord( oServer )
    local oQry, nHandle
    local oWndChild, oActiveX
    local cTemp := hb_CurDrive() + ":\" + CurDir() + "\Informe.docx"
    local oWord, oDoc
    local oteste, oWindow, oView, oIncorp

    oQry = oServer:Query("
SELECT file FROM files WHERE filename='Informe.docx'")

    IF oQry:RecCount() > 0
       FErase( cTemp )

       nHandle := FCreate( cTemp )

       IF FError() # 0
          CursorArrow()
          MsgInfo( "
Error al crear el archivo"  )
       ELSE

          FWrite( nHandle, oQry:file, Len( oQry:file ) )
          FClose( nHandle )

          oQry:End()

          //DEFINE WINDOW oWndChild MDICHILD TITLE "
WORD EN VENTANA HIJA" OF oWnd

                 oWord := CreateObject("
Word.Application")

                 oDoc  := oWord:Documents:Open(cTemp) // abre el doc modelo

                 //syswait(.2)
                 oDoc := FindWindow( "
opusapp", 0 )

                 /*
                 if oDoc != nil
                   SetWindowLong( oDoc, -16, WS_OVERLAPPED+WS_CLIPCHILDREN)
                   SetWindowLong( oDoc, -20,  WS_EX_NOPARENTNOTIFY+WS_EX_TOPMOST )
                   SetParent( oDoc, oWndChild:hWnd )
                 endif
                 */
                 //oWord:WindowState := -4137

                 //oWord:Move(0,0)

                 oWord:Visible           := .T.

          //ACTIVATE WINDOW oWndChild

       ENDIF

    ELSE

        MsgInfo( "
Archivo no encontrado" )

    ENDIF

RETURN NIL


Lo que esta comentado es para que no te de el error que me da a mi ya que no puedo insertarlo en una Window, porque la idea mia es poner una botonera de Guardar - Imprimir - Email
pero aun no pude.
saludos
Marcelo
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 46 guests