AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OpenOffice Serienbrief Fehlermeldung

Ein Thema von Grolle · begonnen am 7. Nov 2006 · letzter Beitrag vom 10. Nov 2006
Antwort Antwort
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#1

OpenOffice Serienbrief Fehlermeldung

  Alt 7. Nov 2006, 19:59
Hallo,
ich versuche ein *.odt-Dokument von meiner Anwendung aus zu starten. Hier der Code:
Delphi-Quellcode:
      try
        vEmptyParam:=VarArrayCreate([0, -1], varVariant);
        vSvcMgr:=CreateOleObject('com.sun.star.ServiceManager');
        vDesktop:=vSvcMgr.createInstance('com.sun.star.frame.Desktop');
        vMailMerge :=vSvcMgr.createInstance('com.sun.star.text.MailMerge');
      except
        raise Exception.Create('Open Office Writer konnte nicht gestartet werden!');
        Exit;
      end;
      sFileName := KonvFileName(ExtractFilePath(ParamStr(0))+ 'vorlagen\serienbriefoo.odt');
      vDoc:=vDesktop.LoadComponentFromURL(sFileName,'_blank',0, vEmptyParam);
      vMailMerge.DataSourceName := 'Adressen';
      vMailMerge.DocumentUrl := sFileName;
      vMailMerge.Execute();
Beim ausführen bekomme ich die Fehlermeldung:
Zitat:
.. ist eine exception der Klasse EOleSysError mit der Meldung Typkonflikt aufgetreten.
Kann mir da jemand weiterhelfen?
Viele Grüße....

  Mit Zitat antworten Zitat
pmoegenb

Registriert seit: 24. Aug 2006
Ort: Aidlingen
155 Beiträge
 
Delphi XE6 Professional
 
#2

Re: OpenOffice Serienbrief Fehlermeldung

  Alt 8. Nov 2006, 07:15
Probiers mal so:
Delphi-Quellcode:
procedure TForm1.MailMerge;
var
   MMerge, MMArgs: OleVariant;
   Dokumentenname_Old, Dokumentenname_New, LoadDok, OOoDB: string;
begin
     If Filename = 'then
        begin
        Messagedlg('Dokument wurde nicht geladen', mtError, [mbOK], 0);
        exit;
        end;
     OOoDB := 'MVASpenden';
     Dokumentenname_Old := Filename;
     Dokumentenname_New := 'Test';
     LoadDok := 'D:\Tmp\'+Dokumentenname_New+'0'+'.odt';
     MMArgs := VarArrayCreate([0, 6], varVariant);
     MMerge := OOo.oMerge;
     MMArgs[1] :=OOo.NamedValue('DocumentURL', OOo.ToOOPfad(Dokumentenname_Old));
     MMArgs[0] :=OOo.NamedValue('DataSourceName', OOoDB);
     // 0=Tabellen 1=Abfragen 2=SQL-Abfragen
     MMArgs[2] := OOo.NamedValue('CommandType', 0);
     MMArgs[3] := OOo.NamedValue('Command', 'Spenden');
     // Ausgabe an 1=Drucker 2=Datei
     MMArgs[4] := OOo.NamedValue('OutputType', 2);
     MMArgs[5] := OOo.NamedValue('OutputURL', OOo.ToOOPfad('D:\Tmp'));
     MMArgs[6] := OOo.NamedValue('FileNamePrefix', Dokumentenname_New);
     MMerge.execute(MMArgs);
     OOo.Open(LoadDok);
end;
Peter Mögenburg
Gruß

Peter
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#3

Re: OpenOffice Serienbrief Fehlermeldung

  Alt 8. Nov 2006, 23:04
Hi,
bekomme jetzt folgende Fehlermeldung:
Zitat:
ist eine exception der Klasse EVariantInvalidOpError mit der Meldung Ungültige Variantenoperation aufgetreten.

  Mit Zitat antworten Zitat
pmoegenb

Registriert seit: 24. Aug 2006
Ort: Aidlingen
155 Beiträge
 
Delphi XE6 Professional
 
#4

Re: OpenOffice Serienbrief Fehlermeldung

  Alt 9. Nov 2006, 08:45
Mist, ich habe die Funktion NamedValue vergessen.

Delphi-Quellcode:
function TOLE_OpenOffice.NamedValue(vName, vValue: OleVariant): OleVariant;
var
   oPropertyValue: OleVariant;
begin
     oPropertyValue := createStruct('com.sun.star.beans.NamedValue');
     oPropertyValue.Name := vName;
     oPropertyValue.Value := vValue;
     Result := oPropertyValue;
end;
und oMerge := Service.CreateInstance('com.sun.star.text.MailMerge'); muss natürlich auch abgesetzt werden.
Peter Mögenburg
Gruß

Peter
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#5

Re: OpenOffice Serienbrief Fehlermeldung

  Alt 9. Nov 2006, 11:14
Hi,
vielen dank für deine Hilfe. Ich bin jetzt bis an diese Stelle gekommen:
oPropertyValue := createStruct('com.sun.star.beans.NamedValue');
Hier meckert der Compiler über eine ungültige Typumwandlung

  Mit Zitat antworten Zitat
pmoegenb

Registriert seit: 24. Aug 2006
Ort: Aidlingen
155 Beiträge
 
Delphi XE6 Professional
 
#6

Re: OpenOffice Serienbrief Fehlermeldung

  Alt 9. Nov 2006, 14:29
Hast Du die Unit Variants eingebunden ??
Peter Mögenburg
Gruß

Peter
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#7

Re: OpenOffice Serienbrief Fehlermeldung

  Alt 9. Nov 2006, 20:07
Ja, hab ich...

  Mit Zitat antworten Zitat
pmoegenb

Registriert seit: 24. Aug 2006
Ort: Aidlingen
155 Beiträge
 
Delphi XE6 Professional
 
#8

Re: OpenOffice Serienbrief Fehlermeldung

  Alt 10. Nov 2006, 06:45
Hallo Stefan,

alle Proceduren und Funktionen sind unter D7 ausgetestet. Weshalb D2005 darüber meckert ist mir nicht klar.

P. S. Habe ich übersehen. Dir fehlt noch folgende Funktion:
Delphi-Quellcode:
function TOLE_OpenOffice.CreateStruct(strTypeName: OleVariant): OleVariant;
var
   aStruct, ClassSize: OleVariant;
begin
     ClassSize := CoreRefl.forName(strTypeName);
     classSize.CreateObject(aStruct);
     Result := aStruct;
end;
Ich lasse Dir meine gesammelten Werke per Email zugehen.
Peter Mögenburg
Gruß

Peter
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#9

Re: OpenOffice Serienbrief Fehlermeldung

  Alt 10. Nov 2006, 08:15
Sind angekommen. Werde mich später da mal ausgiebig mit befassen.
Vielen Dank schonmal!

  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz