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

In kopiertem Datensatz mit hinterlegtem Makro, Felddaten löschen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Pensionär
Beiträge: 30
Registriert: So 20. Jun 2021, 11:52

In kopiertem Datensatz mit hinterlegtem Makro, Felddaten löschen

Beitrag von Pensionär » Di 14. Dez 2021, 16:06

Guten Tag

Es gibt ja im Base eine komfortable Lösung um Datensätze zu kopieren, indem man in der Tabelle einen Datensatz mit der Maus über den nächsten Datensatz zieht. Im neuen Datensatz sind dann alle Werte übernommen.
In meinem Fall wäre es super, wenn das Datum und die Belegnummer gelöscht wären.
Kann man mit einem Makro auf Felder zugreifen und diese löschen und dieses Makro im Formular Eigenschaften, (unter: Nach der Datensatzaktion...) hinterlegen?
Ich finde keine anwendbare Lösung, weder in der Anleitung noch im Forum.

Vielen Dank, falls jemand einen Vorschlag hat.

Einen schönen Abend
und beste Grüsse
Markus

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

Re: In kopiertem Datensatz mit hinterlegtem Makro, Felddaten löschen

Beitrag von RobertG » Di 14. Dez 2021, 18:00

Hallo Markus,

Du kannst natürlich auf den aktuellen Datensatz zugreifen und mit updateNULL ein entsprechendes Feld leeren. Das ginge z.B. mit so etwas wie

Code: Alles auswählen

oForm.updateNULL(oForm.findColumn("Datum"))
oForm.updateRow()
Jetzt musst Du natürlich heraus bekommen, mit welchem Event genau Du das verbinden darfst. Schließlich willst Du das nur bei einem Insert über das Kopieren und Einfügen machen und nicht bei jeder Datensatzaktion. Da müsste ich auch mit xray testen, an welcher Bedingung das denn fest gemacht werden kann. Nicht dass Du grundsätzlich kein Datum mehr speichern kannst …

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

Pensionär
Beiträge: 30
Registriert: So 20. Jun 2021, 11:52

Re: In kopiertem Datensatz mit hinterlegtem Makro, Felddaten löschen

Beitrag von Pensionär » Di 14. Dez 2021, 18:31

Guten Abend Robert

Vielen Dank für die schnelle Antwort.

Ich versuchte es schon mehrmals mit dem Löschen, aber es kommt immer wieder die Meldung:
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.


Auch mit Deinem Vorschlag.

Habe dann immer wieder gegoogelt wegen der Objektvariablen, aber keine Lösung gefunden.

Herzliche Grüsse
Markus

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

Re: In kopiertem Datensatz mit hinterlegtem Makro, Felddaten löschen

Beitrag von RobertG » Mi 15. Dez 2021, 07:36

Hallo Markus,

das, was ich da geschrieben habe, ist natürlich nicht eine komplette Prozedur. Wenn Du z.B. die Prozedur an ein Ereignis des Formulars koppelst, dann könnte das so lauten:

Code: Alles auswählen

SUB InhaltLoeschen(oEvent AS OBJECT)
oForm = oEvent.Source
IF oForm.ImpelementationName = "com.sun.star.comp.forms.ODatabaseForm" THEN
oForm.updateNULL(oForm.findColumn("Datum"))
oForm.updateRow()
END IF
END SUB
Die Variable oForm wird aus dem auslösenden Ereignis ermittelt. Die Abfrage zur Implementation kann eventuell entfallen. Das habe ich mir jetzt für die Prozedur nicht weiter angeschaut.

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

Pensionär
Beiträge: 30
Registriert: So 20. Jun 2021, 11:52

Re: In kopiertem Datensatz mit hinterlegtem Makro, Felddaten löschen

Beitrag von Pensionär » Mi 15. Dez 2021, 17:29

Guten Abend Robert

Vielen Dank für Deine Hilfe.
Du hast natürlich recht, dass ich diesen Makro schwerlich hinterlegen kann, weil dann diese Aktion auf bestehenden Datensätzen auch ausgeführt wird, wenn ich mich darin bewege.

Ich habe nun bei der Tabelle einen Schalter hinterlegt, welcher beim kopieren nicht übersehen werden kann und dieser löscht dann die beiden Felder, mit diesem Makro:

SUB Datum_Beleg_loeschen
DIM oForm AS OBJECT
oForm = thisComponent.drawpage.forms.MainForm
oForm.updateNULL(oForm.findColumn("Datum"))
oForm.updateNULL(oForm.findColumn("Belegnummer"))
END SUB

Ich wünsche Dir einen schönen Abend
und grüsse Dich herzlich
Markus


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