AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi OpenOffice-Automation - Datenquelle für Serienbrief erstelle
Thema durchsuchen
Ansicht
Themen-Optionen

OpenOffice-Automation - Datenquelle für Serienbrief erstelle

Ein Thema von Dummbatz · begonnen am 17. Nov 2009 · letzter Beitrag vom 17. Nov 2009
Antwort Antwort
Dummbatz

Registriert seit: 11. Mär 2003
Ort: Wehr
14 Beiträge
 
Delphi 6 Enterprise
 
#1

OpenOffice-Automation - Datenquelle für Serienbrief erstelle

  Alt 17. Nov 2009, 08:56
Hallo zusammen!

Ich bin gerade dabei mit meiner Anwendung OpenOffice zu automatisieren. Bisher klappt alles ganz gut.
Jetzt versuche ich mich an Serienbriefen mit CSV-Dateien als Datenquelle. Diese muss ich in OO als Datenbank anlegen damit sie für den Serienbrief verfügbar sind.

Dazu habe ich ein Beispiel im OOo-Forum gefunden und versucht es nach Delphi zu übersetzen:

Delphi-Quellcode:
var
  fOpenOffice, wDBContext, WDSource, wStruct, wMailMerge: variant;
  wPropertyValue: Variant;


fOpenOffice := CreateOleObject('com.sun.star.ServiceManager');
wDBContext := fOpenOffice.createInstance('com.sun.star.sdb.DatabaseContext');
wDSource := wDBContext.GetByName('file://c:/personen.csv');

wPropertyValue := VarArrayCreate([0, 5], varVariant);
wPropertyValue[0] := IMakePropertyValue('Extension', 'csv');
wPropertyValue[1] := IMakePropertyValue('HeaderLine', true);
wPropertyValue[2] := IMakePropertyValue('FieldDelimiter', ';');
wPropertyValue[3] := IMakePropertyValue('StringDelimiter', '');
wPropertyValue[4] := IMakePropertyValue('DecimalDelimiter', ',');
wPropertyValue[5] := IMakePropertyValue('ThousandDelimiter', '.');

wDSource.setPropertyValue('URL', 'sdbc:flat:file://c:/personen.csv');
wDSource.setPropertyValue('Info', wPropertyValue); // <-- Hier knallt es

wDSource.DatabaseDocument.storeAsURL('file://c:/personen.odb'), VarArrayCreate([0, -1], varVariant));

wDBContext.registerObject('my-personen', wDSource);
In der kommentierten Zeile knallt es, ich bekomme hier eine "com.sun.star.lang.IllegalArgumentException".

Hat jemand eine Idee wieso es knallt und was ich dagegen tun kann? Vielleicht ein funktionierendes Beispiel (Link)?

MfG Thomas.
Thomas
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#2

Re: OpenOffice-Automation - Datenquelle für Serienbrief erst

  Alt 17. Nov 2009, 10:25
Kann es sein, dass es hier
wDSource.setPropertyValue('URL', 'sdbc:flat:file://c:/personen.csv'); knallt und nicht hier
wDSource.setPropertyValue('Info', wPropertyValue); // <-- Hier knallt es ?

Weil wenn ich mir das hier anschaue, muss man URLs mit drei '///' angeben...


EDIT: Zeilen vertauscht wenn dann, knallt es ja vor der Zeile, an der der Compiler steht...
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Dummbatz

Registriert seit: 11. Mär 2003
Ort: Wehr
14 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: OpenOffice-Automation - Datenquelle für Serienbrief erst

  Alt 17. Nov 2009, 10:45
Zitat von ToFaceTeKilla:
Kann es sein, dass es hier [...] knallt und nicht hier [...]?
Du hast recht, URLs werden mit drei "/" geschrieben. Das ist ein Fehler beim Posten meines Beitrages gewesen. Im Programm ist es korrekt, das stellt eine function sicher.

Es knallt aber tatsächlich in der gekennzeichneten Zeile, zumindest knallt es wenn ich diese im Debugger ausführe.

MfG Thomas.
Thomas
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#4

Re: OpenOffice-Automation - Datenquelle für Serienbrief erst

  Alt 17. Nov 2009, 12:20
Erwartet die setPropertyValue-Methode evtl. noch irgendwelche zusätzlichen Parameter oder so? Ich könnte mir vorstellen, dass z.B. das Array nicht automatisch zerpflückt wird, sondern dass du ihm das einzeln übergeben musst.
In etwa so:
wDSource.setPropertyValue('Info', wPropertyValue[0], wPropertyValue[1]...)
Disclaimer:
Nur Vermutungen. Ich maße es mir an, zu antworten, weil ich auch schonmal bisschen mit OO-Automation rumgepfuscht habe, mehr jedoch nicht.
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Dummbatz

Registriert seit: 11. Mär 2003
Ort: Wehr
14 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: OpenOffice-Automation - Datenquelle für Serienbrief erst

  Alt 17. Nov 2009, 15:05
Zitat von ToFaceTeKilla:
Ich könnte mir vorstellen, dass z.B. das Array nicht automatisch zerpflückt wird, sondern dass du ihm das einzeln übergeben musst.
Knallt an der selben Stelle, nur bekomme ich eine andere Meldung:
"[automation bridge] unexpected exception in UnoConversionUtilities <T>::variantToAny !"

Das wars also auch nicht.

MfG Thomas.
Thomas
  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 02:05 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