GARANTIR DESCONTO

Fórum Integração Delphi Word #583336

05/07/2017

0

Pessoal eu esou tenho um problema com a emissão dos documentos. acontece que eu gostaria de deixar o usuario livre para confeccionar o documento e para isso adicionei o seguinte codigo ao botao de chamada do documento do word:
 


var  WordApp: variant; { variável do Word }
    Document: variant; { documento do Word }
        path: string;
begin
{ inicia o Word, caso já não esteja rodando }
  if VarIsEmpty(WordApp)
     then WordApp := CreateOleObject('Word.Application');
  path := ExtractFilePath(Application.ExeName);
  Document := WordApp.Documents.Open(path + 'Cartas\\CARTA_ANIVERSÁRIO.doc');
  WordApp.Visible := True;

{ Move os dados da tabela para o documento do word. }
  Document.FormFields.Item('Nome').Result :=
    ADOTbCartas.FieldbyName('Nome').AsString;
  Document.FormFields.Item('CPF').Result :=
    ADOTbCartas.FieldbyName('CPF').AsString;
 // Document.FormFields.Item('RG').Result :=
 //   ADOTbCartas.FieldbyName('RG').AsString;
 // Document.FormFields.Item('Email').Result :=
 //   ADOTbCartas.FieldbyName('Email').AsString;
end;




O problema é que se esse campo referente ao CPF por exemplo nao estiver presente no documento da uma mensagem de erro na emissão do documento:
>>>> Omembro solicitado da coleção nao existe. <<<<
CLIQUE AQUI E VEJA A IMAGEM DO ERRO mesmo emite o documento . Eu gostaria de deixar os campos a serem inseridos no documento a gosto do cliente ( usuario do programa ) sem que essa mensagem seja vista pelo usuario.

Agradeço a contribuição de todos!
Janilto Oliveira

Janilto Oliveira

Responder

Post mais votado

06/07/2017

Opa Janiltojack, blz?

Então, eu faço um pouco diferente de você, inclusive há um tempo eu fiz um artigo aqui para a DevMedia mesmo. Q tal?


www.devmedia.com.br/passar-parametros-para-word-a-partir-do-delphi-dica/15723


Desta forma não temos esse problema que você mencionou, q tal dar uma olhada?

Grande abraço

Wesley Yamazack

Wesley Yamazack
Responder

Gostei + 2

Mais Posts

06/07/2017

Emerson Nascimento

e se tentar algo como:

if Document.FormFields.Item(''Nome'') <> nil then
Document.FormFields.Item(''Nome'').Result :=
ADOTbCartas.FieldbyName(''Nome'').AsString;Document.FormFields.Item(''Nome'').Result := ADOTbCartas.FieldbyName(''Nome'').AsString;

if Document.FormFields.Item(''CPF'') <> nil
Document.FormFields.Item(''CPF'').Result :=
ADOTbCartas.FieldbyName(''CPF'').AsString;Document.FormFields.Item(''CPF'').Result := ADOTbCartas.FieldbyName(''CPF'').AsString;

não sei a comparação correta seria com nil. não tenho o Delphi agora para efetuar testes.
Responder

Gostei + 0

06/07/2017

Janilto Oliveira

Opa Janiltojack, blz?

Então, eu faço um pouco diferente de você, inclusive há um tempo eu fiz um artigo aqui para a DevMedia mesmo. Q tal?


www.devmedia.com.br/passar-parametros-para-word-a-partir-do-delphi-dica/15723


Desta forma não temos esse problema que você mencionou, q tal dar uma olhada?

Grande abraço


Estive olhando este artigo e gostei dele so nao tenti implementar ainda mas vou fazer uma tentativa com ele, nao tenho muto conhecimento em programação ainda mas to indo caminhando sem parar kkkk. Obrigado por se interessar em ajudar. Farei um teste !
Responder

Gostei + 0

25/08/2017

Janilto Oliveira

Boa tarde, Wesley Yamazack
Voce consegue postar pra mim um projeto exemplo somente dessa parte de cartas pode ser com apena um campo de tabela por exemplo um documento do word e a form completa ( unit) com substituição apenas de nome . Mas preciso saber como gerar esses dados para a substituição por exemplo a origem dos dados e como envia-los pro documento. Tenho visto que algums campos no Word sao do tipo ex: @NOME outros #NOME ou wNOME e eu sou inciante bem newbie mesmo ainda nao entendi como fazer devido a minha inesperiencia mesmo kkkk . Obrigado

Pessoal eu citei o nome do Wesley Yamazack mas vou ser grato a todos que me ajudarem com a duvida e ajuda
Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar