Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-12-2004
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Cual es el error?

Hola a todos.........., estoy tratando de probar el siguiente codigo que tome

de http://www.djpate.freeserve.co.uk/Au...htm#InsertText

Ejemplo de como usar mailmerge facilmente, pero no he podido hacer que funcione.... Tengo delphi 7, windows xp, office xp

al compilarlo se detiene en

Word.Quit(wdSaveChanges,EmptyParam, EmptyParam);

y el error es:
[Error] Unit1.pas(65): Types of actual and formal var parameters must be identical

Tendran alguna idea por favor:

Código:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Wordxp, StdCtrls, Db, DBTables;

type
  TMainForm = class(TForm)
    CreateMainDocBtn: TButton;
    GetDataSourceBtn: TButton;
    MergeBtn: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure CreateMainDocBtnClick(Sender: TObject);
    procedure GetDataSourceBtnClick(Sender: TObject);
    procedure MergeBtnClick(Sender: TObject);
  private
    Word: _Application;
    Doc: _Document;
    AliasPath: string;
    function GetAliasPath: string;
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

uses ComObj, ActiveX;

procedure TMainForm.FormCreate(Sender: TObject);
var
  Unknown: IUnknown;
  Result: HResult;
begin

             // Delphi 5
  Result := GetActiveObject(CLASS_WordApplication, nil, Unknown);

  if (Result = MK_E_UNAVAILABLE) then

    Word := CoWordApplication.Create


  else begin
    { make sure no other error occurred during GetActiveObject }
    OleCheck(Result);
    OleCheck(Unknown.QueryInterface(_Application, Word));
  end;
  Word.Visible := True;
  AliasPath := GetAliasPath;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
var
  SaveChanges: OleVariant;
 begin
  SaveChanges := wdDoNotSaveChanges;
 Word.Quit(wdSaveChanges,EmptyParam, EmptyParam); // ******** Presenta error

  Doc := nil;
  Word := nil;
end;

procedure TMainForm.CreateMainDocBtnClick(Sender: TObject);
var
  R: Range;
  Direction: OleVariant;
begin
  Doc := Word.Documents.Add(EmptyParam, EmptyParam); // ****** presenta error
  R := Doc.Range(EmptyParam, EmptyParam);

  Direction := wdCollapseEnd;
  R.InsertAfter('Dear ');
  R.Collapse(Direction);

  { Insert a field with the name of the datasource field }
  Doc.MailMerge.Fields.Add(R, 'Company');
  R := Doc.Range(EmptyParam, EmptyParam);
  R.Collapse(Direction);
  R.InsertParagraphAfter;
  R.InsertAfter('We have yet to receive payment for our invoice of ');
  R.Collapse(Direction);
  Doc.MailMerge.Fields.Add(R, 'LastInvoiceDate');
  R := Doc.Range(EmptyParam, EmptyParam);
  R.Collapse(Direction);
  R.InsertAfter('.');
  R.InsertParagraphAfter;
  R.InsertAfter('Cough up or we''ll send the boys round.');
  R.InsertParagraphAfter;
  GetDatasourceBtn.Enabled := True;
end;

procedure TMainForm.GetDataSourceBtnClick(Sender: TObject);
var
  TblName: string;
  Connection, SQL: OleVariant;
begin
  { Open the customer table }
  TblName := AliasPath + '\' + 'customer.db';
  Connection := Format('DSN=Paradox Files;DBQ=%s;DefaultDir=%s;DriverId=538;MaxBufferSize=2048;PageTimeout=5;', [AliasPath, AliasPath]);
  SQL := 'SELECT * FROM customer.db';
  Doc.MailMerge.OpenDataSource(TblName, EmptyParam, EmptyParam, EmptyParam,
                               EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                               EmptyParam, EmptyParam, EmptyParam, Connection,
                               SQL, EmptyParam);
  MergeBtn.Enabled := True;
end;

function TMainForm.GetAliasPath: string;
const
  DemoAlias = 'DBDEMOS';
var
  AliasParams: TStrings;
begin
  Result := 'C:\';
  if Session.IsAlias(DemoAlias) then
  begin
    AliasParams := TStringList.Create;
    try
      Session.GetAliasParams(DemoAlias, AliasParams);
      Result := AliasParams.Values['PATH'];
    finally
      AliasParams.Free;
    end;
  end;
end;

procedure TMainForm.MergeBtnClick(Sender: TObject);
var
  Pause: OleVariant;
begin
  Pause := False;
  with Doc.MailMerge do
  begin
    Destination := wdSendToNewDocument;
    Datasource.FirstRecord := wdDefaultFirstRecord;
    Datasource.LastRecord := integer(wdDefaultLastRecord);
    Execute(Pause);
  end;
end;

end.
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #2  
Antiguo 03-12-2004
Avatar de rcarrillom
[rcarrillom] rcarrillom is offline
Miembro Premium
 
Registrado: dic 2004
Ubicación: UK / North Sea / Norway / Golfo de México / Frente a mi Laptop
Posts: 219
Poder: 20
rcarrillom Va por buen camino
Este error significa que uno de los parametros pasados a la funcion no puede ser modificado debido a que es una propiedad o una constante y el parametro requerido es "var", por ejemplo

procedure AMayusculas(var Minusculas: string);
:
:
En otra parte del codigo:
AMayusculas(Edit1.Text) <- error de compilacion

Lo correcto es:
:
var
Cadena: string;
:
Cadena := Edit1.Text;
AMayusculas(Cadena);
Edit1.Text := Cadena
Responder Con Cita
  #3  
Antiguo 03-12-2004
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
muchas gracias amigo Rcarriom..

Me ha sido muy util tu comentario....
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:26:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi