Die "If-Abfrage" Deines Makros bezieht sich auf den aktuellen Wert des Feldes "Miete" in Deiner Tabelle und zwar für den derzeit im Formular sichtbaren Datensatz.
Der Bericht hat nichts mit dem zu tun, was das Forumlar gerade macht. Er besteht "vollkommen selbstständig".
Olek2 hat geschrieben:
Und dieser Wert muss dann abgefragt werden durch das Makro und das Makro muss dann mit diesem Datensatz arbeiten...Nur hab ich keine Ahnung wie ich das machen soll leider.
Also: Woher soll der Bericht wissen, dass Du genau diesen Datensatz brauchst?
Du musst irgenwie den Datensatz kennzeichnen, damit der Bericht weiß welchen er darstellen soll.
Wenn ich das richtig verstanden haben, dann beutzt Du die interne Datenbank von Base. Da ist es wie im von ,4 beschriebenen Thread am einfachsten eine Spalte an die Tabelle dranzuhängen, in der immer der aktuelle Datensatz gekennzeichnet wird. Also:
1. Eine Spalte an Deine Tabelle dranhängen, (z.B. mit dem Namen "Druck", Datentyp z.B. Tinyinteger)
2. Datenherkunft des Berichtes verändern: am Besten eine Abfrage erstellen und speichern, die etwa so aussieht:
Code: Alles auswählen
Select * from ""Tabellenname"" where ""Tabellenname"".""Druck"" = 1;
3. Ausdruckmakro von oben verändern:
nach : Miete = oForm.getString(oForm.findColumn("Miete")) etwa Folgendes einfügen
Code: Alles auswählen
AktuelleID = oForm.getString(oForm.findColumn("ID")) '<===== sollte der Primärschlüssel Deiner Tabelle nicht 'ID' heißen,
' dann hier und weiter unten ändern!
oStatement = ThisDatabaseDocument.CurrentController.ActiveConnection.createStatement
oStatement.executeUpdate("Update ""Tabellenname"" SET ""Tabellenname"".""Druck"" = 0 where ""Tabellenname"".""Druck"" = 1;")
oStatement.executeUpdate("Update ""Tabellenname"" SET ""Tabellenname"".""Druck"" = 1 where ""Tabellenname"".""ID"" = " & AktuelleID & ";")
Diese Zeilen verändern den Inhalt der Spalte "Druck". Da sollten dann überall Nuller drinstehen, nur beim aktuell angezeigten Datensatz ein Einser ... und der bewirkt, dass in der Abfrage (siehe Punkt 2) eben nur dieser Datensatz angezeigt wird.
g
Die "If-Abfrage" Deines Makros bezieht sich auf den aktuellen Wert des Feldes "Miete" in Deiner Tabelle und zwar für den derzeit im Formular sichtbaren Datensatz.
[code]Miete = oForm.getString(oForm.findColumn("Miete"))[/code]
Der Bericht hat nichts mit dem zu tun, was das Forumlar gerade macht. Er besteht "vollkommen selbstständig".
[quote="Olek2"]
Und dieser Wert muss dann abgefragt werden durch das Makro und das Makro muss dann mit diesem Datensatz arbeiten...Nur hab ich keine Ahnung wie ich das machen soll leider.[/quote]
Also: Woher soll der Bericht wissen, dass Du genau diesen Datensatz brauchst?
Du musst irgenwie den Datensatz kennzeichnen, damit der Bericht weiß welchen er darstellen soll.
Wenn ich das richtig verstanden haben, dann beutzt Du die interne Datenbank von Base. Da ist es wie im von ,4 beschriebenen Thread am einfachsten eine Spalte an die Tabelle dranzuhängen, in der immer der aktuelle Datensatz gekennzeichnet wird. Also:
1. Eine Spalte an Deine Tabelle dranhängen, (z.B. mit dem Namen "Druck", Datentyp z.B. Tinyinteger)
2. Datenherkunft des Berichtes verändern: am Besten eine Abfrage erstellen und speichern, die etwa so aussieht:
[code]Select * from ""Tabellenname"" where ""Tabellenname"".""Druck"" = 1;[/code]
3. Ausdruckmakro von oben verändern:
nach : Miete = oForm.getString(oForm.findColumn("Miete")) etwa Folgendes einfügen
[code]
AktuelleID = oForm.getString(oForm.findColumn("ID")) '<===== sollte der Primärschlüssel Deiner Tabelle nicht 'ID' heißen,
' dann hier und weiter unten ändern!
oStatement = ThisDatabaseDocument.CurrentController.ActiveConnection.createStatement
oStatement.executeUpdate("Update ""Tabellenname"" SET ""Tabellenname"".""Druck"" = 0 where ""Tabellenname"".""Druck"" = 1;")
oStatement.executeUpdate("Update ""Tabellenname"" SET ""Tabellenname"".""Druck"" = 1 where ""Tabellenname"".""ID"" = " & AktuelleID & ";")
[/code]
Diese Zeilen verändern den Inhalt der Spalte "Druck". Da sollten dann überall Nuller drinstehen, nur beim aktuell angezeigten Datensatz ein Einser ... und der bewirkt, dass in der Abfrage (siehe Punkt 2) eben nur dieser Datensatz angezeigt wird.
g