🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

ODT/OTT Datei aus Base verändern, bearbeiten

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Benutzeravatar
HeiDieLX2
! Supporter - Spende !
Beiträge: 41
Registriert: Mo 9. Sep 2019, 12:50

ODT/OTT Datei aus Base verändern, bearbeiten

Beitrag von HeiDieLX2 » Mo 30. Mär 2020, 12:34

Hallo Leute,

eine für mich im Moment schwierige Aufgabenstellung.

Es geht um die Bearbeitung von Writer Dokumenten aus Base heraus.
Texte in Felder schreiben, Tabellen mit anderen Texten, Zahlen etc. belegen funktioniert bereits und ist auch verstanden.

Wo es noch gewaltig klemmt ist hier:
Ein acht-seitiges Dokument aus welchem ich je nach Situation alle 8 Seiten, oder nur 1,2,5-8, oder 1,3,4,6-8 benötige.
Wie kann ich das geschickt machen.
Der Makrogenerator in Writer hilft mir da auch nicht wirklich.
Die Lektüre von "BASIC-Makros für OpenOffice und LibreOffice" von Andrew Pitonyak bringt mich auch nicht recht weiter, mir fehlt schlicht das Verständnis.
Habe dieses auch bereits im Bereich Writer geschildert, ist jedoch anscheinend etwas was dort nicht so vorkommt.

Letztlich ist es ein Projekt welches aus Base Angebote erstellen soll. Für jede denkbare Ang-Varinate ein eigenes OTT zu erstellen ist auch nicht zielführend weil es einfach zu viele werden.
MfG
HeiDieLx vom Bienwald

Tumbleweed
postgreSQL 16
LibreOffice 24.2.5.2

Pit Zyclade
* LO-Experte *
Beiträge: 3041
Registriert: Mo 12. Nov 2012, 16:59

Re: ODT/OTT Datei aus Base verändern, bearbeiten

Beitrag von Pit Zyclade » Mo 30. Mär 2020, 12:59

Man kann doch aus Base genauso wie aus anderen Teilen wie calc heraus eine Writerdatei öffnen!
Solange man das per Hand machen will, gibt es keine Probleme.
LO 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: ODT/OTT Datei aus Base verändern, bearbeiten

Beitrag von RobertG » Mo 30. Mär 2020, 16:51

Hallo HeiDieLx,

hast Du Dir im Handbuch den Abschnitt zum Drucken aus Base heraus angesehen? Steht in dem Makro-Kapitel. Du kannst das Writerdokument doch einfach laden und dann über die Printer-Option "Pages" die entsprechenden Seiten auswählen. Müsste ähnlich funktionieren wie dort der Druck eines Berichtes. Der Link zur LibreOffice API ist dort auch enthalten.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: ODT/OTT Datei aus Base verändern, bearbeiten

Beitrag von F3K Total » Mo 30. Mär 2020, 18:17

Moin HeiDieLx,
ich habe deine Idee so verstanden:
Du möchtest, je nachdem welche Seiten in Base ausgewählt wurden, das passende Angebot als Serienbrief drucken. Geht!
Mit Bereichen. Die lassen sich nämlich mit einer DATENBANK-Bedingung ausblenden.
Ich schicke anbei eine Base-Datei mit einer einfachen Tabelle, in der die gewünschten Seiten per Markierfeld ausgewählt werden können.
Base_Tabelle.png
Base_Tabelle.png (21.11 KiB) 6220 mal betrachtet
Wenn du die Datenbank unter Extras/Optionen/LibreofficeBase/Datenbanken registriert hast wird das Writerdokument, dass acht Bereiche (Seiten) enthält, beim Seriendruck jeweils nur die in Base angehakten Bereiche (Seiten) ausdrucken.
Also
Angebot 1 Seiten 1,2,5-8
Angebot 2 Seiten 1-6
Angebot 3 Seiten 1,2,5,6,8
Habe ich als .PDF-Ausdruck mit angehängt.
Natürlich kann man über Filter auch nur das gerade in Bearbeitung befindliche Angebot einzeln drucken.
Gruß R
Dateianhänge
ANGEBOTE_SERIENBRIEF.zip
ENthält .odb Datenbank, .odt-Writer-Serienbrief und eine PDF, der fertige Serienbrief
(16.62 KiB) 170-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Benutzeravatar
HeiDieLX2
! Supporter - Spende !
Beiträge: 41
Registriert: Mo 9. Sep 2019, 12:50

Re: ODT/OTT Datei aus Base verändern, bearbeiten

Beitrag von HeiDieLX2 » Di 31. Mär 2020, 18:27

Hallo und danke für die Antworten.

Ich bin inzwischen auch nicht untätig gewesen...
In dem Writerdokument habe ich mal Makroaufzeichnung eingeschaltet um zu sehen was LO da so an Code produziert.

Im meiner Situation kommt dann so was zustande:

Code: Alles auswählen

	' Angebot-Schablone öffnen und Daten rein
	' FileProp(0).Name = "Hidden"   '-- "AsThemplate"
	FileProp(0).Name = "AsThemplate" '-- "Hidden"
	FileProp(0).Value = true
	oHDoc = StarDesktop.loadComponentFromURL(csQuellPfad & "/" & aPfadDatei(2),"_blank", 0, FileProp() )
	oDoc  = oHDoc.CurrentController.Frame
	oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	rem ----------------------------------------------------------------------
	IF aAktValues(HZKJaNein) = "nein" AND aAktValues(FBHJaNein) = "Fussboden" THEN
		' wenn keine Heizkörper dann 
		FOR niX = 1 To 2
			args1(0).Name = "Count"
			args1(0).Value = IIF(niX=1,27,34)
			oDispatcher.executeDispatch(oDoc, ".uno:GoDown", "", 3, args1())
			rem ----------------------------------------------------------------------
			args2(0).Name = "Count"
			args2(0).Value = IIF (niX=1,4,5)
			args2(1).Name = "Select"
			args2(1).Value = true
			oDispatcher.executeDispatch(oDoc, ".uno:GoDown", "", 3, args2())
			oDispatcher.executeDispatch(oDoc, ".uno:Delete", "", 0, Array())
		NEXT
	END IF	
	IF aAktValues(HZKJaNein) = "Heizkoerper" AND aAktValues(FBHJaNein) = "nein" THEN
		' wenn kein Fussboden dann
		args1(0).Name = "Count"
		args1(0).Value = 45
		oDispatcher.executeDispatch(oDoc, ".uno:GoDown", "", 3, args1())
		rem ----------------------------------------------------------------------
		args2(0).Name = "Count"
		args2(0).Value = 8				' 8 löscht zwei Seiten
		args2(1).Name = "Select"
		args2(1).Value = true
		oDispatcher.executeDispatch(oDoc, ".uno:GoDown", "", 3, args2())
		oDispatcher.executeDispatch(oDoc, ".uno:Delete", "", 0, Array())
	END IF
	rem --------------------------------------------------------------------------
	rem grundsätzliche Ang-Dok Anpassung fertig nun kommen die Inhalte
Erst mal Datei (Schablone) öffnen

Code: Alles auswählen

args1(0).Value = IIF(niX=1,27,34)
			oDispatcher.executeDispatch(oDoc, ".uno:GoDown", "", 3, args1())
das sind die Pfleil runter 27 oder 34 mal. Danach kommt 8 mal runter mit gedrückter Shift-Taste, danach der Delete und weg ist die Seite.
Funktioniert richtig gut.
Nachteil: Wenn sich was am Dok. ändert z. B. weitere Zeile in der Tabelle muss der Code bei Anzahl GoDown und/oder bei Shift-GoDown angepasst werden.
Ich benutze diese Möglichkeit nun, verstanden habe ich das jedoch noch nicht, bzw. welche weiteren Möglichkeiten sich damit eröffnen.

@F3K Total: Wenn ich nicht o. s. Lösung hätte wäre dein Vorschlag erste Wahl. Hier ist nur das Problem des Benutzers und der Seitennummerierung. Ohne dein Zip getestet zu haben... ;-)
Mache ich jetzt.
MfG
HeiDieLx vom Bienwald

Tumbleweed
postgreSQL 16
LibreOffice 24.2.5.2

Benutzeravatar
HeiDieLX2
! Supporter - Spende !
Beiträge: 41
Registriert: Mo 9. Sep 2019, 12:50

Re: ODT/OTT Datei aus Base verändern, bearbeiten

Beitrag von HeiDieLX2 » Di 31. Mär 2020, 18:50

Hallo F3K Total,

ich weiß nicht...

Code: Alles auswählen

DATENBANK_ANGEBOTSERSTELLUNG.odb.lck
nur 16 Byte! :?:

Was mache ich da falsch?
MfG
HeiDieLx vom Bienwald

Tumbleweed
postgreSQL 16
LibreOffice 24.2.5.2

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: ODT/OTT Datei aus Base verändern, bearbeiten

Beitrag von F3K Total » Di 31. Mär 2020, 19:14

ups, verzipped...sollte eigentlich die ,odb sein...
Gruß R
Dateianhänge
ANGEBOTE_SERIENBRIEF.zip
(19.38 KiB) 182-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten