PDA

Vollständige Version anzeigen : Werte addieren zwischen Sub-Forms


Cuugan
03.04.2004, 18:17
Hallo Leute,

ich möchte gerne Werte aus zwei Sub-Forms addieren und in einem dritten wiedergeben.

Hier mal ein Screenshot:
http://www.hans-hoevermann.de/access/problem-summe.gif

Ich möchte die Summe aus den Formularfüßen subMaterial100 mit der Summe aus SubStunden addieren und in subTexte in dem noch leeren Textfeld anzeigen.
Die Daten brauchen natürlich nicht gespeichert werden in Tabellen, sondern dienen nur der Übersichtlichkeit.

Hättet ihr da eine Idee?

die Summe der subMaterial100, sowie SubStunden werden wie folgt gebildet:

=Summe(Nz([EnzPreis];0))

gruss
hansi

Arne Dieckmann
03.04.2004, 18:22
Dann füge in "subTexte" ein Textfeld mit folgendem Steuerelementinhalt ein:

=Forms!HF!subMaterial100.Form!SFeld1+Forms!HF!SubStunden.Form!SFeld2

Für "HF" muss der Name des Hauptformulares eingesetzt werden.

Für "subMaterial100" bzw. "SubStunden" die Namen der Unterformularsteuerelemente im Hauptformular.

"SFeld1" und "SFeld2" sind die beiden Textfelder aus den Unterformularen.

Cuugan
03.04.2004, 20:44
hi,

okay...das hatte ich auch so ähnlich ....

nochmal ne andere frage.

wenn ich bereits in einer abfrage die gesamtsumme ermittelt habe, die ich jetzt in dieses feld eintragen möchte.
- das endlosformular aber von einer anderen abfrage bestückt wird, so dass ich das textfeld nicht direkt binden kann; gibt es denn auch eine einfache möglichkeit?

also SubTexte bezieht daten aus qryVersuch
im endlosformular habe ich hinten ein textfeld zugefügt.
-> dieses könnte seine daten aus einer abfrage namens qryProMaterial beziehen

alle versuche in den letzten stunden schlugen fehl...habt ihr ne idee?

Arne Dieckmann
03.04.2004, 20:53
DLookup() oder ein Ersatz dafür ("MLookup" bzw. "TLookup" kennst Du Doch schon, oder?) wäre dann eine Möglichkeit. S. dazu http://home.arcor.de/ar/arne.d/datenbanken/grundlagen/formulare/index.html#SEC1

Johnny Loser
04.04.2004, 02:11
Hi Hansi,

füge folgende Prozedur in Dein Modul CommonFunctions ein

Public Function MSum(Expression As String, Domain As String, _
Optional Criteria) As Variant
Dim strSQL As String
strSQL = "SELECT Sum(" & Expression & ") FROM " & Domain
If Not IsMissing(Criteria) Then strSQL = strSQL & " WHERE " & Criteria
MSum = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenForwardOnly)(0)
End Function
qryVersuch erweiterst Du über ein Feld

PosPreis: [menge]*(MSum("EnzPreis";"qryProMaterial";"Projekt_ID=" & [Projekt_ID] & " AND Text_ID=" & [tblTexte].[Text_ID])+MSum("EnzPreis";"qryProStunden";"Projekt_ID=" & [Projekt_ID] & " AND Text_ID=" & [tblTexte].[Text_ID]))
Das neue Feld in subTexte bekommt als Steuerelementinhalt PosPreis

Damit bei Änderungen in den beiden Detail-Formularen die Anzeige in subTexte aktualisiert wird, schreibst Du jeweils in das Ereignis "Nach Aktualisierung" der Formulare

Me.Parent!subTexte.Requery

P.S.: Du solltest mal Deinen Datenbestand ein bißchen ausmisten. Es existieren in Deinen Projekten zuviele Text-Material-Kombinationen, die in der Tabelle tblText_Material nicht existieren.

Arne Dieckmann
04.04.2004, 15:00
@Johnny: Wenn es das war (ich denke schon), dann funkt Ihr beiden auf einer Wellenlänge. ;)
Ist sicherlich auch sinnvoll, die Summe in der Datenherkunft zu berechnen, da man bei einem Endlosformular die sonst bekannten Probleme bekommt (das ungebundene Feld nimmt überall den gleichen Wert an...)

Ich habe auch schon an einen DSum-Ersatz gedacht, bin aber davon ausgegangen, dass dieser nicht benötigt wird: wenn ich bereits in einer abfrage die gesamtsumme ermittelt habe, die ich jetzt in dieses feld eintragen möchte.

Johnny Loser
04.04.2004, 15:23
@Arne

Ich glaube, ich bin Dir gegenüber im Vorteil, da ich eine Kopie der DB besitze.

MSum(DSum) ist notwendig, da in subTexte ja die Summen aller angezeigten Datensätze berechnet und angezeigt werden sollen. Die in den beiden unteren UFos ermittelten Summen beziehen sich ja ausschließlich auf den in subTexte selektierten Datensatz.

@Hansi

In den beiden unteren UFos wird die Menge aus SubTexte nicht berücksichtigt. Ist das Absicht?

Cuugan
04.04.2004, 16:19
Original geschrieben von Johnny Loser
@Arne

Ich glaube, ich bin Dir gegenüber im Vorteil, da ich eine Kopie der DB besitze.

MSum(DSum) ist notwendig, da in subTexte ja die Summen aller angezeigten Datensätze berechnet und angezeigt werden sollen. Die in den beiden unteren UFos ermittelten Summen beziehen sich ja ausschließlich auf den in subTexte selektierten Datensatz.

@Hansi

In den beiden unteren UFos wird die Menge aus SubTexte nicht berücksichtigt. Ist das Absicht?

@arne: ...*lach* ...ja, Johnny hat sich meiner angenommen und mich zu seinem privaten schüler gemacht. Ich bin also in einer sehr glücklichen Position.

@johnny: ja, die beiden unteren ufos sollen nur eine art zwischenstand anzeigen, so dass man gleich weiss wieviel jeweils die materialien der jeweiligen texte kosten. Erst bei SubTexte wird die Summe aus SubMaterial100 und SubStunden gebildet. Ich habe mittlerweile auch noch ein weiteres Feld eingefügt indem ich dann diese Gesamtsumme * deiner Lösung nehme. Funktioniert gut...

Ich schicke dir heute abend mal meine gesäuberte und aktuellste version
Dank an euch beide,

Gruss
Hansi