Druck eines einzelnen Datensatzes via Button

Version: 7.4.2.3 (x86) / LibreOffice Community, portable Version
Build ID: 382eef1f22670f7f4118c8c2dd222ec7ad009daf
CPU threads: 8; OS: Windows 10.0 Build 19044; UI render: Skia/Raster; VCL: win
Locale: de-DE (de_DE); UI: de-DE
Calc: threaded

In BASE lasse ich mir über ein Formular die Details eines Datensatzes anzeigen. Wie kann ich dort eine Schaltfläche hinterlegen, die diesen Datensatz unter Verwendung eines hinterlegten Berichtsformulars ausdruckt? (Mit Makroprogrammierung bin ich nicht vertraut.) Danke.

Lade Dir das Base-Handbuch herunter (Handbücher | LibreOffice - Deutschsprachiges Projekt - Freie Office Suite).
Auf Seite 357ff. habe ich genau das beschrieben. Das Makro geht ggf. auch kürzer. So kannst Du z.B. die Ermittlung des Formulars auch aus dem auslösenden Button erschließen.

1 Like

Sorry, dass ich mich nochmal melde.
Habe eine Filtertabelle angelegt und verknüpft. Habe im Formular den Primärschlüssel versteckt hinterlegt. Habe dein Makro von S. 358 mit meinen Feld-, Formular- und Formularnamen angelegt und bekomme in deiner Zeile 012 die Meldung “Type: com.sun.star.container.NoSuchElementException Message: .”
Wo ist mein Fehler?

Zeile 012 enthält ja die Verbindung zu dem Formular in dem Formulardokument. Vermutlich hast Du dort einen falschen Namen stehen. Rufe einmal Dein Formular zum Bearbeiten auf und starte den Formularnavigator. Poste hier einen Screenshot des Inhalts des Formularnavigators und das, was Du in

 oForm = oDrawpage.Forms.getByName("MainForm")

stehen hast.

Danke für deine schnelle Reaktion. Fehler behoben. Jetzt nur noch in der letzten Zeile 023 “BASIC-Laufzeitfehler. Objektvariable nicht belegt.”

stSql = “UPDATE ““FilterTabelle”” SET ““Integer”” = '”+oFeld.GetCurrentValue()+ “’ WHERE ““ID”” = TRUE”
oSQL_Anweisung.executeUpdate(stSql)
ThisDatabaseDocument.ReportDocuments.getByName(“Ausdruck”).open <== hier

Mein Bericht heißt Ausdruck. Filtertabelle mit ID=J/N und Haken drin ist angelegt. Ebenso die Beziehung zwischen Datenbank-ID und FilterTabelle-INTEGER.

Da kann nur dann ein Fehler kommen, wenn

  • “Ausdruck” nicht existiert (oder in einem Unterverzeichnis liegt - geht ja bei Formularen und Berichten)
  • Du den Ausdruck von einem externen Formular aus machen willst.

Mmmh, “Ausdruck” existiert, und mit Unterverzeichnissen arbeite ich nicht. Und liegt auch in der gleichen .odb

Speicherst Du das Makro auch in der Datenbankdatei selbst? Wenn nicht kann schon bei “ThisDatabaseDocument” ein Problem sein. Ich habe das auch nur per Trial and Error gelernt.

Und was ich noch aus der Schule kenne: Aus Versehen kommt dann plötzlich irgendwo ein Leerzeichen dazu, also z.B. "Ausdruck ". Ist besonders schön, wenn SchülerInnen so ihre Felder in Tabellen definiert haben und dann bei den Abfragen im SQL-Modus auf unerwartete Probleme stoßen.

1 Like

Habe es jetzt der Datenbank hinzugefügt. Auf Blanks habe ich auch gecheckt. Gleicher Fehler. rätsel

Nach Hinzufügung zur Datenbank musste ich das Makro erneut dem Button zuweisen, Fehler tritt jetzt nicht mehr auf. DANKE soweit.