Seite 1 von 1

Zahl per Makro auf Minus setzen

Verfasst: So 4. Jul 2021, 15:54
von Pensionär
Guten Tag

Vielleicht hat mir jemand einen Tipp, ob es einen Makro für folgende Anwendung gibt.

Ich habe ein Feld mit dem Namen 'Betrag', nun möchte ich im Formular den Betrag ohne Minuszeichen eingeben und dann mit einer Schaltfläche, diesem Betrag ein Minus vor die Zahl setzen.

Leider konnte ich im Forum nichts finden und auch Google wusste keinen Rat.

Falls jemand ein Skript hätte, würde es mich sehr freuen.

Ich wünsche noch einen schönen Nachmittag.

Herzliche Grüsse
Markus

Re: Zahl per Makro auf Minus setzen

Verfasst: So 4. Jul 2021, 17:21
von RobertG
Hallo Markus,

meinst Du, dass das Betätigen einer Schaltfläche einfacher ist als das Minus direkt davor zu schreiben? Wenn ich das minus schon ersparen wollte, dann würde ich das Ganze beim Verlassen des Zahlenfeldes korrigieren.
Das Folgende dürfte vermutlich für ein einfaches Formularfeld passen

Code: Alles auswählen

SUB MinusSetzen(oEvent AS OBJECT)
	oFeld = oEvent.Source.Model
	loValue = oFeld.CurrentValue
	IF Sgn(loValues) = 1 THEN
		loValue = -1*loValue
		oFeld.BoundFiled.UpdateLong(loValue)
	END IF
END SUB
Das ist jetzt für Ganzzahlen gedacht (und nicht getestet).
Bei Dezimalzahlen müsste das wohl UpdateDouble() heißen. Da würde ich dann die Variable auch entsprechend als doValue bezeichnen. Aber die Definition der Variablen habe ich da ja sowieso außen vor gelassen.

Gruß

Robert

Re: Zahl per Makro auf Minus setzen

Verfasst: Mo 5. Jul 2021, 21:53
von Pensionär
Guten Abend Robert

Vielen Dank für Deine Unterstützung.

Ich kriege es leider nicht hin und wie Du es bereits erwähnt hast, ob es sich dadurch einfacher arbeiten lässt bleibt fraglich.

Was leider nicht geht, ist die Variante beim Verlassen des Feldes, weil ich beide Varianten eingebe (positive und negative Beträge). Darum der Schalter, oder wenn z. B. beim Listenfeld (Einnahmen/Ausgaben), die Option Ausgaben gewählt wurde, setzt sich das Betragsfeld ins Minus.

Aber es ist schon so eine super Sache und erleichtert mir die Arbeit.

Nochmals vielen Dank.

Und herzliche Grüsse
Markus

Re: Zahl per Makro auf Minus setzen

Verfasst: Di 6. Jul 2021, 07:59
von RobertG
Hallo Markus,

das genannte Makro setzt natürlich alles ins Minus, was in dem entsprechenden Feld steht.
Angenommen, das Feld in Deiner Tabelle heißt "Betrag" und der Button (oder das Markierfeld oder ...) steht in dem gleichen Formular:

Code: Alles auswählen

SUB MinusSetzen(oEvent AS OBJECT)
	oForm = oEvent.Source.Model.Parent
	doValue = oForm.getDouble(oForm.findColumn("Betrag"))
	IF Sgn(doValues) = 1 THEN
		doValue = -1*doValue
		oForm.UpdateDouble(oForm.findColumn("Betrag"), doValue)
	END IF
END SUB
Gruß

Robert

Re: Zahl per Makro auf Minus setzen

Verfasst: Di 6. Jul 2021, 12:17
von Pensionär
Grüezi Robert

Vielen Dank, dass Du Dich nochmals bemüht hast.

Das Resultat ist folgendes:
- Wenn ich es mit einer Schaltfläche (im gleichen Formular) anklicke passiert nichts.

- Den Makro anstossen im Makro bearbeiten bringt die Meldung:
BASIC-Laufzeitfehler. Argument ist nicht optional.

- Beim separaten ausführen über Makro ausführen erscheint das:
Ein Scripting Framework Fehler trat während der Ausführung vom Basic Skript Standard.Buchhaltung_oeffnen.MinusSetzen auf.
Meldung: wrong number of parameters!


Beste Grüsse
Markus

Re: Zahl per Makro auf Minus setzen

Verfasst: Di 6. Jul 2021, 16:18
von RobertG
Hallo Markus,

wenn das Makro nicht läuft, dann zeigt es mit der entsprechenden Zeile an, wo es nicht weiter geht. Vielleicht ist da die Zeile mit dem Update. Ich würde an Deiner Stelle einmal die zugrundeliegende Tabelle nehmen und zählen, an welcher Stelle denn das Feld "Betrag" liegt. Und dann

Code: Alles auswählen

oForm.UpdateDouble(Stelle aus der Datengrundlage, doValue)
Gruß

Robert