--------------------------------------------------------------------------------------------
"Quando este documento for aberto, o seguinte comando SQL será executado:
SELECT * FROM CTOWORD
Os dados do banco de dados serão inseridos no documento. Deseja continuar?
(SIM) (NÃO)
--------------------------------------------------------------------------------------------
... clicando em SIM o Word abre o arquivo documento com os dados do CTOWORD.DBF mesclados corretamente. Uso a versao 2003 do Word e lembro que num Word de versao anterior (2000) isso nao ocorria.
* outra observação: uso o Xharbour 0.99.70 e nao gostaria de utilizar a classe TWORD e a FIVEWIN por muitas mudanças que terei de fazer.
Segue o fonte:
- Code: Select all Expand view
IF LASTKEY() = -7
* obtendo vars para o contrato no Word...
WD_CPF=""
TCODY=CLIENTE
CLI->(DBSEEK(TCODY))
WD_LOC = CLI->NOME
WD_PJPF = CLI->PESSOA
IF WD_PJPF = "F"
WD_CPF = ALLTRIM(TRANS(CLI->CPF_CGC,"@R 999.999.999-99"))
ELSEIF WD_PJPF= "J"
WD_CPF = ALLTRIM(TRANS(CLI->CPF_CGC,"@R 99.999.999/9999-99"))
ENDIF
WD_ENDER = CLI->ENDERECO
WD_BAI = CLI->BAIRRO
WD_CEP = CLI->CEP
WD_CID = CLI->CIDADE
WD_UF = CLI->UF
WD_FONE = CLI->FONE
WD_IERG = CLI->RG
TCODX=VEICULO
VEI->(DBSEEK(TCODX))
WD_PLACA = SUBST(VEI->PLACA,1,3)+"-"+SUBST(VEI->PLACA,4,4)
* Memorizando a Marca\Fabricante...
IF VEI->marca='1'
fabrica='VOLKSWAGEM'
ELSEIF VEI->marca='2'
fabrica='CHEVROLET '
ELSEIF VEI->marca='3'
fabrica='FIAT '
ELSEIF VEI->marca='4'
fabrica='FORD '
ELSEIF VEI->marca='5'
fabrica='MOTOS '
ELSEIF VEI->marca='6'
fabrica='OUTROS '
ELSEIF VEI->marca='7'
fabrica='RENAULT '
ELSEIF VEI->marca='8'
fabrica='HONDA '
ELSEIF VEI->marca='9'
fabrica='TOYOTA '
ELSE
fabrica=''
ENDIF
WD_MARCA = fabrica
WD_VEIC = VEI->MODELO
WD_TIPO = "PASSEIO"
WD_EMISS = DTOC(DATACAD)
WD_CHASSI= VEI->CHASSIS
WD_DTSAI = DTOC(DATASAI)
WD_HSSAI = HORASAI
WD_ODOME = STR(ODOMETR1)
WD_DTDEVO= DTOC(PREVIDT)
TCODM=MOTORIST
CLI->(DBSEEK(TCODM))
WD_MOTORI= CLI->NOME
WD_IDENTI= CLI->RG
WD_EMISI = "**"
WD_DTISI = "**"
WD_HABILI= CLI->CNH
WD_EMIH = "**"
WD_DTEMH = "**"
WD_QTDIA = STR(QTDIARIA)
WD_VLRDIA= ALLTRIM(TRANS(DIARIA,"@E 999,999.99"))
WD_SINAL = ALLTRIM(TRANS(SINAL,"@E 999,999.99"))
WD_DESCO = ALLTRIM(TRANS(DESCONTO,"@E 999,999.99"))
WD_KMEXCE= ALLTRIM(TRANS(KMEXCEVAL,"@E 999,999.99"))
WD_TOTAL = ALLTRIM(TRANS(TOTAL,"@E 999,999.99"))
WD_FOPAG = OBS1
* Abrindo doc para o word mala-direta...
// cCurDir:= CurDrive() + ":\" + CurDir()
SELE 99
USE C:\LOC\CTOWORD ALIAS CTOWO
ZAP
DBAPPEND()
REPLACE LOCATARIO WITH WD_LOC
REPLACE CPF_CNPJ WITH WD_CPF
REPLACE ENDERECO WITH WD_ENDER
REPLACE BAIRRO WITH WD_BAI
REPLACE CEP WITH WD_CEP
REPLACE CIDADE WITH WD_CID
REPLACE UF WITH WD_UF
REPLACE FONE WITH WD_FONE
REPLACE IE_RG WITH WD_IERG
REPLACE PLACA WITH WD_PLACA
REPLACE MARCA WITH WD_MARCA
REPLACE VEICULO WITH WD_VEIC
REPLACE TIPO WITH WD_TIPO
REPLACE EMISSAO WITH WD_EMISS
REPLACE CHASSI WITH WD_CHASSI
REPLACE DT_SAIDA WITH WD_DTSAI
REPLACE HS_SAIDA WITH WD_HSSAI
REPLACE ODOMETRO WITH WD_ODOME
REPLACE DT_DEVOLU WITH WD_DTDEVO
REPLACE MOTORI WITH WD_MOTORI
REPLACE IDENTIF WITH WD_IDENTI
REPLACE EMISSORI WITH WD_EMISI
REPLACE DT_EMIS WITH WD_DTISI
REPLACE HABILI WITH WD_HABILI
REPLACE EMISSORH WITH WD_EMIH
REPLACE DT_EMIH WITH WD_DTEMH
REPLACE QT_DIARIA WITH WD_QTDIA
REPLACE VLR_DIARIA WITH WD_VLRDIA
REPLACE SINAL WITH WD_SINAL
REPLACE DESCONTO WITH WD_DESCO
REPLACE KMEXCEVAL WITH WD_KMEXCE
REPLACE TOTAL WITH WD_TOTAL
REPLACE FORMAPAG WITH WD_FOPAG
DBCOMMIT()
CLOSE CTOWO
// abrindo arquivo no WinWord com os dados gravados acima (Mala Direta)...
COPY FILE C:\LOC\ENTRLOBK.DOC TO C:\LOC\ENTREGA.DOC // usando o Backup...
COPY FILE C:\LOC\CHEKLOBK.DOC TO C:\LOC\CHEKLIST.DOC // usando o Backup...
COPY FILE C:\LOC\NPLOCBK.DOC TO C:\LOC\NPLOC.DOC // usando o Backup...
COPY FILE C:\LOC\TERMLOBK.DOC TO C:\LOC\TERMOLOC.DOC // usando o Backup...
cARQ2="C:\LOC\ENTREGA.DOC"
cARQ3="C:\LOC\CHEKLIST.DOC"
cARQ4="C:\LOC\NPLOC.DOC"
cARQ5="C:\LOC\TERMOLOC.DOC"
COPY FILE C:\LOC\CTOLOCBK.DOC TO C:\LOC\CTOLOC.DOC // usando o Backup...
cARQ="C:\LOC\CTOLOC.DOC"
TRY
oWord := GetActiveObject( "Word.Application" )
CATCH
TRY
oWord := CreateObject( "Word.Application" )
CATCH
MsgBOX1("NÆo foi poss¡vel achar o Word instalado!!!")
RETURN
END
END
* abrindo documentos complementares...
oDoc2 := oWord:Documents:Open(cARQ2) //ABRE O WORD
oDoc3 := oWord:Documents:Open(cARQ3) //ABRE O WORD
oDoc4 := oWord:Documents:Open(cARQ4) //ABRE O WORD
oDoc5 := oWord:Documents:Open(cARQ5) //ABRE O WORD
* abrindo o contrato principal com Mala Direta....
* oDoc := oWord:Replace('[CAMPO]',cARQ)
oDoc := oWord:Documents:Open(cARQ) //ABRE O WORD
oWord:visible:= .T. // para visualizar...
oWord:WindowState:=1 // maximizar
* oWord:PrintOut() // para imprimir direto...
SELE LOC
ENDIF
Uma ultima coisa amigos:
Seu eu uso o comando na linha: oDoc := oWord:Replace('[CAMPO]',cARQ)
ocorrem erros na execucao do programa. Há algum outro comando que faça a substituição dos campos no arquivo documento???
Obrigado!!!
Erasmo