Código
{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;
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009