Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Summenfelder im Formularfuß

Begonnen von Shaddom, Mai 23, 2011, 14:57:07

⏪ vorheriges - nächstes ⏩

Shaddom

Hallo miteinander:

Ich versuche gerade eine "DomSumme" in einem Endlosunterformular zu bilden; was mir allerdings Probleme bereitet.

Allgemein gilt ja : =DomSumme("Feld";"tbl";"Kriterium")

Das Endlosformular hat folgende Felder : [ID] , [Datum] , [Gewicht]

Bei den Kriterium hab ich jedoch Probleme. Folgende müsste ich hineinpacken; bekomme es aber nicht zusammen:

Das Datum muss größer als der 1.1(mm/tt) und kleiner als der 8.3[mm/tt] sein "Datum>#01/01# AND Datum<#08/03# - Vermutlich gehärt DatePart mit eingebaut

Das Jahr muss dem eines ungebunden Feldes im Hauformular entsprechen bzw. sollte da nichts eingetragen sein alle Jahre zusammenzähelenHabe nur etwas in der Richtung: "DatePart('yyyy', Datum) = '" & Me!Jahr_Abfrage & "'"

ID muss gelich wie die ID meines Hauptformulares sein [Vernüpfung UF und HF übder ID][ID]= & Me!ID

Anbei immer meine Versuchsfetzen! Vielleicht kann mir jemand helfen sie zusammenzubauen

Lg
Shaddom

database

Hallo,

werden denn die Daten für das Unterformular nicht aus einer Abfrage gewonnen?
Somit wären diese ja von der Abfrage her schon auf den Datumsbereich eingeschränkt, was ja auch Sinn machen würde,
da sonst u.U. Datensätze im Unterformular angezeigt werden, die mit der zu bildenden Summe nicht im Einklang stehen.

Ein Feld im Formularfuß mit der Formel    =Summe([Gewicht])   würde m.E. dann in dem Fall schon genügen.



Shaddom

@database Danke für die Antwort aber das Hilft ir leider nicht weiter!

Es müssen im Unterformular alle Einträge von [Datum] + [Gewicht] angezeigt werden. Bei bedarf ein Filter mit einem belieben Jahr aktiviert werden; Die Summe von Gewicht über 6 verschiedene Zeiträume ausgegeben werden.


Shaddom

@DF6GL Danke! Das ist ein Thema das auch von mir erstellt wurde - Leider auch dort noch keine Antwort .. Also keine wirkliche Hilfe :)

Derzeit bin ich auf folgenden Stand :

=DomSumme("[Feld_a]";"tbl_y";"[ID]=Formulare![fml_x]![ID] AND XXX") Mir fehlt Dort wo das XXXX steht nur noch ein Kriterium für "Datum>#01/01/yyyy# AND Datum<#08/03/yyyy# . Wobei das yyyy aus einer  Textfeld (TF_15) aus fml_x kommen soll.

Hat jemand den entscheidenden Hinweis ?

Lg
Shad

database

#5
Hmmm...

Woher kommen denn die Datumseinträge   tt.mm.  ???

Wenn die so wie das Jahr auch aus Textfeldern auf dem Hauptformular stammen, was ich ja schwer vermute, dann musst du halt das relevante Datum erstmal zusammensetzen.
In Etwa so:

Dim datVon as String, datBis as String, sumFeld as Double

datVon = Me!txtDatVon & me!txtJahr
datBis = Me!txtDatBis & me!txtJahr

Um das Datum in einem SQL-String verwenden zu können muss es jedoch ind US- oder ISO-Format konvertiert werden:

datVon = Format(Me!txtDatVon & me!txtJahr, "\#yyyy\-mm\-dd\#")
datBis = Format(Me!txtDatBis & me!txtJahr, "\#yyyy\-mm\-dd\#")

Dann setzt du es zum Ermitteln der DomSumme ein:

sumFeld = DSum("Gewicht","Tabelle"," [ID]=" & Me!![ID] & " AND Datum >" & datVon & " AND Datum <" & datBis)

Den Wert der Variablen sumFeld kannst du dann einem beliebigen Feld auf deinen Formularen zuweisen.

Das Ganze verpackst du in ein Ereignis, welches ausgelöst wird um die Filterung zu veranlassen.

HTH

p.s. Und schließe den Thread im anderen Forum, wenn du der Meinung bist, dass dort keine passenden Antworten mehr kommen sonst arbeiten an 2 Stellen die Leute an deinem Problem!

Shaddom

@database
Vielen Dank für den Hinweis! Ich werde diesen Weg ebenso verfolgen!

Der Tag und Das Monat sind fix vorgegebene Intervalle Nur das Jahr soll aus einem ungebundenen Feld gelesen werden ( Was bei deinem oberen Code kein schweres ist umzubauen :) )

Ich würde es trotzdem nochmal gerne als Steuerelementinhalt probieren: [Jahr_Abfrage] Ist das Ungebundene Feld in Hauptformular:

=DomSumme("[Gewicht]";"tbl_x";"[ID]=Formulare![fml_y]![ID] AND [DATUM] >=#01/01/ & [Jahr_Abfrage]# AND [DATUM] <=#31/03/ & [Jahr_Abfrage]#  ")

database

Hallo,

Zitat>=#01/01/ & [Jahr_Abfrage]#
schaut hochinteressant aus wird aber nicht funktionieren!

Du musst das Datum zuerst als ZEICHENFOLGE zusammenstellen und dann konvertieren.
Ob du Tag und Monat aus einem Textfeld beziehst oder in einer Variablen fix vergibst oder aber auch die fixen Vorgeben
in einer Konstanten definierst bleibt dabei dir überlassen bzw. ist egal.

Also würde es auch so laufen:


Dim tagMonatVon as String, tagMonatBis as String
Dim datVon as String, datBis as String
Dim sumFeld as Double


tagMonatVon = "1.1."
tagMonatBis = "3.8."

datVon =  Format(tagMonatVon & me!txtJahr, "\#yyyy\-mm\-dd\#")
datBis =  Format(tagMonatBis & me!txtJahr, "\#yyyy\-mm\-dd\#")

sumFeld = DSum("Gewicht","Tabelle"," [ID]=" & Me!![ID] & " AND Datum >" & datVon & " AND Datum <" & datBis)


Andere Möglichkeiten der Datumszusammensetzung sehe ich nicht - zumindest nicht in diesem Fall.

ZitatIch würde es trotzdem nochmal gerne als Steuerelementinhalt probieren

Irgendwas MUSS ja die Anzeige der einzelnen Einschränkungen veranlassen - ev. ein Klick auf einen Button oder was weiß ich welcher Vorgang sonst noch in Fraqge kommen könnte.
Diesen jedenfalls kannst du dir ja zu Nutze machen um die Berechnung mittels obigem Codefetzen anzustoßen.
Wenn du dann das Ergebnis in der Variablen 'sumFeld' stehen hast sollte es ja keine große Hexerei sein dem Feld im Formularfuß deines Unterformulars den Wert zuzuweisen:

Me![DeinUFOSteuerlementImHAFo]![DeinSummenfeld] = sumFeld

oder

Me![DeinUFOSteuerlementImHAFo]![DeinSummenfeld] = DSum("Gewicht","Tabelle"," [ID]=" & Me!![ID] & " AND Datum >" & datVon & " AND Datum <" & datBis)








Shaddom

@database Ich sag mal vielen herzlichen Dank für Deine Bemühungen! Alles klappt nun so wie es soll!

Für Alle Die ein ähnliches Problem haben schlage ich hier mal den Code an:

Ausgangssituation: Hauptformular mit einem Unterformular; Unterformular ist ein Endlosformular, welches die Felder [Datumsfeld] sowie [Gewicht] enthält. Da nun eine Liste über alle Eintragungen entsteht soll diese nach einem bestimmten Jahr gefiltert und die Gewichtssummen pro Quartal(oder einer belieben Zeitdauer) berechnet werden; das HF enthält ein ungebundenes Feld mit dem Namen [Jahr_Abfrage] und ist über das Feld [ID] ( Primärschlussel) mit dem UFO verknüpft

   
   
    'Variablen
   
    Dim D1_Q1 As String, D2_Q1 As String, D1_Q2 As String, D2_Q2 As String, D1_Q3 As String, D2_Q3 As String, D1_Q4 As String, D2_Q4 As String
    Dim datVonQ1 As String, datBisQ1 As String, datVonQ2 As String, datBisQ2 As String, datVonQ3 As String, datBisQ3 As String, datVonQ4 As String, datBisQ4 As String
    Dim sumFeldQ1 As Double, sumFeldQ2 As Double, sumFeldQ3 As Double, sumFeldQ4 As Double
   
    'Festlegen der gewünschten zeitlichen Abstände ( hier alle 4 Quartale )

    D1_Q1 = "1.1."
    D2_Q1 = "31.3."
    D1_Q2 = "1.4."
    D2_Q2 = "30.6."
    D1_Q3 = "1.7."
    D2_Q3 = "30.9."
    D1_Q4 = "1.10."
    D2_Q4 = "31.12."
   
    ' konvertiert des Datums ( Von Access benötigt )

    datVonQ1 = Format(D1_Q1 & Me!Jahr_Abfrage, "\#yyyy\-mm\-dd\#")
    datBisQ1 = Format(D2_Q1 & Me!Jahr_Abfrage, "\#yyyy\-mm\-dd\#")
    datVonQ2 = Format(D1_Q2 & Me!Jahr_Abfrage, "\#yyyy\-mm\-dd\#")
    datBisQ2 = Format(D2_Q2 & Me!Jahr_Abfrage, "\#yyyy\-mm\-dd\#")
    datVonQ3 = Format(D1_Q3 & Me!Jahr_Abfrage, "\#yyyy\-mm\-dd\#")
    datBisQ3 = Format(D2_Q3 & Me!Jahr_Abfrage, "\#yyyy\-mm\-dd\#")
    datVonQ4 = Format(D1_Q4 & Me!Jahr_Abfrage, "\#yyyy\-mm\-dd\#")
    datBisQ4 = Format(D2_Q4 & Me!Jahr_Abfrage, "\#yyyy\-mm\-dd\#")
   
    'Quartalsfelder ausrechnen und dem UFO zuweisen
   
    sumFeldQ1 = DSum("Gewicht", "NamesDEINESUFO", " [ID]=" & Me![ID] & " AND Datumsfeld>=" & datVonQ1 & " AND Datumsfeld<=" & datBisQ1)
    Me![BezeichnungDeinesUFOS im HF]![Name_des_ungebundenen_Feldes_für_Summe_1._Abschnitt_im_UF] = sumFeldQ1
   
    sumFeldQ2 = DSum("Gewicht", "NamesDEINESUFO", " [ID]=" & Me![ID] & " AND Datumsfeld>=" & datVonQ2 & " AND Datumsfeld<=" & datBisQ2)
    Me![BezeichnungDeinesUFOS im HF]![Name_des_ungebundenen_Feldes_für_Summe_2._Abschnitt_im_UF] = sumFeldQ2
   
    sumFeldQ3 = DSum("Gewicht", "NamesDEINESUFO", " [ID]=" & Me![ID] & " AND Datumsfeld >=" & datVonQ3 & " AND Datumsfeld<=" & datBisQ3)
    Me![BezeichnungDeinesUFOS im HF]![Name_des_ungebundenen_Feldes_für_Summe_3._Abschnitt_im_UF] = sumFeldQ3
   
    sumFeldQ4 = DSum("Gewicht", "NamesDEINESUFO", " [ID]=" & Me![ID] & " AND Datumsfeld>=" & datVonQ4 & " AND Datumsfeld<=" & datBisQ4)
    Me![BezeichnungDeinesUFOS im HF]![Name_des_ungebundenen_Feldes_für_Summe_4._Abschnitt_im_UF] = sumFeldQ4

    'Filter von [Datumsfeld] für UFO nach ungebunden Feld [Jahr_Abfrage]
   
    Me.ufml_abh.Form.Filter = "DatePart('yyyy', Datumsfeld) = '" & Me!Jahr_Abfrage & "'"
    Me!ufml_abh.Form.FilterOn = True


Einen schönen Abend
Lg
Shad