BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Base Datensatz von Formular zu Report

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
biertrinker
Beiträge: 2
Registriert: Fr 19. Apr 2019, 15:40

Base Datensatz von Formular zu Report

Beitrag von biertrinker » Fr 19. Apr 2019, 15:49

Hallo ,

ich habe das mit den Berichten wohl noch nicht genau verstanden
per Google wird immer auf MacroProgrammierung verwiesen
wenn geziehlt ein Datensatz vom Formular an den Report übergeben werden soll

gibt es keinen einfachen Weg ?

BSP
ich habe eine Tabelle T1 mit den Feldern
ID / Name / Vorname / Tel

Diese werden im Formular Form1 angezeigt :

ID wird im Form1 nicht angezeigt
Name wird im Textfeld TXT1 angezeigt
Vorname wird im Textfeld TXT2 angezeigt
Tel wird im Textfel TXT3 angezeigt

Nun möchte ich einen Report öffnen und einfach
nur das der Report den Datensatz anzeigt
der auch aktuell im Formular angeigt wird

also der Report ungefähr folgendes SQL aufruft
"select * from T1 where Name = Form1.TXT1 "

Das geht doch bestimmt auch ohne Macro oder ??

Leider muss ich zugeben das ich noch nicht lange mit LibreOffice
arbeite und die Programmierung noch nicht ganz verstehe
grüße euer
Biertrinker :D

F3K Total
Beiträge: 2409
Registriert: So 10. Apr 2011, 10:10

Re: Base Datensatz von Formular zu Report

Beitrag von F3K Total » So 21. Apr 2019, 09:54

Moin,
biertrinker hat geschrieben:
Fr 19. Apr 2019, 15:49
Das geht doch bestimmt auch ohne Macro oder ??
Ja, das geht, allerdings nicht ganz banal. Mit Hilfe einer einzeiligen Filtertabelle, im Beispiel anbei "Filter".
In diese Filtertabelle schreibt man im Formular "Adressenverwaltung_mit_Filter" per Listenfeld die ID des gewünschten Datensatzes.
Mit Hilfe der Abfrage "qAdressen" wird nun der Datensatz zu dieser ID gefunden:

Code: Alles auswählen

SELECT
    "ID", 
    "Nachname", 
    "Vorname", 
    "Nachname" || ', ' || "Vorname" AS "Name", 
    "Strasse", 
    "PLZ", 
    "Ort"
FROM
    "Adressen"
WHERE
    ( "ID" = ( SELECT "F_ID_ADDRESS" FROM "Filter" ) 
OR 
    ( SELECT "F_ID_ADDRESS" FROM "Filter" ) IS NULL )
Die gleiche Abfrage ist wiederum Datengrundlage des Berichtes "Bericht_Adresse_gefiltert" der bei Ausführung den im Formular gewählten Datensatz zeigt.
Viel Spaß beim Forschen
Gruß R
Dateianhänge
Einzeiliger_Bericht.zip
nur entpacken
(73.52 KiB) 137-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Base Datensatz von Formular zu Report

Beitrag von gogo » So 21. Apr 2019, 12:24

Es geht auch mit der BaseReportExtension, die geht aber NICHT mit der Firebird-Datenbank, da der Firebird-Treiber einen ganzen Haufen an Methoden (noch?) nicht unterstützt.

Weiters wäre es noch denkbar in der Tabelle ein Ja/Nein Feld zu machen, das vor dem Öffnen des Reports auf true gesetzt wird (während alle anderen Sätze auf false stehen) und dieses Feld wäre dann das Kriterium für die Report-Abfrage...

D.h. die Abfrage für den Report wäre dann etwa: "Select * from TabelleX where ReportJN = true" und das Makro das man dem Button zuordnen müsste wäre dann etwa so:

Code: Alles auswählen

sub OpenReportXYZ(oEvent)
' ermittelt die ID des aktuellen Datensatzes
ID_aktueller_Datensatz = oEvent.Source.Model.Parent.getByName("NameDesSteuerelementsInDemDieDatensatzIdSteht").text()

' erstellt ein Statement-Objekt mit dem man SQL-Queries ausfuehren kann
oStatement = ThisDatabaseDocument.CurrentController.ActiveConnection.createStatement

' fuehrt die Statements aus
oStatement.executeUpdate( "UPDATE TabelleX set ReportJN = false" )
oStatement.executeUpdate( "UPDATE TabelleX set ReportJN = true WHERE IDDatensatz = " & ID_aktueller_Datensatz & ";" )

' oeffnet den Report
ThisDatabaseDocument.ReportDocuments.getByName("BerichtXYZ").open

end sub
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

biertrinker
Beiträge: 2
Registriert: Fr 19. Apr 2019, 15:40

Re: Base Datensatz von Formular zu Report

Beitrag von biertrinker » So 21. Apr 2019, 19:22

Hallo,

erstmal vielen Dank für die Tips
beide Wege werde ich mal ausprobieren :D
grüße euer
Biertrinker :D

F3K Total
Beiträge: 2409
Registriert: So 10. Apr 2011, 10:10

Re: Base Datensatz von Formular zu Report

Beitrag von F3K Total » Di 23. Apr 2019, 17:33

Tja,
wann denn? Bisher hast du die Beispieldatei ja nicht einmal heruntergeladen. :evil:
R

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten