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
Guardar Word en una tabla MySQL
- Marcelo Roggeri
- Posts: 275
- Joined: Sat Jul 22, 2006 9:04 pm
- Location: Venado Tuerto - Santa Fe -Argentina
- Contact:
Guardar Word en una tabla MySQL
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
- Marcelo Roggeri
- Posts: 275
- Joined: Sat Jul 22, 2006 9:04 pm
- Location: Venado Tuerto - Santa Fe -Argentina
- Contact:
Re: Guardar Word en una tabla MySQL
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
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
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
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
El error es en el ACTIVATE WIDNDOW
Saludos y gracias por la ayuda que puedan darme
Marcelo
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
Re: Guardar Word en una tabla MySQL
Marcelo,
¿puedes poner un ejemplo de como hiciste para "salvar" un documento Word en un campo de una base de datos SQL ???
Gracias.
¿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!!!
Xevi.
Aprendiz de la vida!!!
- Marcelo Roggeri
- Posts: 275
- Joined: Sat Jul 22, 2006 9:04 pm
- Location: Venado Tuerto - Santa Fe -Argentina
- Contact:
Re: Guardar Word en una tabla MySQL
Hola Xevi buenos dias aca te lo paso
Saludos
Code: Select all
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
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
- Marcelo Roggeri
- Posts: 275
- Joined: Sat Jul 22, 2006 9:04 pm
- Location: Venado Tuerto - Santa Fe -Argentina
- Contact:
Re: Guardar Word en una tabla MySQL
Para recuperarlo o leerlo de la tabla asi:
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
Code: Select all
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
pero aun no pude.
saludos
Marcelo
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)