Buscar

Faça uma mala direta no word mesclando com dados do seu dataset

Código

>> SOMENTE PARA DELPHI 2005, 2006 E TURBO DELPHI <<

{Uma necessidade que sempre surge quando fazemos sistemas
comericiais é de criar cartas, contratos e outros documentos
utilizando informações das nossas tabelas.
Como esses documentos geralmente são feitos no word, o procedimento
abaixo foi criado para substituir nomes de campos econtrados, enre chaves,
nesses documentos pelo seu conteúdo que está nos datasets.}


//Ex. de texto do documento:
//Prezador Sr. {nome_funcionario}

//Ex. de uso (o dataset abaixo deve conter o campo 'nome_funcionario'):
//MergeDatasetsWithDoc('C:meu_documento.doc', [dsFuncionarios]);

//Adicione as units DB e ComObj a cláusula USES do seu programa.

procedure MergeDatasetsWithDoc(ADocName :String; ADatasets :Array of TDataset);
const
  wdFindStop = 0;
  wdReplaceAll = 2;
var
  vWordApp, vDoc: OLEVariant;
  vDataset:TDataset;
  vField :TField;
begin
  try
    vWordApp := CreateOleObject('Word.Application');
    vDoc := vWordApp.Documents.Open(ADocName);
    for vDataset in ADatasets do begin
      if not vDataset.Active then
        vDataset.Open;

      for vField in vDataset.Fields do
        vDoc.Content.Find.Execute(FindText := '{'+Trim(vField.FieldName)+'}',
                                  ReplaceWith := Trim(vField.AsString),
                                  Wrap := wdFindStop,
                                  Replace := wdReplaceAll,
                                  MatchCase := False);
    end;
  finally
    if not VarIsEmpty(vWordApp) then
      vWordApp.Visible := True;

    vDoc     := Unassigned;
    vWordApp := Unassigned;
  end;
end;

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Banco de dados
Adicionada dia: 17/10/06
Por: Gilberto C. Ximenes
Visualizada: 8872 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009