Retomo Problema de uso de Word "FUNCIONANDO"

Retomo Problema de uso de Word "FUNCIONANDO"

Postby remtec » Thu Oct 10, 2019 3:55 pm

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.

viewtopic.php?f=6&t=37799

Muchos Saludos

Antonio.
Last edited by remtec on Sun Oct 13, 2019 5:24 pm, edited 1 time in total.
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Retomo Problema de uso de Word

Postby FranciscoA » Thu Oct 10, 2019 6:56 pm

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.

viewtopic.php?f=6&t=37799

Muchos Saludos

Antonio.



Prueba esta function:

Code: Select all  Expand view
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
 


Te sugiero postees exactamente el codigo como lo estás utilizando, para que otros usuarios se decidan a revisarlo y darte las recomendaciones pertinentes:
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()


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.



Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Retomo Problema de uso de Word

Postby FranciscoA » Thu Oct 10, 2019 7:36 pm

Vamos... colegas.
Se necesita de sus comentarios y/o ejemplos.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Retomo Problema de uso de Word

Postby carlos vargas » Thu Oct 10, 2019 8:46 pm

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
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Retomo Problema de uso de Word

Postby carlos vargas » Thu Oct 10, 2019 8:49 pm

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  Expand view
/*
 * 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)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Retomo Problema de uso de Word

Postby FranciscoA » Thu Oct 10, 2019 9:35 pm

Carlos.
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.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Retomo Problema de uso de Word

Postby remtec » Fri Oct 11, 2019 1:37 am

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:
Code: Select all  Expand view

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

FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Retomo Problema de uso de Word

Postby csincuir » Fri Oct 11, 2019 1:02 pm

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.
csincuir
 
Posts: 396
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Retomo Problema de uso de Word

Postby FranciscoA » Fri Oct 11, 2019 3:35 pm

Antonio, dos cosas:

1:
//Esto va aqui... antes del TRY...CATCH
Code: Select all  Expand view
               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
 


2- Ahora sabemos que usas HARBOUR ( NO xHARBOUR ), por lo tanto, prueba con el codigo que posteó Carlos.
Code: Select all  Expand view
oWord := win_oleCreateObject( "Word.Application"
 
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Retomo Problema de uso de Word

Postby remtec » Fri Oct 11, 2019 4:41 pm

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:
Code: Select all  Expand view


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 )

 
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Retomo Problema de uso de Word

Postby FranciscoA » Sat Oct 12, 2019 1:08 pm

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
Last edited by FranciscoA on Sat Oct 12, 2019 6:44 pm, edited 1 time in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Retomo Problema de uso de Word

Postby remtec » Sat Oct 12, 2019 3:34 pm

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:
Code: Select all  Expand view


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

FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Retomo Problema de uso de Word

Postby FranciscoA » Sat Oct 12, 2019 6:08 pm

Antonio.
cOrigen  := hb_CurDrive()+":\"+curdir()+"\Examenes\Doc_Bases\"
  cFile := "AlturaBase9.docx"  

 
Code: Select all  Expand view
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


Por otra parte, resolviste con
oWord := win_oleCreateObject( "Word.Application") ?
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Retomo Problema de uso de Word

Postby remtec » Sun Oct 13, 2019 1:40 am

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.
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Retomo Problema de uso de Word

Postby remtec » Sun Oct 13, 2019 2:34 am

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

Code: Select all  Expand view

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

 
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

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

cron