Retomo Problema de uso de Word "FUNCIONANDO"
Retomo Problema de uso de Word "FUNCIONANDO"
Hola Amigos.
Necesito poder terminar de solucionar mi problema con el uso de Word, como lo dije en un link anterior,el equipo se bloquea despues de varias ejecuciones del sistema.
He podido comprobar que esto sucede, ya que en algun momento el Archivo Plantilla de Word se queda abierto, por lo que la proxima ves al tratar de abrir este archivo, el programa se congela.
La pregunta es, Existe alguna forma de saber si el Archivo DOC usado como plantilla, se encuentra ABIERTO ?
Esta forma creo que evito que se bloquee el Sistema.
Dejo en Link de la consulta anterior.
http://forums.fivetechsupport.com/viewt ... =6&t=37799
Muchos Saludos
Antonio.
Necesito poder terminar de solucionar mi problema con el uso de Word, como lo dije en un link anterior,el equipo se bloquea despues de varias ejecuciones del sistema.
He podido comprobar que esto sucede, ya que en algun momento el Archivo Plantilla de Word se queda abierto, por lo que la proxima ves al tratar de abrir este archivo, el programa se congela.
La pregunta es, Existe alguna forma de saber si el Archivo DOC usado como plantilla, se encuentra ABIERTO ?
Esta forma creo que evito que se bloquee el Sistema.
Dejo en Link de la consulta anterior.
http://forums.fivetechsupport.com/viewt ... =6&t=37799
Muchos Saludos
Antonio.
Last edited by remtec on Sun Oct 13, 2019 5:24 pm, edited 1 time in total.
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Retomo Problema de uso de Word
remtec wrote:Hola Amigos.
Necesito poder terminar de solucionar mi problema con el uso de Word, como lo dije en un link anterior,el equipo se bloquea despues de varias ejecuciones del sistema.
He podido comprobar que esto sucede, ya que en algun momento el Archivo Plantilla de Word se queda abierto, por lo que la proxima ves al tratar de abrir este archivo, el programa se congela.
La pregunta es, Existe alguna forma de saber si el Archivo DOC usado como plantilla, se encuentra ABIERTO ?
Esta forma creo que evito que se bloquee el Sistema.
Dejo en Link de la consulta anterior.
http://forums.fivetechsupport.com/viewt ... =6&t=37799
Muchos Saludos
Antonio.
Prueba esta function:
Code: Select all
if lDocAbierto(cPlantilla) //variable que contiene path , nombre, y ext. del fichero modelo o plantilla
MsgStop("Documento " + cPlantilla + " está abierto.","Alto")
Return .f.
endif
//------------------------------------// Detectar si Docum está abierto.
Function lDocAbierto(cDocName)
local lOpen:=.f., nHand
If ( nHand := FOPEN(cDocName, FO_EXCLUSIVE ) ) = -1
lOpen := .t.
Else
FCLOSE( nHand )
Endif
Return lOpen
Referente al enlace que pones, sobre tu ultimo codigo probado, observa lo siguiente:
* oWord:Documents:Close() //AQUI: si estos estan omitidos, siempre quedarán abiertos los documentos
* oWord:Quit()
Saludos.Function G_Francisco2()
Local oWord, oSel, oDoc,cOrigen,cDestino,cFile,cSave, Nom1,rut1,naci1
local oActiveDoc,aArrReplace, n
cOrigen := "C:\Desa\FichasWin\Doc\Doc_Bases\"
cDestino := "C:\Desa\FichasWin\Doc\Doc_Bases\"
cFile := "Alturapru6.rtf"
cSave := "Alturapru12.doc"
Nom1 := "PACIENTE DE PRUEBA INFORME"
rut1 := "11.111.111-1"
naci1 := "Chilena"
TRY
oWord := CreateObject("Word.Application")
CATCH
MsgInfo("Word no está instalado en esta PC. No se puede continuar")
Return NIL
END
TRY
oDoc := oWord:Documents:Open(cOrigen + cFile)
CATCH
MsgInfo("No se puede abrir el archivo plantilla " + cOrigen + cFile)
oWord:Quit()
Return NIL
END
oWord:Visible:=.T.
oDoc:Select()
oSel = oWord:Selection
// Crear Matriz de reemplazos
aArrReplace := { { "[nombrepaciente]", AllTrim(Nom1) } ,;
{ "[rut]" , AllTrim(rut1) } ,;
{ "[naciona]" , AllTrim(naci1) } }
For n:=1 to Len(aArrReplace)
Reemplaza_Text_F2( oSel, aArrReplace[n][1], aArrReplace[n][2] )
Next n
oActiveDoc := oWord:Get("ActiveDocument")
oActiveDoc:SaveAs(cDestino + cSave)
oActiveDoc:PrintOut()
* oWord:Documents:Close() //AQUI: si estos estan omitidos, siempre quedarán abiertos los documentos
* oWord:Quit()
SysRefresh()
Return nil
//---------------------------------------------------//
Static Function Reemplaza_Text_F2( oSel, cSrc, cRpl)
Local wdCollapseEnd:=0
LOCAL oRng := oSel:Document:Content
IF AT( cSrc, oRng:Text ) = 0
RETURN .F.
ENDIF
WHILE oRng:Find:Execute( cSrc )
oRng:Text = cRpl
oRng:Collapse( wdCollapseEnd )
ENDDO
RETURN .T.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Retomo Problema de uso de Word
Vamos... colegas.
Se necesita de sus comentarios y/o ejemplos.
Saludos.
Se necesita de sus comentarios y/o ejemplos.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Retomo Problema de uso de Word
Francisco
que usas harbour o xharbour?
te has fijado en el gestor de tareas de windows si luego de que se finalize el proceso no queda abierta una instancia de word?
salu2
que usas harbour o xharbour?
te has fijado en el gestor de tareas de windows si luego de que se finalize el proceso no queda abierta una instancia de word?
salu2
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Retomo Problema de uso de Word
si usas harbour, debes usar win_oleCreateObject para crear el objeto com, y al final oWord:Quit() para finalizar y cerrar la instancia.
Code: Select all
/*
* OLE demo/test code
*
* Copyright 2007 Enrico Maria Giordano e.m.giordano at emagsoftware.it
* Copyright 2008-2017 Viktor Szakats (vszakats.net/harbour)
* Exm_CDO(), Exm_OOOpen(), Exm_CreateShortcut()
* Copyright 2009 Mindaugas Kavaliauskas <dbtopas at dbtopas.lt>
*/
#require "hbwin"
PROCEDURE Main()
LOCAL nOption
CLS
DO WHILE .T.
? ""
? "Select OLE test:"
? "1) MS Excel"
? "2) MS Word"
? "3) MS Outlook (1)"
? "4) MS Outlook (2)"
? "5) Internet Explorer"
? "6) OpenOffice Calc"
? "7) OpenOffice Writer"
? "8) OpenOffice Open"
? "9) Send mail via CDO"
? "a) Read ADODB table"
? "b) SOAP Toolkit client"
? "c) PocketSOAP client"
? "d) Internet Explorer with callback"
? "e) Create shortcut"
? "0) Quit"
? "> "
nOption := Inkey( 0 )
?? hb_keyChar( nOption )
IF nOption == hb_keyCode( "1" )
Exm_MSExcel()
ELSEIF nOption == hb_keyCode( "2" )
Exm_MSWord()
ELSEIF nOption == hb_keyCode( "3" )
Exm_MSOutlook()
ELSEIF nOption == hb_keyCode( "4" )
Exm_MSOutlook2()
ELSEIF nOption == hb_keyCode( "5" )
Exm_IExplorer()
ELSEIF nOption == hb_keyCode( "6" )
Exm_OOCalc()
ELSEIF nOption == hb_keyCode( "7" )
Exm_OOWriter()
ELSEIF nOption == hb_keyCode( "8" )
Exm_OOOpen()
ELSEIF nOption == hb_keyCode( "9" )
Exm_CDO()
ELSEIF nOption == hb_keyCode( "a" )
Exm_ADODB()
ELSEIF nOption == hb_keyCode( "b" )
Exm_SOAP()
ELSEIF nOption == hb_keyCode( "c" )
Exm_PocketSOAP()
ELSEIF nOption == hb_keyCode( "d" )
Exm_IExplorer2()
ELSEIF nOption == hb_keyCode( "e" )
Exm_CreateShortcut()
ELSEIF nOption == hb_keyCode( "0" )
EXIT
ENDIF
ENDDO
RETURN
STATIC PROCEDURE Exm_MSExcel()
LOCAL oExcel, oWorkBook, oWorkSheet, oAS
LOCAL nI, nCount
IF ( oExcel := win_oleCreateObject( "Excel.Application" ) ) != NIL
oWorkBook := oExcel:WorkBooks:Add()
// Enumerator test
FOR EACH oWorkSheet IN oWorkBook:WorkSheets
? oWorkSheet:Name
NEXT
// oWorkBook:WorkSheets is a collection
nCount := oWorkBook:WorkSheets:Count()
// Elements of collection can be accessed using :Item() method
FOR nI := 1 TO nCount
? oWorkBook:WorkSheets:Item( nI ):Name
NEXT
// OLE also allows to access collection elements by passing
// indices to :Worksheets property
FOR nI := 1 TO nCount
? oWorkBook:WorkSheets( nI ):Name
NEXT
oAS := oExcel:ActiveSheet()
// Set font for all cells
oAS:Cells:Font:Name := "Arial"
oAS:Cells:Font:Size := 12
oAS:Cells( 1, 1 ):Value := "OLE from Harbour"
oAS:Cells( 1, 1 ):Font:Size := 16
// oAS:Cells( 1, 1 ) is object, but oAS:Cells( 1, 1 ):Value has value of the cell
? "Object valtype:", ValType( oAS:Cells( 1, 1 ) ), "Value:", oAS:Cells( 1, 1 ):Value
oAS:Cells( 3, 1 ):Value := "String:"
oAS:Cells( 3, 2 ):Value := "Hello, World!"
oAS:Cells( 4, 1 ):Value := "Numeric:"
oAS:Cells( 4, 2 ):Value := 1234.56
oAS:Cells( 4, 3 ):Value := oAS:Cells( 4, 2 ):Value
oAS:Cells( 4, 4 ):Value := oAS:Cells( 4, 2 ):Value
oAS:Cells( 4, 3 ):Value *= 2
oAS:Cells( 4, 2 ):Value++
oAS:Cells( 5, 1 ):Value := "Logical:"
oAS:Cells( 5, 2 ):Value := .T.
oAS:Cells( 6, 1 ):Value := "Date:"
oAS:Cells( 6, 2 ):Value := Date()
oAS:Cells( 7, 1 ):Value := "Timestamp:"
oAS:Cells( 7, 2 ):Value := hb_DateTime()
// Some formatting
oAS:Columns( 1 ):Font:Bold := .T.
oAS:Columns( 2 ):HorizontalAlignment := - 4152 // xlRight
oAS:Columns( 1 ):AutoFit()
oAS:Columns( 2 ):AutoFit()
oAS:Columns( 3 ):AutoFit()
oAS:Columns( 4 ):AutoFit()
oAS:Cells( 3, 2 ):Font:ColorIndex := 3 // red
oAS:Range( "A1:B1" ):HorizontalAlignment := 7
oAS:Range( "A3:A7" ):Select()
oExcel:Visible := .T.
oExcel:Quit()
ELSE
? "Error: MS Excel not available. [" + win_oleErrorText() + "]"
ENDIF
RETURN
STATIC PROCEDURE Exm_MSWord()
LOCAL oWord, oText
IF ( oWord := win_oleCreateObject( "Word.Application" ) ) != NIL
oWord:Documents:Add()
oText := oWord:Selection()
oText:Text := "OLE from Harbour" + hb_eol()
oText:Font:Name := "Arial"
oText:Font:Size := 48
oText:Font:Bold := .T.
oWord:Visible := .T.
oWord:WindowState := 1 /* Maximize */
ELSE
? "Error. MS Word not available.", win_oleErrorText()
ENDIF
RETURN
STATIC PROCEDURE Exm_MSOutlook()
LOCAL oOL, oList
IF ( oOL := win_oleCreateObject( "Outlook.Application" ) ) != NIL
oList := oOL:CreateItem( 7 /* olDistributionListItem */ )
oList:DLName := "Distribution List"
oList:Display( .F. )
ELSE
? "Error. MS Outlook not available.", win_oleErrorText()
ENDIF
RETURN
STATIC PROCEDURE Exm_MSOutlook2()
LOCAL oOL, oLista, oMail
LOCAL i
IF ( oOL := win_oleCreateObject( "Outlook.Application" ) ) != NIL
oMail := oOL:CreateItem( 0 /* olMailItem */ )
FOR i := 1 TO 10
oMail:Recipients:Add( "Contact" + hb_ntos( i ) + ;
"<contact" + hb_ntos( i ) + "@example.org>" )
NEXT
oLista := oOL:CreateItem( 7 /* olDistributionListItem */ )
oLista:DLName := "Test with distribution list"
oLista:Display( .F. )
oLista:AddMembers( oMail:Recipients )
oLista:Save()
oLista:Close( 0 )
ELSE
? "Error. MS Outlook not available.", win_oleErrorText()
ENDIF
RETURN
STATIC PROCEDURE Exm_IExplorer()
LOCAL oIE
IF ( oIE := win_oleCreateObject( "InternetExplorer.Application" ) ) != NIL
oIE:Visible := .T.
oIE:Navigate( "https://harbour.github.io" )
ELSE
? "Error. Internet Explorer not available.", win_oleErrorText()
ENDIF
RETURN
STATIC PROCEDURE Exm_IExplorer2()
LOCAL oIE
IF ( oIE := win_oleCreateObject( "InternetExplorer.Application" ) ) != NIL
oIE:__hSink := __axRegisterHandler( oIE:__hObj, {| ... | QOut( ... ) } )
oIE:Visible := .T.
oIE:Navigate( "https://harbour.github.io" )
WHILE oIE:ReadyState != 4
hb_idleSleep( 0 )
ENDDO
ELSE
? "Error. Internet Explorer not available.", win_oleErrorText()
ENDIF
RETURN
STATIC PROCEDURE Exm_OOCalc()
LOCAL oServiceManager, oDesktop, oDoc, oSheet
IF ( oServiceManager := win_oleCreateObject( "com.sun.star.ServiceManager" ) ) != NIL
oDesktop := oServiceManager:createInstance( "com.sun.star.frame.Desktop" )
oDoc := oDesktop:loadComponentFromURL( "private:factory/scalc", "_blank", 0, {} )
oSheet := oDoc:getSheets:getByIndex( 0 )
oSheet:getCellRangeByName( "A1" ):setString( "OLE from Harbour" )
oSheet:getCellRangeByName( "A3" ):setString( "String:" )
oSheet:getCellRangeByName( "B3" ):setString( "Hello, World!" )
oSheet:getCellRangeByName( "A4" ):setString( "Numeric:" )
oSheet:getCellRangeByName( "B4" ):setValue( 1234.56 )
oSheet:getCellRangeByName( "A5" ):setString( "Logical:" )
oSheet:getCellRangeByName( "B5" ):setValue( .T. )
oSheet:getCellRangeByName( "B5" ):setPropertyValue( "NumberFormat", 99 ) // BOOLEAN
oSheet:getCellRangeByName( "A6" ):setString( "Date:" )
oSheet:getCellRangeByName( "B6" ):setValue( Date() )
oSheet:getCellRangeByName( "B6" ):setPropertyValue( "NumberFormat", 36 ) // YYYY-MM-DD
oSheet:getCellRangeByName( "A7" ):setString( "Timestamp:" )
oSheet:getCellRangeByName( "B7" ):setValue( hb_DateTime() )
oSheet:getCellRangeByName( "B7" ):setPropertyValue( "NumberFormat", 51 ) // YYYY-MM-DD HH:MM:SS
oSheet:getCellRangeByName( "A3" ):setPropertyValue( "IsCellBackgroundTransparent", .F. )
oSheet:getCellRangeByName( "A3" ):setPropertyValue( "CellBackColor", 255 ) // blue
oSheet:getCellRangeByName( "B3" ):setPropertyValue( "CharColor", 255 * 256 * 256 ) // red
ELSE
? "Error. OpenOffice not available.", win_oleErrorText()
ENDIF
RETURN
STATIC PROCEDURE Exm_OOWriter()
LOCAL oServiceManager, oDesktop, oDoc, oText, oCursor, oTable, oRow, oCell, oRows
IF ( oServiceManager := win_oleCreateObject( "com.sun.star.ServiceManager" ) ) != NIL
oDesktop := oServiceManager:createInstance( "com.sun.star.frame.Desktop" )
oDoc := oDesktop:loadComponentFromURL( "private:factory/swriter", "_blank", 0, {} )
oText := oDoc:getText
oCursor := oText:createTextCursor
oText:insertString( oCursor, "OpenOffice Writer scripting from Harbour." + Chr( 10 ), .F. )
oText:insertString( oCursor, "This is the second line" + Chr( 10 ), .F. )
oTable := oDoc:createInstance( "com.sun.star.text.TextTable" )
oTable:initialize( 2, 4 )
oText:insertTextContent( oCursor, oTable, .F. )
oTable:setPropertyValue( "BackTransparent", .F. )
oTable:setPropertyValue( "BackColor", ( 255 * 256 + 255 ) * 256 + 192 )
oRows := oTable:getRows
oRow := oRows:getByIndex( 0 )
oRow:setPropertyValue( "BackTransparent", .F. )
oRow:setPropertyValue( "BackColor", ( 192 * 256 + 192 ) * 256 + 128 )
oCell := oTable:getCellByName( "A1" )
oCell:insertString( oCell:createTextCursor, "Jan", .F. )
oCell := oTable:getCellByName( "B1" )
oCell:insertString( oCell:createTextCursor, "Feb", .F. )
oCell := oTable:getCellByName( "C1" )
oCell:insertString( oCell:createTextCursor, "Mar", .F. )
// I guess we can set text without cursor creation
oTable:getCellByName( "D1" ):setString( "SUM" )
oTable:getCellByName( "A2" ):setValue( 123.12 )
oTable:getCellByName( "B2" ):setValue( 97.07 )
oTable:getCellByName( "C2" ):setValue( 106.38 )
oTable:getCellByName( "D2" ):setFormula( "sum <A2:C2>" )
oText:insertControlCharacter( oCursor, 0, .F. ) // PARAGRAPH_BREAK
oCursor:setPropertyValue( "CharColor", 255 )
oText:insertString( oCursor, "Good bye!", .F. )
ELSE
? "Error. OpenOffice not available.", win_oleErrorText()
ENDIF
RETURN
STATIC PROCEDURE Exm_OOOpen()
LOCAL oOO_ServiceManager
LOCAL oOO_Desktop
LOCAL oOO_PropVal01
LOCAL oOO_Doc
LOCAL cDir
IF ( oOO_ServiceManager := win_oleCreateObject( "com.sun.star.ServiceManager" ) ) != NIL
hb_FNameSplit( hb_argv( 0 ), @cDir )
oOO_Desktop := oOO_ServiceManager:createInstance( "com.sun.star.frame.Desktop" )
oOO_PropVal01 := oOO_ServiceManager:Bridge_GetStruct( "com.sun.star.beans.PropertyValue" )
oOO_Doc := oOO_Desktop:loadComponentFromURL( OO_ConvertToURL( hb_FNameMerge( cDir, "sample.odt" ) ), "_blank", 0, { oOO_PropVal01 } )
? "Press any key to close OpenOffice"
Inkey( 0 )
oOO_Doc:Close( .T. )
oOO_Doc := NIL
oOO_Desktop:Terminate()
oOO_Desktop := NIL
oOO_PropVal01 := NIL
ELSE
? "Error: OpenOffice not available.", win_oleErrorText()
ENDIF
RETURN
STATIC FUNCTION OO_ConvertToURL( cString )
// ; Handle UNC paths
IF !( Left( cString, 2 ) == "\\" )
cString := StrTran( cString, ":", "|" )
cString := "///" + cString
ENDIF
cString := StrTran( cString, "\", "/" )
cString := StrTran( cString, " ", "%20" )
RETURN "file:" + cString
STATIC PROCEDURE Exm_CDO() /* STARTTLS not supported by CDO */
LOCAL oCDOMsg
LOCAL oCDOConf
LOCAL cFrom
IF ( oCDOMsg := win_oleCreateObject( "CDO.Message" ) ) != NIL
cFrom := "from@example.org"
oCDOConf := win_oleCreateObject( "CDO.Configuration" )
oCDOConf:Fields( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2 // ; cdoSendUsingPort
oCDOConf:Fields( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := "localhost"
oCDOConf:Fields( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := 25
oCDOConf:Fields( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" ):Value := 120
oCDOConf:Fields:Update()
oCDOMsg:Configuration := oCDOConf
oCDOMsg:BodyPart:Charset := "utf-8"
oCDOMsg:To := "to@example.org"
oCDOMsg:From := cFrom
oCDOMsg:Subject := "Test message"
oCDOMsg:TextBody := "Test message body"
BEGIN SEQUENCE WITH __BreakBlock()
oCDOMsg:Send()
RECOVER
? "Error: CDO send error.", win_oleErrorText()
END SEQUENCE
ELSE
? "Error: CDO subsystem not available (needs Windows XP or upper).", win_oleErrorText()
ENDIF
RETURN
#define adOpenForwardOnly 0
#define adOpenKeyset 1
#define adOpenDynamic 2
#define adOpenStatic 3
#define adLockReadOnly 1
#define adLockPessimistic 2
#define adLockOptimistic 3
#define adLockBatchOptimistic 4
#define adUseNone 1
#define adUseServer 2
#define adUseClient 3
STATIC PROCEDURE Exm_ADODB()
LOCAL oRs
IF ( oRs := win_oleCreateObject( "ADODB.Recordset" ) ) != NIL
oRs:Open( "SELECT * FROM test ORDER BY First", ;
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + hb_DirBase() + "..\..\hbodbc\tests\test.mdb", ;
adOpenForwardOnly, ;
adLockReadOnly )
DO WHILE ! oRs:EOF
? oRs:Fields( "First" ):Value
oRs:MoveNext()
ENDDO
oRs:Close()
ENDIF
RETURN
STATIC PROCEDURE Exm_SOAP()
LOCAL oSoapClient
IF ! Empty( oSoapClient := win_oleCreateObject( "MSSOAP.SoapClient30" ) )
oSoapClient:msSoapInit( "https://www.dataaccess.com/webservicesserver/textcasing.wso?WSDL" )
? oSoapClient:InvertStringCase( "lower UPPER" )
ELSE
? "Error: SOAP Toolkit 3.0 not available.", win_oleErrorText()
ENDIF
RETURN
STATIC PROCEDURE Exm_PocketSOAP()
LOCAL oHttp := win_oleCreateObject( "PocketSOAP.HTTPTransport.2" )
LOCAL oEnvelope := win_oleCreateObject( "PocketSOAP.Envelope.2" )
IF ! Empty( oHttp ) .OR. ! Empty( oEnvelope )
oEnvelope:EncodingStyle := ""
oEnvelope:SetMethod( "InvertStringCase", "http:" + "//www.dataaccess.com/webservicesserver/" )
oEnvelope:Parameters:Create( "sAString", "lower UPPER" )
oHttp:Send( "https://www.dataaccess.com/webservicesserver/textcasing.wso?WSDL", oEnvelope:Serialize() )
oEnvelope:Parse( oHttp )
? oEnvelope:Parameters:Item( 0 ):Value
ELSE
? "Error: PocketSOAP not available.", win_oleErrorText()
ENDIF
RETURN
STATIC PROCEDURE Exm_CreateShortcut()
LOCAL oShell, oSC
IF ( oShell := win_oleCreateObject( "WScript.Shell" ) ) != NIL
oSC := oShell:CreateShortcut( hb_DirBase() + hb_ps() + "testole.lnk" )
oSC:TargetPath := hb_ProgName()
oSC:WorkingDirectory := hb_DirBase()
oSC:IconLocation := hb_ProgName() + ",0"
oSC:Save()
ELSE
? "Error: Shell not available. [" + win_oleErrorText() + "]"
ENDIF
RETURN
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Retomo Problema de uso de Word
Carlos.
Uso xHARBOUR.
A mi me funciona perfectamente bien.
Estamos tratando de colaborar con Antonio. ( remtec )
Saludos y gracias por el codigo.
Uso xHARBOUR.
A mi me funciona perfectamente bien.
Estamos tratando de colaborar con Antonio. ( remtec )
Saludos y gracias por el codigo.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Retomo Problema de uso de Word
Hola Carlos y Francisco
Eternamente agradecido por su ayuda tiempo invertido.
Estoy probando, para Informacion, uso FWH 17.09, Harbour, plataforma WIndows 10 64 bits y Office 365.
He probado el Codigo que me indico Francisco, para lo cual he abierto intencionalmente la plantilla DOCX, con Word y luego he ejecutado el codigo sugerido y cuelga el equipo, es decir, no llega al control de saber que el archivo esta abierto, lo que me obliga a formar el cierre del sistema, para liberar el equipo.
Como Francisco lo indico, dejo el codigo tal como lo estoy usando, destacando que uso 2 plantillas y 2 array de variables, ya que debo generar 2 archivos DOC, segun sea la necesidad del usuario.:
Ahora vere lo que me ha indicado Carlos.
Desde ya muchas gracias, esperando llegar a la solucion, por que ademas, tengo claro, que esto le servira a muchos otros colegas.
Saludos
Antonio.
Codigo:
Eternamente agradecido por su ayuda tiempo invertido.
Estoy probando, para Informacion, uso FWH 17.09, Harbour, plataforma WIndows 10 64 bits y Office 365.
He probado el Codigo que me indico Francisco, para lo cual he abierto intencionalmente la plantilla DOCX, con Word y luego he ejecutado el codigo sugerido y cuelga el equipo, es decir, no llega al control de saber que el archivo esta abierto, lo que me obliga a formar el cierre del sistema, para liberar el equipo.
Como Francisco lo indico, dejo el codigo tal como lo estoy usando, destacando que uso 2 plantillas y 2 array de variables, ya que debo generar 2 archivos DOC, segun sea la necesidad del usuario.:
Ahora vere lo que me ha indicado Carlos.
Desde ya muchas gracias, esperando llegar a la solucion, por que ademas, tengo claro, que esto le servira a muchos otros colegas.
Saludos
Antonio.
Codigo:
Code: Select all
Function Genera_Examen_Altura(nFicha,cTAte,dfec,cNom,cRut,nEdad,cNaci,cOtos,cVis,cPes,cAlt,cPart,cPul,cFres,cEle,cGli,cEva,cHem,cUre,cOri)
Local oWord, oSel, oDoc,cOrigen,cDestino,cFile,cSave, Nom1,rut1,naci1,cFilep,cSavep,cDestinop
local oActiveDoc,aArrReplace, n
IF MsgYesNo( "Desea Generar ARCHIVOS EXAMENES ALTURA / PRE-OCU ?","Ingrese Opción")
Do Case
Case Tip_Ate1=="A"
If (Empty(cNom).or.Empty(cRut).or.Empty(nEdad).or.Empty(cNaci).or.Empty(cOtos).or.Empty(cVis).or.Empty(cPes) .or. Empty(cAlt).or. Empty(cPart) .or. Empty(cPul).or.Empty(cFres).or.Empty(cEva).or.Empty(cEle).or.Empty(cGli))
Tone(3000)
MsgInfo("Revise, Faltan Relacionados a Examen de Altura")
Return .F.
Endif
MsgInfo( "Atención: " + CRLF +;
"En estos momentos Ud.Generará e Imprimirá" + CRLF +;
"Un Informe de Examen de Altura, por lo que" + CRLF +;
"Esperar hasta que se muestre un aviso con" + CRLF +;
"El Nombre del Informe Generado, en ese momento" + CRLF +;
"El Proceso habra terminado.")
Case Tip_Ate1=="P"
If (Empty(cNom).or.Empty(cRut).or.Empty(nEdad).or.Empty(cNaci).or.Empty(cOtos).or.Empty(cVis).or.Empty(cPes);
.or. Empty(cAlt).or. Empty(cPart) .or. Empty(cPul).or.Empty(cFres).or.Empty(cEva).or.Empty(cEle).or.Empty(cGli).or. Empty(cHem).or.Empty(cUre).or.Empty(cOri))
Tone(3000)
MsgInfo("Revise, Faltan Relacionados a Examen de Altura o Pre-Ocupacional")
Return .F.
Endif
MsgInfo( "Atención: " + CRLF +;
"En estos momentos Ud.Generará e Imprimirá" + CRLF +;
"Un Informe de Examen de Altura y un Pre-Ocupacional" + CRLF +;
"Esperar hasta que se muestre 2 avisos con El Nombre" + CRLF +;
"de los Informes Generados, en ese momento El Proceso" + CRLF +;
"habra terminado.")
EndCase
cNom:= AnsiToOem(cNom)
nEva:= aScan(aEvaMed, { | array | array[1] == cEva} )
cEva=aEvaMed[nEva ][2] // <--- Obtener Nombre del dato del arreglo
cEle:= AnsiToOem(cEle)
cGli:= AnsiToOem(cGli)
cOrigen := hb_CurDrive()+":\"+curdir()+"\Examenes\Doc_Bases\"
cDestinoa := hb_CurDrive()+":\"+curdir()+"\Examenes\Altura\"
cDestinop := hb_CurDrive()+":\"+curdir()+"\Examenes\Pre-Ocu\"
cFile := "AlturaBase9.docx"
cSave := "Altura-"+alltrim(Str(nFicha,10))+"-"+cNom+".doc"
cFilep := "PreocuBase9.docx"
cSavep := "Pre-"+alltrim(Str(nFicha,10))+"-"+cNom+".doc"
TRY
oWord := CreateObject("Word.Application")
CATCH
MsgInfo("Word no está instalado en esta PC. No se puede continuar")
Return NIL
END
TRY
oDoc := oWord:Documents:Open(cOrigen + cFile)
CATCH
MsgInfo("No se puede abrir el archivo plantilla " + cOrigen + cFile)
oWord:Quit()
Return NIL
END
? " AHORA VERA SI ESTA ABIERTO EL ARCHIVO"
if lDocAbierto(cFile) //variable que contiene path , nombre, y ext. del fichero modelo o plantilla
MsgStop("Documento " + cFile + " está abierto.","Alto")
Return .f.
endif
* oWord:Visible:=.T.
oDoc:Select()
oSel = oWord:Selection
// (nFicha,cTAte,dfec,cNom,cRut,nEdad,cNaci,cOtos,cVis,cPes,cAlt,cPArt,cPul,cFres,cEle,cGli,cEva)
// Crear Matriz de reemplazos
aArrReplace := { { "[nombrepaciente]", AllTrim(cNom) } ,;
{ "[rut]" , AllTrim(cRut) } ,;
{ "[edad]" , AllTrim(Str(nEdad,3)) } ,;
{ "[naciona]" , AllTrim(cNaci) },;
{ "[otos]" , AllTrim(cOtos) },;
{ "[visi]" , AllTrim(cVis) },;
{ "[pes]" , AllTrim(cPes) },;
{ "[alt]" , AllTrim(cAlt) },;
{ "[par]" , AllTrim(cPart) },;
{ "[pul]" , AllTrim(cPul) },;
{ "[fr]" , AllTrim(cFres) },;
{ "[eva]" , AllTrim(cEva) },;
{ "[ekg]" , AllTrim(cEle) },;
{ "[gli]" , AllTrim(cGli) },;
{ "[fate]" , Dtoc(dfec) } }
For n:=1 to Len(aArrReplace)
Reemplaza_Text_F2( oSel, aArrReplace[n][1], aArrReplace[n][2] )
Next n
oActiveDoc := oWord:Get("ActiveDocument")
oActiveDoc:SaveAs(cDestinoa + cSave)
* oActiveDoc:PrintOut()
oDoc:Close(0)
oWord:Quit()
SysRefresh()
MsgInfo(" Examen de Altura Generado "+cSave)
** Si Existe Pre-Ocupacional
If cTAte = "P"
TRY
oWord := CreateObject("Word.Application")
CATCH
MsgInfo("Word no está instalado en esta PC. No se puede continuar")
Return NIL
END
TRY
oDoc := oWord:Documents:Open(cOrigen + cFilep )
CATCH
MsgInfo("No se puede abrir el archivo plantilla " + cOrigen + cFilep)
oWord:Quit()
Return NIL
END
* oWord:Visible:=.T. // Para Mostrar
oDoc:Select()
oSel = oWord:Selection
// Crear Matriz de reemplazos
aArrReplace := { { "[nombrepaciente]", AllTrim(cNom) } ,;
{ "[rut]" , AllTrim(cRut) } ,;
{ "[edad]" , AllTrim(Str(nEdad,3)) } ,;
{ "[naciona]" , AllTrim(cNaci) },;
{ "[pes]" , AllTrim(cPes) },;
{ "[alt]" , AllTrim(cAlt) },;
{ "[par]" , AllTrim(cPart) },;
{ "[ekg]" , AllTrim(cEle) },;
{ "[eva]" , AllTrim(cEva) },;
{ "[gli]" , AllTrim(cGli) },;
{ "[hem]" , AllTrim(cHem) },;
{ "[ure]" , AllTrim(cUre) },;
{ "[ori]" , AllTrim(cOri) },;
{ "[fate]" , Dtoc(dfec) } }
For n:=1 to Len(aArrReplace)
Reemplaza_Text_F2( oSel, aArrReplace[n][1], aArrReplace[n][2] )
Next n
oActiveDoc := oWord:Get("ActiveDocument")
oActiveDoc:SaveAs(cDestinop + cSavep)
*oActiveDoc:PrintOut() // Si deseo Imprimir debo Habilitar
oDoc:Close(0)
oWord:Quit()
SysRefresh()
MsgInfo(" Examen de Pre-Ocupacional Generado "+cSavep)
Endif
** Fin Pre-Ocupa
Endif
Return nil
// Function de Francisco
Function lDocAbierto(cDocName)
local lOpen:=.f., nHand
If ( nHand := FOPEN(cDocName, FO_EXCLUSIVE ) ) = -1
lOpen := .t.
Else
FCLOSE( nHand )
Endif
Return lOpen
Re: Retomo Problema de uso de Word
Hola Antonio,
Me parece, según he visto tus mensajes que el problema este en el uso del Office 365, yo uso en varios equipos el MS Office Normal y no hay estos problemas que indicas.
Se me ocurre, a manera de comprobar que el problema es el Office 365, pruebes utilizando este otro software de oficina: https://www.wps.com/office
Este WPS Office es gratis, y lo tengo instalado también en otros equipos donde no hay licencia de MS Office, y hasta tiene 1Gb de almacenamiento en la nube para guardar documentos gratis.
Lo interesante también de WPS Office es que se comporta como si un MS Office estuviera instalado en el equipo, así que, todos las clases y funciones que utilizo para trabajar documentos Word y Excel, trabajan transparentemente (tFileXLS, TExcels, etc), hasta las tablas dinámicas de Excel me funcionan sin hacer ningún cambio, lago que con LibreOffice u otros no funciona.
Solo será de que des-instales el Office 365 del equipo e instales el WPS Office, y asi pruebas todo lo que tienes para el manejo de tus documentos Word, si todo funciona correctamente con este otro software de oficina.
Es una sugerencia que te hago, y espero pueda ayudarte a resolver tu problema.
Saludos cordiales
Carlos.
Me parece, según he visto tus mensajes que el problema este en el uso del Office 365, yo uso en varios equipos el MS Office Normal y no hay estos problemas que indicas.
Se me ocurre, a manera de comprobar que el problema es el Office 365, pruebes utilizando este otro software de oficina: https://www.wps.com/office
Este WPS Office es gratis, y lo tengo instalado también en otros equipos donde no hay licencia de MS Office, y hasta tiene 1Gb de almacenamiento en la nube para guardar documentos gratis.
Lo interesante también de WPS Office es que se comporta como si un MS Office estuviera instalado en el equipo, así que, todos las clases y funciones que utilizo para trabajar documentos Word y Excel, trabajan transparentemente (tFileXLS, TExcels, etc), hasta las tablas dinámicas de Excel me funcionan sin hacer ningún cambio, lago que con LibreOffice u otros no funciona.
Solo será de que des-instales el Office 365 del equipo e instales el WPS Office, y asi pruebas todo lo que tienes para el manejo de tus documentos Word, si todo funciona correctamente con este otro software de oficina.
Es una sugerencia que te hago, y espero pueda ayudarte a resolver tu problema.
Saludos cordiales
Carlos.
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Retomo Problema de uso de Word
Antonio, dos cosas:
1:
//Esto va aqui... antes del TRY...CATCH
2- Ahora sabemos que usas HARBOUR ( NO xHARBOUR ), por lo tanto, prueba con el codigo que posteó Carlos.
Saludos.
1:
//Esto va aqui... antes del TRY...CATCH
Code: Select all
if lDocAbierto(cFile) //variable que contiene path , nombre, y ext. del fichero modelo o plantilla
MsgStop("Documento " + cFile + " está abierto.","Alto")
Return .f.
endif
TRY
oWord := CreateObject("Word.Application")
CATCH
MsgInfo("Word no está instalado en esta PC. No se puede continuar")
Return NIL
END
TRY
oDoc := oWord:Documents:Open(cOrigen + cFile)
CATCH
MsgInfo("No se puede abrir el archivo plantilla " + cOrigen + cFile)
oWord:Quit()
Return NIL
END
Code: Select all
oWord := win_oleCreateObject( "Word.Application"
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Retomo Problema de uso de Word
Hola Francisco.
Mira aplique lo ultimo que me indicaste, claro que esta vez utilice un equipo con Windows XP y Office 2010, para ver otra opcion y me arroja el siguiente error, probado con la Plantilla Abierta en Word y ejecutando el sistema.
Muchas Gracias y Muchos Saludos
Antonio
Error:
Mira aplique lo ultimo que me indicaste, claro que esta vez utilice un equipo con Windows XP y Office 2010, para ver otra opcion y me arroja el siguiente error, probado con la Plantilla Abierta en Word y ejecutando el sistema.
Muchas Gracias y Muchos Saludos
Antonio
Error:
Code: Select all
En Esta Parte de la Function:
Function lDocAbierto(cDocName)
local lOpen:=.f., nHand
If ( nHand := FOPEN(cDocName, FO_EXCLUSIVE ) ) = -1 // Aqui es el Error de la Variable.
lOpen := .t.
Else
FCLOSE( nHand )
Endif
Return lOpen
Application
===========
Path and name: C:\Desa\FichasWin\MenuFicha.exe (32 bits)
Size: 4,574,208 bytes
Compiler version: Harbour 3.2.0dev (r1506171039)
FiveWin version: FWH 17.09
C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
Windows version: 5.1, Build 2600 Service Pack 3
Time from start: 0 hours 2 mins 2 secs
Error occurred at: 11/10/2019, 13:33:11
Error description: Error BASE/1003 No existe la variable: FO_EXCLUSIVE
Stack Calls
===========
Called from: .\ActuaConsu.PRG => LDOCABIERTO( 2835 )
Called from: .\ActuaConsu.PRG => GENERA_EXAMEN_ALTURA( 2704 )
Called from: .\ActuaConsu.PRG => (b)EXAMEN_ALTURA( 2561 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 684 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 924 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONDOWN( 862 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1718 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1873 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
Called from: .\ActuaConsu.PRG => EXAMEN_ALTURA( 2574 )
Called from: .\ActuaConsu.PRG => (b)MENU_FICHA( 1143 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 684 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 924 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1873 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
Called from: .\ActuaConsu.PRG => MENU_FICHA( 1176 )
Called from: .\ActuaConsu.PRG => (b)ACTUA_ATEN( 88 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 684 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 924 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1873 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
Called from: .\ActuaConsu.PRG => ACTUA_ATEN( 108 )
Called from: .\MenuFicha.PRG => (b)MAIN( 78 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 684 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 924 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1873 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1037 )
Called from: .\MenuFicha.PRG => MAIN( 105 )
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Retomo Problema de uso de Word
Por favor postea el error que se genera, y disculpa, olvidé comentarte que es una funcion de bajo nivel y usa fileio.ch*
Pon al inicio del fichero principal de tu programa #include "fileio.ch", o usalo como variable local. ej local FO_EXCLUSIVE := 16
--------------------------------------------------------------------
//Fileio.ch
OPEN MODES:
FO_READ 0 Open file for reading
FO_WRITE 1 Open file for writing
FO_READWRITE 2 Open file for reading and writing
SHARING MODES:
FO_COMPAT 0 Compatibility mode
FO_EXCLUSIVE 16 Exclusive use
FO_DENYWRITE 32 Prevent other applications from writing
FO_DENYREAD 48 Prevent other applications from reading
FO_DENYNONE 64 Allow others to read or write
FO_SHARED 64 Same as FO_DENYNONE
Pon al inicio del fichero principal de tu programa #include "fileio.ch", o usalo como variable local. ej local FO_EXCLUSIVE := 16
--------------------------------------------------------------------
//Fileio.ch
OPEN MODES:
FO_READ 0 Open file for reading
FO_WRITE 1 Open file for writing
FO_READWRITE 2 Open file for reading and writing
SHARING MODES:
FO_COMPAT 0 Compatibility mode
FO_EXCLUSIVE 16 Exclusive use
FO_DENYWRITE 32 Prevent other applications from writing
FO_DENYREAD 48 Prevent other applications from reading
FO_DENYNONE 64 Allow others to read or write
FO_SHARED 64 Same as FO_DENYNONE
Last edited by FranciscoA on Sat Oct 12, 2019 6:44 pm, edited 1 time in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Retomo Problema de uso de Word
Hola Francisco.
Mira probé el código en Windows 10 64 bist y Office 365.
Resultado:
Siempre emite mensaje de " Documento AlturaBase9.docx está abierto ", aun cuando Word esta cerrado y ninguna plantilla abierta.
Muchos Saludos
Antonio
Dejo El codigo en ejecucion:
Mira probé el código en Windows 10 64 bist y Office 365.
Resultado:
Siempre emite mensaje de " Documento AlturaBase9.docx está abierto ", aun cuando Word esta cerrado y ninguna plantilla abierta.
Muchos Saludos
Antonio
Dejo El codigo en ejecucion:
Code: Select all
Function Genera_Examen_Altura(nFicha,cTAte,dfec,cNom,cRut,nEdad,cNaci,cOtos,cVis,cPes,cAlt,cPart,cPul,cFres,cEle,cGli,cEva,cHem,cUre,cOri)
Local oWord, oSel, oDoc,cOrigen,cDestino,cFile,cSave, Nom1,rut1,naci1,cFilep,cSavep,cDestinop
local oActiveDoc,aArrReplace, n
IF MsgYesNo( "Desea Generar ARCHIVOS EXAMENES ALTURA / PRE-OCU ?","Ingrese Opción")
Do Case
Case Tip_Ate1=="A"
If (Empty(cNom).or.Empty(cRut).or.Empty(nEdad).or.Empty(cNaci).or.Empty(cOtos).or.Empty(cVis).or.Empty(cPes) .or. Empty(cAlt).or. Empty(cPart) .or. Empty(cPul).or.Empty(cFres).or.Empty(cEva).or.Empty(cEle).or.Empty(cGli))
Tone(3000)
MsgInfo("Revise, Faltan Datos Relacionados a Examen de Altura")
Return .F.
Endif
MsgInfo( "Atención: " + CRLF +;
"En estos momentos Ud.Generará e Imprimirá" + CRLF +;
"Un Informe de Examen de Altura, por lo que" + CRLF +;
"Esperar hasta que se muestre un aviso con" + CRLF +;
"El Nombre del Informe Generado, en ese momento" + CRLF +;
"El Proceso habra terminado.")
Case Tip_Ate1=="P"
If (Empty(cNom).or.Empty(cRut).or.Empty(nEdad).or.Empty(cNaci).or.Empty(cOtos).or.Empty(cVis).or.Empty(cPes);
.or. Empty(cAlt).or. Empty(cPart) .or. Empty(cPul).or.Empty(cFres).or.Empty(cEva).or.Empty(cEle).or.Empty(cGli).or. Empty(cHem).or.Empty(cUre).or.Empty(cOri))
Tone(3000)
MsgInfo("Revise, Faltan Relacionados a Examen de Altura o Pre-Ocupacional")
Return .F.
Endif
MsgInfo( "Atención: " + CRLF +;
"En estos momentos Ud.Generará e Imprimirá" + CRLF +;
"Un Informe de Examen de Altura y un Pre-Ocupacional" + CRLF +;
"Esperar hasta que se muestre 2 avisos con El Nombre" + CRLF +;
"de los Informes Generados, en ese momento El Proceso" + CRLF +;
"habra terminado.")
EndCase
cNom:= AnsiToOem(cNom)
nEva:= aScan(aEvaMed, { | array | array[1] == cEva} )
cEva=aEvaMed[nEva ][2] // <--- Obtener Nombre del dato del arreglo
cEle:= AnsiToOem(cEle)
cGli:= AnsiToOem(cGli)
cOrigen := hb_CurDrive()+":\"+curdir()+"\Examenes\Doc_Bases\"
cDestinoa := hb_CurDrive()+":\"+curdir()+"\Examenes\Altura\"
cDestinop := hb_CurDrive()+":\"+curdir()+"\Examenes\Pre-Ocu\"
cFile := "AlturaBase9.docx"
cSave := "Altura-"+alltrim(Str(nFicha,10))+"-"+cNom+".doc"
cFilep := "PreocuBase9.docx"
cSavep := "Pre-"+alltrim(Str(nFicha,10))+"-"+cNom+".doc"
If lDocAbierto(cFile) //variable que contiene path , nombre, y ext. del fichero modelo o plantilla
MsgStop("Documento " + cFile + " está abierto.","Alto")
Return .f.
endif
TRY
oWord := win_oleCreateObject( "Word.Application")
CATCH
MsgInfo("Word no está instalado en esta PC. No se puede continuar")
Return NIL
END
TRY
oDoc := oWord:Documents:Open(cOrigen + cFile)
CATCH
MsgInfo("No se puede abrir el archivo plantilla " + cOrigen + cFile)
oWord:Quit()
Return NIL
END
* oWord:Visible:=.T.
oDoc:Select()
oSel = oWord:Selection
// (nFicha,cTAte,dfec,cNom,cRut,nEdad,cNaci,cOtos,cVis,cPes,cAlt,cPArt,cPul,cFres,cEle,cGli,cEva)
// Crear Matriz de reemplazos
aArrReplace := { { "[nombrepaciente]", AllTrim(cNom) } ,;
{ "[rut]" , AllTrim(cRut) } ,;
{ "[edad]" , AllTrim(Str(nEdad,3)) } ,;
{ "[naciona]" , AllTrim(cNaci) },;
{ "[otos]" , AllTrim(cOtos) },;
{ "[visi]" , AllTrim(cVis) },;
{ "[pes]" , AllTrim(cPes) },;
{ "[alt]" , AllTrim(cAlt) },;
{ "[par]" , AllTrim(cPart) },;
{ "[pul]" , AllTrim(cPul) },;
{ "[fr]" , AllTrim(cFres) },;
{ "[eva]" , AllTrim(cEva) },;
{ "[ekg]" , AllTrim(cEle) },;
{ "[gli]" , AllTrim(cGli) },;
{ "[fate]" , Dtoc(dfec) } }
For n:=1 to Len(aArrReplace)
Reemplaza_Text_F2( oSel, aArrReplace[n][1], aArrReplace[n][2] )
Next n
oActiveDoc := oWord:Get("ActiveDocument")
oActiveDoc:SaveAs(cDestinoa + cSave)
* oActiveDoc:PrintOut()
oDoc:Close(0)
oWord:Quit()
SysRefresh()
MsgInfo(" Examen de Altura Generado "+cSave)
** Si Existe Pre-Ocupacional
If cTAte = "P"
If lDocAbierto(cFilep) //variable que contiene path , nombre, y ext. del fichero modelo o plantilla
MsgStop("Documento " + cFilep + " está abierto.","Alto")
Return .f.
endif
TRY
oWord := win_oleCreateObject( "Word.Application")
CATCH
MsgInfo("Word no está instalado en esta PC. No se puede continuar")
Return NIL
END
TRY
oDoc := oWord:Documents:Open(cOrigen + cFilep )
CATCH
MsgInfo("No se puede abrir el archivo plantilla " + cOrigen + cFilep)
oWord:Quit()
Return NIL
END
* oWord:Visible:=.T. // Para Mostrar
oDoc:Select()
oSel = oWord:Selection
// Crear Matriz de reemplazos
aArrReplace := { { "[nombrepaciente]", AllTrim(cNom) } ,;
{ "[rut]" , AllTrim(cRut) } ,;
{ "[edad]" , AllTrim(Str(nEdad,3)) } ,;
{ "[naciona]" , AllTrim(cNaci) },;
{ "[pes]" , AllTrim(cPes) },;
{ "[alt]" , AllTrim(cAlt) },;
{ "[par]" , AllTrim(cPart) },;
{ "[ekg]" , AllTrim(cEle) },;
{ "[eva]" , AllTrim(cEva) },;
{ "[gli]" , AllTrim(cGli) },;
{ "[hem]" , AllTrim(cHem) },;
{ "[ure]" , AllTrim(cUre) },;
{ "[ori]" , AllTrim(cOri) },;
{ "[fate]" , Dtoc(dfec) } }
For n:=1 to Len(aArrReplace)
Reemplaza_Text_F2( oSel, aArrReplace[n][1], aArrReplace[n][2] )
Next n
oActiveDoc := oWord:Get("ActiveDocument")
oActiveDoc:SaveAs(cDestinop + cSavep)
*oActiveDoc:PrintOut() // Si deseo Imprimir debo Habilitar
oDoc:Close(0)
oWord:Quit()
SysRefresh()
MsgInfo(" Examen de Pre-Ocupacional Generado "+cSavep)
Endif
** Fin Pre-Ocupa
Endif
Return nil
//---------------------------------------------------//
Static Function Reemplaza_Text_F2( oSel, cSrc, cRpl)
Local wdCollapseEnd:=0
LOCAL oRng := oSel:Document:Content
IF AT( cSrc, oRng:Text ) = 0
RETURN .F.
ENDIF
WHILE oRng:Find:Execute( cSrc )
oRng:Text = cRpl
oRng:Collapse( wdCollapseEnd )
ENDDO
RETURN .T.
Function lDocAbierto(cDocName)
Local FO_EXCLUSIVE := 16
local lOpen:=.f., nHand
If ( nHand := FOPEN(cDocName, FO_EXCLUSIVE ) ) = -1
lOpen := .t.
Else
FCLOSE( nHand )
Endif
Return lOpen
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Retomo Problema de uso de Word
Antonio.
cOrigen := hb_CurDrive()+":\"+curdir()+"\Examenes\Doc_Bases\"
cFile := "AlturaBase9.docx"
Por otra parte, resolviste con
oWord := win_oleCreateObject( "Word.Application") ?
cOrigen := hb_CurDrive()+":\"+curdir()+"\Examenes\Doc_Bases\"
cFile := "AlturaBase9.docx"
Code: Select all
If lDocAbierto(cOrigen + cFile) [b] //variable que contiene path , nombre, y ext. del fichero modelo o plantilla[/b]
MsgStop("Documento " + cFile + " está abierto.","Alto")
Return .f.
endif
oWord := win_oleCreateObject( "Word.Application") ?
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Retomo Problema de uso de Word
Hola Francisco
He realizado tu cambio, pero la otra consulta si esta aplicado la sugerencia de Carlos.
oWord := win_oleCreateObject( "Word.Application")
El Mensaje al ejecutar el programa es el mismo " Archivo Abierto ", aun cuando tanto Word como las Planillas no se encuentran abiertos.
El Codigo esta publicado en Post anterior.
Creo que debo pensar a nadie mas le ha sucedido este error.
Muchos Saludos
Antonio.
He realizado tu cambio, pero la otra consulta si esta aplicado la sugerencia de Carlos.
oWord := win_oleCreateObject( "Word.Application")
El Mensaje al ejecutar el programa es el mismo " Archivo Abierto ", aun cuando tanto Word como las Planillas no se encuentran abiertos.
El Codigo esta publicado en Post anterior.
Creo que debo pensar a nadie mas le ha sucedido este error.
Muchos Saludos
Antonio.
Re: Retomo Problema de uso de Word
Hola Francisco
Sigo trabajando en lo mismo.
Al usar este codigo, el sistema arroja un error.
oWord := win_oleCreateObject( "Word.Application")
Called from: => WIN_OLEAUTO:GET( 0 )
oActiveDoc := oWord:Get("ActiveDocument") <===== En esta Linea se produce el Error.
Muchos Saludos.
Antonio
Sigo trabajando en lo mismo.
Al usar este codigo, el sistema arroja un error.
oWord := win_oleCreateObject( "Word.Application")
Called from: => WIN_OLEAUTO:GET( 0 )
oActiveDoc := oWord:Get("ActiveDocument") <===== En esta Linea se produce el Error.
Muchos Saludos.
Antonio
Code: Select all
Application
===========
Path and name: C:\Desa\FichasWin\MenuFicha.exe (32 bits)
Size: 4,591,104 bytes
Compiler version: Harbour 3.2.0dev (r1506171039)
FiveWin version: FWH 17.09
C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
Windows version: 6.2, Build 9200
Time from start: 0 hours 0 mins 27 secs
Error occurred at: 12/10/2019, 23:22:35
Error description: (DOS Error -2147352570) WINOLE/1009 No existe el m‚todo: GET
Args:
[ 1] = C ActiveDocument
Stack Calls
===========
Called from: => WIN_OLEAUTO:GET( 0 )
Called from: .\ActuaConsu.PRG => GENERA_EXAMEN_ALTURA( 2764 )
Called from: .\ActuaConsu.PRG => (b)EXAMEN_ALTURA( 2571 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 684 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 924 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1873 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
Called from: .\ActuaConsu.PRG => EXAMEN_ALTURA( 2584 )
Called from: .\ActuaConsu.PRG => (b)MENU_FICHA( 1149 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 684 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 924 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1873 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
Called from: .\ActuaConsu.PRG => MENU_FICHA( 1182 )
Called from: .\ActuaConsu.PRG => (b)ACTUA_ATEN( 89 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 684 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 924 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1873 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
Called from: .\ActuaConsu.PRG => ACTUA_ATEN( 109 )
Called from: .\MenuFicha.PRG => (b)MAIN( 78 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 684 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 924 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1873 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1037 )
Called from: .\MenuFicha.PRG => MAIN( 105 )
System
======
CPU type: Intel(R) Core(TM) i7-4510U CPU @ 2.00GHz 2594 Mhz
Hardware memory: 8085 megs
Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %
Windows total applications running: 5
1 ,
2 , C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.17763.771_none_589374
3 DDE Server Window, C:\WINDOWS\System32\OLE32.DLL
4 G, C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17763.771_none_7e486aec7632615
5 HardwareMonitorWindow, C:\Desa\FichasWin\MenuFicha.exe
Variables in use
================
Procedure Type Value
==========================
WIN_OLEAUTO:GET
Param 1: O Class: ERROR
GENERA_EXAMEN_ALTURA
Param 1: C "ActiveDocument"
Local 1: P 0x4EC386C
Local 2: U
(b)EXAMEN_ALTURA
Param 1: N 46512
Param 2: C "A"
Param 3: D 12/10/2019
Param 4: C "CARMEN BADILLA CARILAO"
Param 5: C "10.230.995-2"
Param 6: N 58
Param 7: C "CHILENA "
Param 8: C "NORMAL "
Param 9: C "NORMAL "
Param 10: C "210 "
Param 11: C "190 "
Param 12: C "160/20 "
Param 13: C "RANGO NORMAL"
Param 14: C "RANGO NORMAL"
Param 15: C "Compatible con Actividad Laboral"
Param 16: C "COMPATIBLE CON ACTIVIDAD LABORAL "
Param 17: C "APROBADA"
Param 18: C " "
Param 19: C " "
Param 20: C " "
Local 1: O Class: WIN_OLEAUTO
Local 2: O Class: WIN_OLEAUTO
Local 3: O Class: WIN_OLEAUTO
Local 4: C "C:\Desa\FichasWin\Examenes\Doc_Bases\"
Local 5: C "AlturaBase9.docx"
Local 6: C "Altura-46512-CARMEN BADILLA CARILAO.doc"
Local 7: C "PreocuBase9.docx"
Local 8: C "Pre-46512-CARMEN BADILLA CARILAO.doc"
Local 9: C "C:\Desa\FichasWin\Examenes\Pre-Ocu\"
Local 10: U
Local 11: A Len: 15
Local 12: N 16
TBTNBMP:CLICK
Param 1: O Class: TBTNBMP
TBTNBMP:LBUTTONUP
TCONTROL:HANDLEEVENT
Param 1: N 35
Param 2: N 45
Param 3: N 0
Local 1: L .T.
Local 2: N 0
Local 3: S
TBTNBMP:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 2293805
Local 1: U
_FWH
Param 1: N 514
Param 2: N 0
Param 3: N 2293805
DIALOGBOXINDIRECT
Param 1: N 2293805
Param 2: N 514
Param 3: N 0
Param 4: N 2293805
Param 5: N 105
Local 1: O Class: TBTNBMP
TDIALOG:ACTIVATE
Param 1: N 4194304
Param 2: C " @ 8 LÿÏÿ}( P d* – B U T T O N P
— S T A T I C S r ( a ) : C A R M E N B A D I L L A C A R I L A O P
¤ ˜ S T A T I C R . u . t . : 1 0 . 2 3 0 . 9 9 5 - 2 P d u ™ S T A T I C E d a d : 5 8 A ñ o s P © é š S T A T I C U l t i m a A t e n c i ó n : 1 2 / 1 0 / 2 0 1 9 P
› S T A T I C P a t o l o g í a : P
- I œ S T A T I C T i p o P a g o P - = S T A T I C N º B o n o P - ( ž S T A T I C V a l o r P 9 Ÿ B U T T O N P
A t S T A T I C T i p o d e A t e n c i ó n ¡P K @ _ – ¡ C O M B O B O X P T = ¢ B U T T O N E X A M E N D E A L T U R A F I S I C A P
a „ £ S T A T I C E x a m e n O t o s c o p i a P a } ¤ S T A T I C E x a m e n d e V i s i ó n € P W a 6
¥ E D I T N O R M A L € P ã a 6
¦ E D I T N O R M A L P
u † § S T A T I C E l e c t r o c a r d i o g r a m a P
‡ ¨ S T A T I C E x a m e n d e G l i c e m i a € P W r ¥
© E D I T C O M P A T I B L E C O N A C T I V I D A D L A B O R A L € P W ¥
ª E D I T C O M P A T I B L E C O N A C T I V I D A D L A B O R A L P – « B U T T O N E X A M E N P R E - O C U P A C I O N A L P
¤ U ¬ S T A T I C H e m o g r a m a P x ¤ 0 S T A T I C U r e m i a P Ò ¤ % ® S T A T I C O r i n a € P 8 ¤ 6
¯ E D I T € P ” ¤ 6
° E D I T € P é ¤ 6
± E D I T ¡P 1 - _ – ² C O M B O B O X € P À - B
³ E D I T 4 3 6 4 3 4 € P $- (
´ E D I T 1 2 , 0 4 0 P ¶ µ B U T T O N P
¾ ž ¶ S T A T I C E V A L U A C I O N M E D I C A ¡P _ ½ < P · C O M B O B O X P Ñ -" ¸ B U T T O N P
Ü } ¹ S T A T I C O b s e r v a c i ó n F í s i c a € P P Ü ¾
º E D I T H S G H G F D G P í -' » B U T T O N E X A M E N F I S I C O P
ø @ ¼ S T A T I C P r e s . A r t . P d ø K ½ S T A T I C F r e c . R e s p . P Ó ø % ¾ S T A T I C P u l s o P
A ¿ S T A T I C F r e c . C a r . P d ' À S T A T I C T e m p P ° ! Á S T A T I C P e s o P ð * Â S T A T I C A l t u r a € P - ø (
à E D I T 1 6 0 / 2 0 € P ø A
Ä E D I T R A N G O N O R M A L € P ê ø A
Å E D I T R A N G O N O R M A L € P - (
Æ E D I T N O R M A L 1 € P } (
Ç E D I T N O R M A L 2 € P Å !
È E D I T 2 1 0 € P
!
É E D I T 1 9 0 P =_ 6 µ Ê B U T T O N A C C I O N E S P Es ' # Ë T B T N B M P I M P R I M E P E¯ ' # Ì T B T N B M P G R A B A P Eë ' # Í T B T N B M P S A L I R "
Param 3: N 3541894
Param 4: O Class: TDIALOG
EXAMEN_ALTURA
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: B {|| ... }
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Local 1: N 3541894
Local 2: S
Local 3: O Class: TDIALOG
(b)MENU_FICHA
Param 1: N 46512
Local 1: O Class: TDIALOG
Local 2: O Class: TFONT
Local 3: O Class: TFONT
Local 4: O Class: TGROUP
Local 5: O Class: TGROUP
Local 6: O Class: TFONT
Local 7: O Class: TGROUP
Local 8: O Class: TFONT
Local 9: O Class: TGROUP
Local 10: O Class: TGROUP
Local 11: O Class: TGET
Local 12: O Class: TGET
Local 13: O Class: TGET
Local 14: O Class: TGET
Local 15: O Class: TGET
Local 16: O Class: TGET
Local 17: O Class: TGET
Local 18: O Class: TGET
Local 19: O Class: TGET
Local 20: O Class: TGET
Local 21: O Class: TGET
Local 22: O Class: TGET
Local 23: O Class: TGET
Local 24: O Class: TGET
Local 25: O Class: TGET
Local 26: O Class: TGET
Local 27: O Class: TGET
Local 28: O Class: TBTNBMP
Local 29: O Class: TSAY
Local 30: O Class: TSAY
Local 31: O Class: TSAY
Local 32: O Class: TSAY
Local 33: O Class: TSAY
Local 34: O Class: TSAY
Local 35: O Class: TSAY
Local 36: O Class: TSAY
Local 37: U
Local 38: O Class: TCOMBOBOX
TBTNBMP:CLICK
Param 1: O Class: TBTNBMP
TBTNBMP:LBUTTONUP
TCONTROL:HANDLEEVENT
Param 1: N 30
Param 2: N 115
Param 3: N 0
Local 1: L .T.
Local 2: N 0
Local 3: S
TBTNBMP:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 1966195
Local 1: U
_FWH
Param 1: N 514
Param 2: N 0
Param 3: N 1966195
DIALOGBOXINDIRECT
Param 1: N 1966195
Param 2: N 514
Param 3: N 0
Param 4: N 1966195
Param 5: N 45
Local 1: O Class: TBTNBMP
TDIALOG:ACTIVATE
Param 1: N 4194304
Param 2: C " @ ŽÿÑÿ@ P 25 € B U T T O N P
à S T A T I C S r ( a ) : C A R M E N B A D I L L A C A R I L A O P
¤ ‚ S T A T I C R . u . t . : 1 0 . 2 3 0 . 9 9 5 - 2 P d u ƒ S T A T I C E d a d : 5 8 A ñ o s P © é „ S T A T I C U l t i m a A t e n c i ó n : 1 2 / 1 0 / 2 0 1 9 P
! … S T A T I C P a t o l o g í a : P 7 ç Ó † B U T T O N S e c c i o n e s P F ‡ T B T N B M P A N A M N E S I S - E X A M E N F I S I C O
A N T E C E D E N T E S M O R B I D O S P Í K ˆ T B T N B M P P n ‰ T B T N B M P C A B E Z A Y T O R A X
( F a r i n g e - C u e l l o - C o r a z ó n - P u l m o n ) P Í s Š T B T N B M P P – ‹ T B T N B M P A B D O M E N ( C i c a t r i c e s )
E X T R E M I D A D E S - D I A G N O S T I C O P Í Œ T B T N B M P P ¾ T B T N B M P I N D I C A C I O N E S Y L I C E N C I A
F E C H A D E C O N T R O L P Í È Ž T B T N B M P P æ T B T N B M P E X A M E N E S D E A L T U R A
Y P R E O C U P A C I O N A L P Í ë T B T N B M P P ü < - ‘ T B T N B M P G R A B A P ü f - ’ T B T N B M P E S Q U E M A P ü ‘ - “ T B T N B M P A L T U R A P ü » - ” T B T N B M P F I C . B A S E P ü é - • T B T N B M P S A L I R "
Param 3: N 7407940
Param 4: O Class: TDIALOG
MENU_FICHA
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Local 1: N 7407940
Local 2: S
Local 3: O Class: TDIALOG
(b)ACTUA_ATEN
Param 1: N 46512
Param 2: C "BADILLA CARILAO"
Param 3: C "CARMEN"
Local 1: O Class: TDIALOG
Local 2: O Class: TFONT
Local 3: O Class: TSAY
Local 4: O Class: TFONT
Local 5: O Class: TBTNBMP
Local 6: O Class: TSAY
Local 7: O Class: TSAY
Local 8: O Class: TSAY
Local 9: O Class: TSAY
Local 10: O Class: TBTNBMP
Local 11: C "S"
Local 12: C "N"
Local 13: C "N"
Local 14: C "N"
Local 15: C "S"
TBTNBMP:CLICK
Param 1: O Class: TBTNBMP
TBTNBMP:LBUTTONUP
TCONTROL:HANDLEEVENT
Param 1: N 33
Param 2: N 17
Param 3: N 0
Local 1: L .T.
Local 2: N 0
Local 3: S
TBTNBMP:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 2162705
Local 1: U
_FWH
Param 1: N 514
Param 2: N 0
Param 3: N 2162705
DIALOGBOXINDIRECT
Param 1: N 2162705
Param 2: N 514
Param 3: N 0
Param 4: N 2162705
Param 5: N 25
Local 1: O Class: TBTNBMP
TDIALOG:ACTIVATE
Param 1: N 4194304
Param 2: C " @ Ã P P ¼ i S T A T I C A T E N C I O N D E P A C I E N T E S D I A 1 2 / 1 0 / 2 0 1 9 !P
|(j T X B R O W S E F i c _ T e m p P †ÿ k T B T N B M P S A L I R P ÿ l T B T N B M P B U S C A R P Z ÿ m T B T N B M P F I C H A P – ÿ n T B T N B M P A T E N C . P Ò ÿ # o T B T N B M P E L I M I N A P ÿ # p T B T N B M P M O D I F I P Jÿ - q T B T N B M P T O T . L I C E N "
Param 3: N 3409866
Param 4: O Class: TDIALOG
ACTUA_ATEN
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Local 1: N 3409866
Local 2: S
Local 3: O Class: TDIALOG
(b)MAIN
Local 1: O Class: TDIALOG
Local 2: O Class: TXBROWSE
Local 3: O Class: TXBRWCOLUMN
Local 4: O Class: TSAY
Local 5: O Class: TFONT
Local 6: O Class: TFONT
Local 7: O Class: TFONT
TBTNBMP:CLICK
Param 1: O Class: TBTNBMP
TBTNBMP:LBUTTONUP
TCONTROL:HANDLEEVENT
Param 1: N 20
Param 2: N 14
Param 3: N 0
Local 1: L .T.
Local 2: N 0
Local 3: S
TBTNBMP:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 1310734
Local 1: U
_FWH
Param 1: N 514
Param 2: N 0
Param 3: N 1310734
WINRUN
Param 1: N 1310734
Param 2: N 514
Param 3: N 0
Param 4: N 1310734
Param 5: N 3
Local 1: O Class: TBTNBMP
TWINDOW:ACTIVATE
Param 1: N 3409866
MAIN
Param 1: C "MAXIMIZED"
Param 2: U
Param 3: U
Param 4: U
Param 5: U
Param 6: U
Param 7: U
Param 8: B {|| ... }
Param 9: U
Param 10: U
Param 11: U
Param 12: U
Param 13: U
Param 14: U
Param 15: U
Param 16: U
Param 17: B {|| ... }
Param 18: U
Param 19: U
Param 20: L .F.
Local 1: O Class: TWINDOW
Local 2: U
Local 3: U
Linked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFCDX
DBFNTX
DataBases in use
================
3: FIC_TEMP RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 5 .F. .F.
Indexes in use TagName
=> dtos(ctod(Fec_Ate))+str(Nro_Ate,3) FIC1
Nro_Fic FIC2
Relations in use
8: => LICENCIA RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 5 .F. .F.
Indexes in use TagName
dtos(ctod(fec_emi))+tip_lic+str(nroLIC1
rut_pac+dtos(ctod(fec_emi)) LIC2
rut_pac+tip_lic+nro_lic LIC3
=> str(nro_fic,10)+dtos(ctod(Fec_Ate))LIC4
Relations in use
Classes in use:
===============
1 ERROR
2 HBCLASS
3 HBOBJECT
4 TCURSOR
5 TFONT
6 TWINDOW
7 TDIALOG
8 TBRUSH
9 TCONTROL
10 TBITMAP
11 TSAY
12 TGET
13 GET
14 TCLIPGET
15 TBUTTON
16 TRECT
17 TREG32
18 TMENU
19 TMENUITEM
20 TBAR
21 TBTNBMP
22 TMSGBAR
23 TMSGITEM
24 TTIMER
25 TXBROWSE
26 TXBRWCOLUMN
27 TSCROLLBAR
28 TCLIPBOARD
29 TGROUP
30 TCOMBOBOX
31 WIN_OLEAUTO
32 TSTRUCT
Memory Analysis
===============
400 Static variables
Dynamic memory consume:
Actual Value: 0 bytes
Highest Value: 0 bytes