🙏 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. 🤗

Warum läuft dieses Makro nicht?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Warum läuft dieses Makro nicht?

Beitrag von Freischreiber » Fr 4. Apr 2014, 17:33

Liebe Fachleute,

diese Dateien stammen aus http://de.openoffice.info/viewtopic.php ... 15#p243900

Da ich LO benutze, würde mich interessieren, warum das Makro aus der angehängten Datei unter LO nicht läuft. Die Datensatznummer wird noch angezeigt, aber ein Briefdokument wird nicht geöffnet.

Gruß

Freischreiber
BriefAnDatensatz.zip
(11.21 KiB) 259-mal heruntergeladen
BriefAnDatensatz.odt
(12.68 KiB) 229-mal heruntergeladen
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Warum läuft dieses Makro nicht?

Beitrag von RobertG » Fr 4. Apr 2014, 20:04

Hallo Freischreiber,

F3K Total hat sich doch in den Thread, den Du hier aufgegriffen hast (http://de.openoffice.info/viewtopic.php ... 8&start=15), angehängt. Warum verfolgst Du das jetzt plötzlich auf zwei Foren weiter? Hier triffst Du häufig auf die gleichen Leute ...

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

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Warum läuft dieses Makro nicht?

Beitrag von Freischreiber » Sa 5. Apr 2014, 10:05

Hallo Robert,

die Antwort von F3K Total kannte ich noch nicht, als ich diesen Thread hier eröffnete. Außerdem könnte es ja sein, daß das Makro nur unter Libreoffice nicht läuft und das hier ist das richtige Forum dafür.

Die Ausgangsfrage war eigentlich ganz einfach (dachte ich): Wie bringe ich beliebige Feldinhalte vom Formular aus in ein Writer-Dokument?

Früher gab es wohl mal eine Lösung ohne Makro:
http://www.libreoffice-forum.de/viewtop ... 305#p15314

Die scheint aber nicht mehr zu funktionieren. Dann muß es wohl eine Makro-Lösung sein. Davon gibt es zwei, von denen eine einigermaßen funktioniert (bis auf Listenfelder):
http://www.libreoffice-forum.de/viewtop ... =10#p27487

Und die andere (diese hier) bei mir überhaupt nicht.

Ich kann auch technisch nicht beurteilen, welches der bessere Ansatz ist.

Wenn ihr hier sagt, die erste ist besser, dann versuche ich, die Geschichte mit der korrelativen Unterabfrage zu verstehen, wobei mir schon unklar ist, ob dieser SQL-Code in die Hauptabfrage kommt oder eine extra Abfrage ist, und wo genau sie im Formular auftaucht, so daß das Makro die Felder plötzlich lesen kann.

Wenn ihr die zweite empfehlt, dann muß ich irgendwie versuchen, das Makro in LO zum Laufen zu bringen, was bisher einfach nicht geht.

Welcher Weg am Schluß klappt, ist mir persönlich egal. Ich weiß nur, daß ich nicht den Kopf dazu habe, Makroprogrammierung zu lernen. Es muß an diesem Punkt eine Lösung aus der Tüte sein. Wenn ich dazu AO statt LO benutzen muß, wäre das auch ok. Nur Microsoft würde ich gerne vermeiden.

Ich bin ganz ehrlich auch im Moment gefrustet über dieses ganze Softwarepaket Star-/Open-/Libreoffice, das es schon seit zig Jahren gibt, und bei dem man immer noch naheliegende Aufgaben nicht ohne die Hilfe von Fachleuten lösen kann - für die ich übrigens sehr dankbar bin!

Gruß

Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Warum läuft dieses Makro nicht?

Beitrag von RobertG » Sa 5. Apr 2014, 12:19

Hallo Freischreiber,

dass ein Makro unter LO nicht, aber unter AOO doch läuft dürfte wohl eine sehr seltene Ausnahme sein. Auch auf der openoffice.info-Liste gibt es viele Leute, die gar nicht mit OpenOffice oder AOO arbeiten.

Die Unterabfrage aus dem anderen Thread wird ganz normal so in eine Abfrage eingebaut. Die Abfrage ist Grundlage des Formulars. Die Felder der korrellierenden Unterabfrage brauchen in dem Formular gar nicht aufzutauchen. Das interessiert den Serienbrief nicht. Den Serienbrief interessiert nur ein klar erkennbarer Datensatz. Und der wird über den Primärschlüssel (aus der Abfrage) ausgewählt.

Ich werde mir die beiden Dateien, die Du angehängt hast, einmal kurz anschauen.

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

swolf
* LO-Experte *
Beiträge: 1143
Registriert: Di 14. Feb 2012, 16:56

Re: Warum läuft dieses Makro nicht?

Beitrag von swolf » Sa 5. Apr 2014, 14:43

Hallo Freischreiber,
Außerdem könnte es ja sein, daß das Makro nur unter Libreoffice nicht läuft und das hier ist das richtige Forum dafür.
nur so nebenbei: Das Forum, in dem du zuerst warst
("OpenOffice.info, deutsches Forum rund um OpenOffice.org und LibreOffice") ist für LibreOffice auch richtig.
Außerdem siehst du, dass F3K Total, Robert und auch andere - in beiden Foren gleichwohl helfend antworten.

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Warum läuft dieses Makro nicht?

Beitrag von Freischreiber » Sa 5. Apr 2014, 15:49

Hallo Robert,

achso: dieses funktionierende Makro hier, das ich zur Klarstellung unten nochmal einfüge, braucht eigentlich gar keine Formularfelder, sondern nimmt sich aus dem Formular nur die Angabe des gerade selektierten Datensatzes, und holt sich die Feldinhalte aus der zugrundeliegenden Tabelle oder Abfrage?

Und deine Idee ist, diese Abfrage so aufzuhübschen, daß keine Verweise drinstehen (AnredeID=2), sondern Text (Herr, Frau etc.)?

Aber wenn es so ist, müßte doch in dem Abschnitt "Textfelder holen" irgendwo ein Verweis auf die Quelltabelle/-abfrage drin sein?

Viele Grüße

Freischreiber

Code: Alles auswählen

    Sub Main
       oDoc = thisComponent
       oForm = oDoc.Drawpage.Forms(0)
       oColumns = oForm.Columns
       REM Pfad zur Vorlage zusammensetzen
       Globalscope.BasicLibraries.loadLibrary("Tools")
       sURL = oDoc.Parent.URL
       sURL = DirectoryNameoutofPath(sURL,"/") & "/"
       sURL = sURL & "Briefvorlage zur Neue Datenbank.ott"
       REM Vorlage öffnen
       Dim args(0) as new com.sun.star.beans.PropertyValue
       args(0).Name = "AsTemplate"
       args(0).Value = True
       newDoc = StarDesktop.loadComponentFromURL(sURL,"_blank",0,args)
       REM Textfelder holen
       enumTextfields = newDoc.Textfields.createEnumeration   
       Do While enumTextfields.hasMoreElements
          thisTextfield = enumTextfields.nextElement      
          If thisTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") Then
             sColumnname = thisTextfield.PlaceHolder
             If oColumns.hasByName(sColumnname) Then
                nIndex = oForm.findColumn(sColumnname)
                thisTextfield.Anchor.String = oForm.getString(nIndex)
             End If
          End If
       Loop
    End Sub
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Warum läuft dieses Makro nicht?

Beitrag von RobertG » Sa 5. Apr 2014, 15:51

Hallo Freischreiber,

ich habe beide Dateien geladen, die Datenbank angemeldet und bekomme den Inhalt des jeweils aktuellen Serienbriefes in meinem Heimatverzeichnis abgelegt. Da liegen jetzt "Fröhlich0.odt", "Fröhlich1.odt", "Fröhlich2.odt" und "Mustermann0.odt". Getestet mit LO 4.1.5.3 unter OpenSUSE 12.3 64bit.

Vielleicht zeigt der Dateimanager die Dateien nicht direkt an? Wenn der Pfad von Dir falsch wäre, dann käme eine entsprechende Meldung.

Du musst den Serienbrief auf eine Abfrage aufbauen, nicht auf eine Tabelle. Das reicht.
MailMerge.CommandType=1
MailMerge.Command="Abfrage..."

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

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Warum läuft dieses Makro nicht?

Beitrag von Freischreiber » Sa 5. Apr 2014, 16:06

Hallo Robert,

jetzt laufen zwei Sachen ineinander:

Das funktionierende Makro mit dieser "Textfield"-Anweisung, das hier oben nochmal steht, das beruht doch nicht auf einer Tabelle oder Abfrage, sondern auf Textfeldern, oder? Das würde ich gerne weiterverfolgen. Bezieht sich darauf die Sache mit der Unterabfrage? In diesem Makro kommt eine Mailmerge-Anweisung nämlich gar nicht vor.

Und das gar nicht funktionierende, das bei dir unter Linux geht, geht bei mir unter Windows XP immer noch nicht. Die Pfade stimmen, als einziges entsteht eine temporäre Datei "BriefAnDatensatz.odb.lck" mit dem Inhalt "HSQLLOCK...(plus nichtkopierbare Zeichen). Die Datei kann hier nicht hochgeladen werden wg. verbotener Endung, zip geht auch nicht, und beim Schließen der Datenbank ist sie wieder weg.
Dieses Makro, das in den beiden ganz oben hochgeladenen Dateien drin ist, würde ich gerne vermeiden.

Mit verwirrtem Gruß

Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Warum läuft dieses Makro nicht?

Beitrag von RobertG » Sa 5. Apr 2014, 16:27

Hallo Freischreiber,

wenn hier jetzt unterschiedliche Sachen durcheinanderlaufen, dann liegt das daran, dass der Titel dieses Threads "Warum läuft dieses Makro nicht?" ist - mit 2 Beispieldateien. Darauf habe ich geantwortet. Das habe ich abgesendet kurz nachdem Du eine völlig andere Variante ins Spiel brachtest.
Wenn ich die Eroffnung dieses Threads sehe erwartest Du, dass eine Datei geöffnet wird. Das ist aber im Makro gar nicht vorgesehen. Sie wird lediglich direkt unter dem entsprechenden Namen abgespeichert. Die Datei müsstest Du jetzt laden - so etwas wie StarDesktop.loadComponentFromURL(...).
Mailmerge-Kommandos passen natürlich nur zu Deinem ursprünglichen Anliegen.
Die odb.lck-Datei ist eine Datei, die die Datenbank vor einem doppelten Schreibzugriff sichert. Das hat nichts mit der Ausgabe der Serienbriefe zu tun. Die Serienbriefe müssen bei Dir irgendwo in einem C:/Tmp-Verzeichnis (oder so ähnlich) liegen. Ich habe das nicht bei mir abgespeichert, da ich die Pfade natürlich an mein System anpassen musste.
Schön beschrieben ist übrigens der ganze Mailmerge-Weg hier: http://www.starbasicfaq.de/WiekannmanSe ... l#Zweig251

Auch das Makro mit den Textfeldern müsste sich übrigens dazu nutzen lassen. Die Abfrage ist die Datenquelle für das Formular, die Spalten werden mit Namen vom Prinzip her aus der Abfrage ausgelesen, wenn ich den Code richtig deute.

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

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Warum läuft dieses Makro nicht?

Beitrag von Freischreiber » Sa 5. Apr 2014, 17:04

Hallo Robert,

Entschuldigung. Den Weg mit dem Mailmerge-Makro habe ich abgehakt, weil hier irgendwas spinnt. Ich finde keine erzeugten Dateien.

Das Textfield-Makro funktioniert, das werde ich einbauen.

Müßte der Name der Tabelle oder Abfrage nicht irgendwo auftauchen im Makrotext? Für mich sieht es so aus, als schreibt das Makro nur ab, was gerade im Formular in Textfeldern steht.

Es ist vermutlich am besten, wenn ich jetzt einfach anfange, eine Datenbank aufzubauen, soweit ich komme, und diese dann, wenn etwas fehlt oder nicht geht, hier einstelle mit gezielten Fragen, oder?

Viele Grüße

Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


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