Seite 1 von 1

[gelöst]Einen Wert in Formular errechnen und anzeigen

Verfasst: Fr, 24.02.2023 14:53
von hk3003
Hallo Forum,
ich möchte in einem Unterformular einen Tabellensatz erstellen wo ich die Felder MENGE(INTEGER) und KURS(DECIMAL) eingebe und beim Verlassen des KURS-Feldes den Wert MENGE * KURS berechnen und im im ungebundene Feld WERT(DECIMAL) anzeigen möchte. Beim Aufruf des Macros bekomme ich folgende Fehlermeldung: "Basic-Laufzeitfehler. Falscher Wert für Eigenschaft." Was mache ich falsch?

Code: Alles auswählen

Sub WertErrechnen(oEvent AS OBJECT)
	DIM oForm AS OBJECT
	DIM dWert AS DOUBLE
	DIM dMenge AS INTEGER
	DIM dKurs AS DOUBLE
	
	oForm = oEvent.Source.Model.Parent
	dMenge = oForm.getByName("Menge")	<-- Fehlerzeile
	dKurs = oForm.getByName("Wert")	
	oForm.getByName("Wert") = dMenge * dKurs
	 
End Sub

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Fr, 24.02.2023 17:58
von RobertG

Code: Alles auswählen

dMenge = oForm.getByName("Menge").CurrentValue
Du willst doch nicht den Zugriff auf das Eingabefeld mit allen möglichen Eigenschaften sondern darauf, was da für ein Wert drin steht. Das gilt natürlich auch für die nachfolgenden Elemente.

Code: Alles auswählen

oFeldMenge = oForm.getByName("Menge")
Das wäre also lediglich das Objekt mit allen möglichen Eigenschaften und Methoden.

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Fr, 24.02.2023 18:38
von hk3003
Danke für die Antwort!
Ich habe nun ein Macro welches "intern" funktioniert. Das heißt, im Feld "oWert" (Macro) steht der berechnete Wert, aber er wird im Formular nicht angezeigt. Auch der Standardwert den ich für dieses Feld in den "Eigenschaften: Numerisches Feld" eingegeben habe wird dort nicht angezeigt. Leider kann ich den Screenshot der Eigenschaften nicht beilegen WIE? nicht Vielleicht ist da was falsch. Dieses Feld ist in der zugrunde liegenden Tabelle nicht enthalten.

Code: Alles auswählen

Sub WertErrechnen(oEvent AS OBJECT)
	DIM oForm AS OBJECT
	DIM oWert AS OBJECT
	DIM oMenge AS  OBJECT
	DIM oKurs AS  OBJECT
	
	oForm = oEvent.Source.Model.Parent
	oMenge = oForm.getByName("Menge")	
'	dKurs = oForm.getByName("Kurs").EffectiveValue
	oKurs = oForm.getByName("Kurs")	
	oWert = oForm.getByName("Wert")
	oWert.Value = oMenge.CurrentValue * oKurs.CurrentValue

End Sub

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Fr, 24.02.2023 19:20
von RobertG
Wenn es sich dabei um ein Feld handelt, das gar nicht mit der zugrundeliegenden Datenquelle verbunden ist, dann hilft vielleicht

Code: Alles auswählen

oWert.Text  = oMenge.CurrentValue * oKurs.CurrentValue
In was für einem Formularfeld versuchst Du denn den "Wert" anzuzeigen?

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Fr, 24.02.2023 20:28
von hk3003
Ein numerisches Feld.

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Fr, 24.02.2023 21:11
von RobertG
Dann mach daraus ein Textfeld. Soll doch sowieso nur etwas anzeigen.

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Sa, 25.02.2023 09:11
von hk3003
Auch als Textfeld wird nichts angezeigt. Ich habe bei der Felddefinition im Formular einen Standardwert angegeben, auch dieser wird nicht angezeigt. Daher vermute ich, dass es bereits bei der Definition des Feldes ein Problem gibt.
Wenn ich die Felder mit dem Tabulator weitergehe und zum Feld "Wert" komme wird auch der Cursor nicht im Feld angezeigt. Es kann daher auch nichts eingegeben werden.

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Sa, 25.02.2023 10:27
von F3K Total
Moin,
ich verstehe nicht, wozu du ein Makro benötigst.
Den Wert kannst du einfach in einer Abfrage berechnen:
Q.png
Q.png (17.66 KiB) 2785 mal betrachtet
...die dann die Datengrundlage für das Formular ist:
F.png
F.png (9.18 KiB) 2785 mal betrachtet
Nur darauf achten, dass die berechneten Felder "Wert" die EIgenschaft "Eingabe erforderlich = Nein" haben.
E.png
E.png (12.32 KiB) 2785 mal betrachtet
Beispiel anbei.

Gruß R

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Sa, 25.02.2023 11:17
von hk3003
Ich kann keine Abfrage machen, weil ich die Daten ja erst im Formular erfasse,
lg heinz

PS: Kannst du mir sagen wie du die Screenshots einbinden tust?

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Sa, 25.02.2023 11:30
von F3K Total
Moin,
wo erfaßt du denn die Daten? In Base? In einer Tabelle?
Die Abfrage basiert auf der Tabelle, auch in meinem Formular werden die Daten erfasst.
hk3003 hat geschrieben: Sa, 25.02.2023 11:17 Ich kann keine Abfrage machen, weil ich die Daten ja erst im Formular erfasse,
Zum Einbinden von Screenshot, erstmal als Dateianhang hochladen, dann findest du bei der hochgeladenen Datei einen Knopf "Im Beitrag anzeigen"
Gruß R

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Sa, 25.02.2023 11:43
von hk3003
Ich habe mir deine odb angesehen. Nun ist mir einiges klarer. Werde es nun mit einer Abfrage probieren,
vielen Dank einstweilen, heinz

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Sa, 25.02.2023 15:14
von hk3003
Ich habe nun über eine Abfrage berechnet und diese Abfrage als Basis für das Unterformular herangezogen. Das funktioniert nun gut. Aber nun kann keine Transaktion erfasst oder geändert werden. Woran kann das liegen?
Ich habe die odb als Dateianhang beigelegt.
TransaktionenErfassen.png
TransaktionenErfassen.png (83.83 KiB) 2750 mal betrachtet

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: Sa, 25.02.2023 18:36
von F3K Total
Moin,
du hast deine Abfrage aus zwei Tabellen zusammengebaut. Damit ist sie erstmal nicht beschreibbar.
Es ist zwar möglich, indem man alle beteiligten PRIMÄRSCHLÜSSEL aller beteiligten Tabellen in die Abfrage aufnimmt, führt aber erfahrungsgemäß vor allem in Unterformularen zu Problemen.
Wenn sich die Abfrage nur auf Tabelle T_Transaktionen bezieht, gibt es keine Probleme. So sollte die Abfrage lauten:

Code: Alles auswählen

SELECT
    "ID",
    "Empf",
    "Börse",
    "Datum",
    "Aktion",
    "Status",
    "Menge",
    "Kurs",
    "Menge" * "Kurs" AS "Wert",
    "Gebühren",
    "KEST",
    "T_Stamm_ID"
FROM
    "T_Transaktionen"
Gruß R

Re: Einen Wert in Formular errechnen und anzeigen

Verfasst: So, 26.02.2023 09:35
von hk3003
Ja, jetzt funktionierts!
Herzlichen Dank für die Hilfe,
lg heinz

Re: [gelöst]Einen Wert in Formular errechnen und anzeigen

Verfasst: So, 26.02.2023 10:04
von F3K Total
Moin,
kleiner Tipp am Rande, wenn du gerne die Bezeichnung aus der Tabelle T_Stamm im UNterformular angezeigt bekommen möchtest, geht diese Abfrage, die eine korrelierende Unterabfrage enthält:

Code: Alles auswählen

SELECT "ID",
    "Empf",
    "Börse",
    "Datum",
    "Aktion",
    "Status",
    "Menge",
    "Kurs",
    "Menge" * "Kurs" AS "Wert",
    "Gebühren",
    "KEST",
    "T_Stamm_ID",
    (SELECT "Bezeichnung" FROM "T_Stamm" WHERE "ID" = "T_Stamm_ID") AS "Bezeichnung"
FROM
    "T_Transaktionen"
Gruß R