Seite 1 von 2

Macro für automatische Wertsetzung

Verfasst: Fr 9. Dez 2011, 13:16
von zemudo
Hallo,
ich möchte, dass wenn in dem Feld Datum meiner Tabelle (Formular) Produkt ein Datum eingetragen wird, in einen anderen Feld (Vorgang) die Zahl 1 gesetzt wird. Wie müsste das Macro hierfür aussehen?

Vielen dank im Voraus

Re: Macro für automatische Wertsetzung

Verfasst: Sa 10. Dez 2011, 14:50
von gogo
Dein Datumsfeld hat eine Ereignis "Nach dem Aktualisieren"
diesen weist Du folgendes Makro zu:

Code: Alles auswählen

sub Feldwert_setzen
oForm = StarDesktop.CurrentComponent.DrawPage.Forms.GetByIndex(0)
select case oForm.getByName("Name des Datums-Kontrollfeldes wie es im Formularnavigator steht").text
case "",0,null
case else
	oForm.getByName("Name des Kontrollfeldes in das Du den 1er eintragen willst wie es im Formularnavigator steht").text = 1
end select
end sub

Re: Macro für automatische Wertsetzung

Verfasst: Sa 10. Dez 2011, 17:03
von zemudo
Leider kommt eine Fehlermeldung.
Liegt es evtl. daran, dass es sich nicht um Kontrollfelder sondern um Texfelder (AuzugDatum Feldtyp Datum (DATE), OffenBezahlt Feldtyp Zahl (NUMERIC) handelt?
Fehlermeldung1.png
Fehlermeldung1.png (41.12 KiB) 8306 mal betrachtet
Fehlermeldung.png
Fehlermeldung.png (25.43 KiB) 8306 mal betrachtet

Re: Macro für automatische Wertsetzung

Verfasst: Sa 10. Dez 2011, 17:39
von F3K Total
Hallo,
versuch es in der blau markierten Zeile mal mit .date statt .Text
Gruß R

Re: Macro für automatische Wertsetzung

Verfasst: Sa 10. Dez 2011, 18:14
von zemudo
Es kommt leider die gleiche Fehlermeldung

Re: Macro für automatische Wertsetzung

Verfasst: Sa 10. Dez 2011, 22:24
von F3K Total
Hallo,
heißt das Datumsfeld wirklich "AuszugDatum"? Der im Makro zu verwendende Name ist der, den Du findest, wenn Du im Bearbeitungsmodus des Formulares einen Rechtsklick auf den Spaltenkopf "AuszugDatum" machst, "Spalte..." anklickst und dann auf dem Reiter "Allgemein" das Feld "Name" anschaust.
Gruß R

Re: Macro für automatische Wertsetzung

Verfasst: Sa 10. Dez 2011, 22:26
von gogo
Hast Du xray installiert?
(http://sourceforge.net/projects/ooomacr ... ion%205.2/) oder so...

NoSuchElement bedeutet, dass es kein Kontrollelement (KE) mit dem Namen "AuszugDatum" gibt. Den Namen eines KEs kannst Du am leichtesten im Formularnavigator ablesen - da siehst Du auch in welchem Formular-Objekt Dein KE zu Hause ist.

ops - da war ich zu langsam ;)

Re: Macro für automatische Wertsetzung

Verfasst: Sa 10. Dez 2011, 22:44
von F3K Total
Hallo,
es sieht so aus, als ob das Feld "AuszugDatum" sich auf dem Unterformular befindet.
mit

Code: Alles auswählen

oForm=stardesktop.currentComponent.drawpage.forms.getbyindex(0)
wird aber das Hauptformular angesprochen.
mit

Code: Alles auswählen

oform.getbyname("AuszugDatum")
suchst Du die Spalte "AuszugDatum" quasi im Hauptformular.
Ausserdem befindet sich die Spalte in einem Tabellenkontrollfeld.
Der richtige Weg zu deiner Spalte, den Du am besten mit dem Formularnavigator ergründest, wie gogo gerade geschrieben hat,
lautet vermutlich:

Code: Alles auswählen

oForm =stardesktop.currentComponent.drawpage.forms.getbyname("Name des Hauptformulares")
oFormSub = oForm.getbyname("Name des Unterformulares")
ogrid = oFormSub.getbyname("Name des Tabellenkontrollfeldes")
oAuszugDatum = ogrid.getbyname("AuszugDatum")
oder in einer Zeile:

Code: Alles auswählen

oAuszugDatum = stardesktop.currentComponent.drawpage.forms.getbyname("Name des Hauptformulares").getbyname("Name des Unterformulares").getbyname("Name des Tabellenkontrollfeldes").getbyname("AuszugDatum")
mit oAuszugDatum.date liest Du dann das Datum aus.

Gruß R

Edit:
Im hier dargestellten Beispiel:
azdat.png
azdat.png (33.27 KiB) 8284 mal betrachtet
wäre der Weg:

Code: Alles auswählen

oForm =stardesktop.currentComponent.drawpage.forms.getbyname("MainForm")
oFormSub = oForm.getbyname("SubForm")
ogrid = oFormSub.getbyname("SubForm_Grid")
oAuszugDatum = ogrid.getbyname("AuszugDatum")

Re: Macro für automatische Wertsetzung

Verfasst: So 11. Dez 2011, 12:30
von zemudo
Es klappt leider nicht bzw. ich schaffe es nicht. Es gibt bei mir auch kein SubForm_Grid.
Vielleicht könnt ihr mir weiterhelfen, wenn ich die DB anhänge.

Re: Macro für automatische Wertsetzung

Verfasst: So 11. Dez 2011, 13:04
von F3K Total
Hallo,
nein es gibt kein Subform_Grid, aber es gibt ein "Tabellen-Kontrollfeld 1".
Wie schon gesagt, schau dir das mit dem Formularnavigator an, dann geht es ganz leicht.
Ich habe Dich auch darauf hingewiesen, zu schauen wie das Feld "AuszugDatum" heißt, der Name lautet: "DateField3"
Und das Feld in das Du hineinschreiben möchtest, "OffenBezahlt", liegt auf dem "SubForm".

Siehe Bild:
1.png
1.png (47.61 KiB) 8274 mal betrachtet
Also muß das Makro so geändert werden.

Code: Alles auswählen

sub Feldwert_setzen
oForm =stardesktop.currentComponent.drawpage.forms.getbyname("MainForm")
oFormSub = oForm.getbyname("SubForm")
ogrid = oFormSub.getbyname("Tabellen-Kontrollfeld  1")
oAuszugDatum = ogrid.getbyname("DateField3")
select case oAuszugDatum.date
case "",0,null
case else
   oFormSub.getByName("OffenBezahlt").text = 1
end select
end sub
Alle Feld/Tabellen/Formularnamen kannst Du auch ändern, dann mußt Du aber das Makro anpassen.

Viel Erfolg
Gruß R