Bericht per Makro öffnen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

tarno
Beiträge: 4
Registriert: Sa, 28.04.2007 20:03
Wohnort: Berlin

Bericht per Makro öffnen

Beitrag von tarno »

Hallo,

ich möchte einen existierenden Bericht aus einem existierenden Formular heraus per Button öffnen.

Anhand eines Beispielcodes auf Seite 493 aus dem Buch "Makros mit OOo 2.0" von Thomas Krumbein schaffe ich es nur, die Index-Nummer des Berichts zu ermitteln.

Code: Alles auswählen

'	Drucken

	objDoc = objDatenquelle.DatabaseDocument
	objReport = objDoc.getReportDocuments().getByName("rptFinanzbericht")
	objReportDoc = objReport.getComponent()

	s = s & i & ":" & objReport.name & chr(13)

	msgbox s
Könnt ihr mir sagen, welche Anweisung notwendig ist, um den richtigen Bericht angezeigt zu bekommen?

Tausend Dank im Voraus.

Tarno
20'' Intel-Core 2 Duo-iMac, 2.16 GHz, 1 GB RAM mit OOo 2.2.1
-------------------------------------------------------------------------
Unser Leben ist, was unser Denken daraus macht (Marc Aurel).
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Bericht per Makro öffnen

Beitrag von Toxitom »

Hallo Tarno,

Lösung steht auch irgendwo im Buch, vielleicht nicht bei den Berichten.... bzw. kommt in der nächsten Auflage ;-)

Hier mal ein Codebeispiel, wie du ein weiteres Formular per "Knopfdruck" öffnen kannst. Berichte gehen analog, musst du halt entsprechend anpassen.

Code: Alles auswählen

Sub Formular_Oeffnen
  dim sFormularName as string, i as integer
  dim oContext as object, oDB as Object, oVerb as object
  dim arg(1) as new com.sun.star.beans.PropertyValue
  dim aListe()
  
  sFormularName = "Artikel"
  REM alleFormulare und Bericht
  aListe = StarDesktop.CurrentComponent.getFormDocuments().getElementNames()
  REM das richtige suchen
  for i = lBound(aListe) to uBound(aListe)
    if aListe(i) = sFormularName then
      oContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
      oDB = oContext.getByName(StarDesktop.CurrentComponent.GetLocation)
      oVerb = oDB.getConnection("", "")
      arg(0).Name = "OpenMode"
      arg(0).Value = "open"
      arg(1).Name = "ActiveConnection"
      arg(1).Value = oVerb
      StarDesktop.CurrentComponent.getFormDocuments(). loadComponentFromURL(aListe(i), "", 0, arg())
      Exit sub
    end if
  next  
End Sub
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten