Hallo liebe ACCESS Spezialisten,
bastele schon eine Weile umher, ohne Ergebnis.
Ich bräuchte den Wert eines berechneten Feldes aus Report_1 (z.B. Feld_X) um dieses in einem Berichtkopf eines Formulars anzuzeigen.
Geht da irgendwas mit DLookUp, ich war leider erfolglos.
Vielen Dank im Voraus.
Beste Grüße aus Bayern
Hallo,
berechne doch auch im 2. Bericht?
Es wäre sicherlich hilfreich wenn beschreibst was du rechnest.
Hallo MzKIMu,
vielen Dank für die erste Antwort.
Ich habe mir für meine Büro eine kleine Kostenverfolgung ,,gebastelt", hierzu wurde mir im Forum schon sehr viel geholfen, nochmals vielen Dank an ALLE, die mir geholfen haben.
Bericht_X.png
Im Bericht_X, ermittle ich den Stand des Zuschusses, der ist abhängig von Rechnungsbeträgen die förderfähig sind. Wenn der Maximalbetrag erreicht wird steht dieser Wert im Feld, im Beispiel wären es 65TEURO.
Berichtskopf_2.png
Im Berichtkopf_2, möchte ich diesen Wert angezeigt bekommen, und wenn möglich für weitere Berechnungen verwenden.
Da die zugrunde gelegten Abfragen nichts miteinander zu tun haben und der Zuschuss im Bericht_X berechnet wird, dachte ich, dass man mit der Funktion DLOOKUP, diesen Wert irgendwie angezeigt bekommt.
Schon mal vielen Dank im Voraus, wenn es irgendeinen Lösungsansatz gibt.
Grüße aus Bayern
Hallo,
mit DLookup geht das nicht. Dlookup kann nur auf Felder/Inhalte einer Tabelle oder Abfrage zugreifen. Du kannst im 2.Bericht auf ein Feld des 1.Berichtes zugreifen, aber dazu muss der 1.Bericht auch geöffnet sein. Ich habe das aber noch nie gemacht, daher kann ich dazu nichts raten.
Warum wendest Du die gleiche Berechnung nicht auch im 2.Bericht an ?
Wenn Du in Bericht 1 rechnen kannst, so sollte das doch auch in Bericht 2 funktionieren.
Hallo,
du solltest die Berechnung in eine VBA Funktion auslagern und dann kannst du von jeder Stelle aus diese Funktion aufrufen.
Gruß
Knobbi38
Hi Knobbi38,
danke für die Antwort, ja das würde ich gerne machen.
Mein Problem ist, dass ich schlicht und ergreifend zu wenig Grundkenntnisse in VBA habe :'( und mir bewusst ist, wenn eine Klammer, Semikolon... falsch sitzt ich Stunden oder besser Tage verbringe um den Fehler zu finden.
Habe keine Ahnung wie ich die zugrundeliegende Abfrage in die Funktion bekomme?
Grundlage ist eine Abfrage in der ich eine Summe eines Betrages berechne, siehe SQL
SELECT tbl_Belege.[Beleg-NR], tbl_Firma.Firmenname, tbl_Belege.Datum, tbl_Belege.KZ, tbl_Gewerk.Gewerk, tbl_Belege.Nettobetrag, tbl_Belege.MWSt, tbl_Belege.Bruttobetrag, tbl_Belege.BruttoEndbetrag, tbl_Belege.P_Nr, tbl_Belege.Typ_Nr, tbl_KoGR.KoGr, tbl_KoGR.Kostengruppe, tbl_EnEV.EnEV, qry_Projekt_Belege.F_Ge, qry_Projekt_Belege.max_Ge, qry_Projekt_Belege.F_FP, qry_Projekt_Belege.max_FP, qry_Projekt_Belege.Zuschuss, qry_Projekt_Belege.P_ID, qry_Projekt_Belege.Projekt_ID
FROM tbl_KoGR INNER JOIN (tbl_Gewerk INNER JOIN (tbl_Firma INNER JOIN (tbl_EnEV INNER JOIN (tbl_Belegtyp INNER JOIN (qry_Projekt_Belege INNER JOIN tbl_Belege ON qry_Projekt_Belege.Projekt_ID = tbl_Belege.P_Nr) ON tbl_Belegtyp.Typ_ID = tbl_Belege.Typ_Nr) ON tbl_EnEV.EnEV_ID = tbl_Belege.EnEV_Nr) ON tbl_Firma.F_ID = tbl_Belege.F_Nr) ON tbl_Gewerk.G_ID = tbl_Belege.G_Nr) ON tbl_KoGR.KoGr_ID = tbl_Belege.Ko_Nr
WHERE (((tbl_Belege.P_Nr)=Forms!frmProjekt!P_ID) And ((tbl_Belege.Typ_Nr)=3) And ((tbl_EnEV.EnEV)<>"NEIN"))
ORDER BY tbl_Firma.Firmenname, tbl_Belege.Datum, tbl_Belege.Typ_Nr DESC;
Der wird dann mit der Formel des Berichtes ausgewertet.
'=Wenn([EnEV]="BAFA";([F_Ge]*[AccessTotalsBruttobetrag2]);[Zu_431])
'=Wenn([EnEV]="BAFA";([Zu_Bafa_max]);[Zu_431_max])
Das Prinzip ist mir klar, aber der Syntax... ::)
Danke für eine Tipp, ich hieraus eine Funktion erstelle die ich dann "überall" abrufen könnte.
Schönen Sonntag.
Grüße aus dem verschneiten Bayern
Hallo,
hier mal SQL formatiert.
SELECT [Beleg-NR],Firmenname,Datum,KZ,Gewerk,Nettobetrag,MWSt,Bruttobetrag,BruttoEndbetrag
,P_Nr,Typ_Nr,KoGr,Kostengruppe,EnEV,F_Ge,max_Ge,F_FP,max_FP,Zuschuss,P_ID,Projekt_ID
FROM tbl_KoGR
INNER JOIN (
tbl_Gewerk INNER JOIN (
tbl_Firma INNER JOIN (
tbl_EnEV INNER JOIN (
tbl_Belegtyp INNER JOIN (
qry_Projekt_Belege INNER JOIN tbl_Belege ON qry_Projekt_Belege.Projekt_ID = tbl_Belege.P_Nr
) ON tbl_Belegtyp.Typ_ID = tbl_Belege.Typ_Nr
) ON tbl_EnEV.EnEV_ID = tbl_Belege.EnEV_Nr
) ON tbl_Firma.F_ID = tbl_Belege.F_Nr
) ON tbl_Gewerk.G_ID = tbl_Belege.G_Nr
) ON tbl_KoGR.KoGr_ID = tbl_Belege.Ko_Nr
WHERE P_Nr = Forms!frmProjekt!P_ID
AND Typ_Nr = 3
AND EnEV <> "NEIN"
ORDER BY Firmenname
,Datum
,Typ_Nr DESC;Zitatin der ich eine Summe eines Betrages berechne, siehe SQL
Ich kann da keine Summenbildung erkennen.
Hallo Paul,
es wäre schön gewesen, wenn du uns einen formatierten und damit lesbareren SQL Ausdruck gezeigt hättest:
ZitatSELECT
B.[Beleg-NR], B.Datum, B.KZ, B.Nettobetrag, B.MWSt, B.Bruttobetrag,
B.BruttoEndbetrag, B.P_Nr, B.Typ_Nr,
F.Firmenname,
G.Gewerk,
K.KoGr, K.Kostengruppe,
E.EnEV,
Q.F_Ge, Q.max_Ge, Q.F_FP, Q.max_FP, Q.Zuschuss, Q.P_ID, Q.Projekt_ID
FROM tbl_KoGR AS K
INNER JOIN (
tbl_Gewerk AS G INNER JOIN (
tbl_Firma AS F INNER JOIN (
tbl_EnEV AS E INNER JOIN (
tbl_Belegtyp AS T INNER JOIN (
qry_Projekt_Belege AS Q INNER JOIN tbl_Belege AS B
ON Q.Projekt_ID = B.P_Nr
) ON T.Typ_ID = B.Typ_Nr
) ON E.EnEV_ID = B.EnEV_Nr
) ON F.F_ID = B.F_Nr
) ON G..G_ID = B.G_Nr
) ON K.KoGr_ID = B.Ko_Nr
WHERE
B.P_Nr = Forms!frmProjekt!P_ID
AND B.Typ_Nr = 3
AND E.EnEV <> "NEIN"
ORDER BY F.Firmenname,
B.Datum,
B.Typ_Nr DESC;
Ich sehe nicht, wo da in deinem SQL Ausdruck eine Summe berechnet wird und was mir noch weniger gefällt ist der Verweis auf ein Feld in einem Formular:
B.P_Nr = Forms!frmProjekt!P_IDUnd die beiden Wenn-Ausdrücke stehen auch leer im Raum, ohne irgend welchen Bezug.
Sorry, aber damit kann niemand etwas anfangen.
Gruß
Knobbi38
Nachtrag:
Oh, ich sehe gerade, daß Klaus etwas schneller war.
Servus Klaus,
Servus Knobi38,
wollt ihr euch wirkliche mit mir den Sonntag versauen :)
Die Summen habe ich im Bericht gebildet... siehe Foto
Screenshot 2025-02-16 134912.png
Function GetTableValue() As Variant
Dim Wert1 As Variant
Dim Wert2 As Variant
' Wert = DLookup("[Bruttobetrag]", "[tbl_Belege]", "[Bedingung]")
' Wert = DLookup("SummevonBruttobetrag", "[qry_X_BAFA_2]", "EnEV=431")
Wert1 = DLookup("SummevonBruttobetrag", "[qry_X_BAFA_2]", "")
Wert2 = DLookup("SummevonBruttobetrag", "[qry_X_BAFA_3]", "")
'GetTableValue = Array(Wert1, Wet2)
GetTableValue = Wert1
GetTableValue = Wert2
End Function
Murkse schon sein morgens um 6:00 an einer Funktion, für die ich noch zwei separate Abfragen mit Summenbildung erstellt habe, bekomme aber bei Debug.Print nur einen Wert :'(
Wahrscheinlich irgendwie die falsche Vorgehensweise von mir ?
Nochmal vielen Dank, mit besten Grüßen Otto
Hallo,
ZitatDie Summen habe ich im Bericht gebildet...
Und warum machst Du dann diese verwirrende Aussage:
Zitatin der ich eine Summe eines Betrages berechne, siehe SQL
Zeige mal diese Abfrage [qry_X_BAFA_2] (SQL).
Ist die Summe je Projekt und je Gewerk bzw. je EnEv ?
Die gezeigte Abfrage ist das die Abfrage des gezeigten Berichtsbildes ?
Servus Klaus,
vielen Dank.
Die erste große SQL ist Grundlage des Berichtes, hier kann ich keine Summen bilden, da immer eine Aggregats Fehlermeldung kommt, was auch immer das ist.
Deshalb habe ich aus dieser Abfrage die beiden Abfragen qry_X_BAFA_2 und qry_X_BAFA_3 erstellt mit der Bedingung "EnEV", siehe SQL.
SELECT Sum(qry_X_BAFA.Bruttobetrag) AS SummevonBruttobetrag, qry_X_BAFA.max_Ge, qry_X_BAFA.max_FP, qry_X_BAFA.Zuschuss, qry_X_BAFA.Firmenname
FROM qry_X_BAFA
WHERE (((qry_X_BAFA.EnEV)="431"))
GROUP BY qry_X_BAFA.max_Ge, qry_X_BAFA.max_FP, qry_X_BAFA.Zuschuss, qry_X_BAFA.Firmenname;
und
SELECT Sum(qry_X_BAFA.Bruttobetrag) AS SummevonBruttobetrag, qry_X_BAFA.max_Ge, qry_X_BAFA.max_FP, qry_X_BAFA.Zuschuss, qry_X_BAFA.Firmenname
FROM qry_X_BAFA
WHERE (((qry_X_BAFA.EnEV)="BAFA"))
GROUP BY qry_X_BAFA.max_Ge, qry_X_BAFA.max_FP, qry_X_BAFA.Zuschuss, qry_X_BAFA.Firmenname;
Der Bruttobetrag ist je nach EnEV einmal (BAFA ist 50%) / (431 ist 20%) zu berechnen, wenn der jeweilige Maximalbetrag erreicht wir, steht dann max ist BAFA 60.000; 413 = 5000)
Die Datenbank ist insgesamt ziemlich komplex.
Tabellen sind sehr viele, die wichtigsten für die Kostenverfolgung sind.
Projekt: Grundlage, es gibt auch Projekte die nicht Förderfähig sind
Belege: hier gebe ich Rechnungen ein und lege hier fest, falls förderfähig (Programme BAFA oder 431) fest.
Damit meine Bauherren nicht irregeführt werden, wollte ich in dem Bericht Kostenverfolgung immer den aktuellen Stand der möglichen Förderung anzeigen, dacht mir das bringe ich irgendwie hin, könnte aber im Bericht auch per Hand den aktuellen Betrage eintragen, das wäre Plan-B, ist aber nicht so toll :'(
Nochmal Danke und schönen Sonntag, Gruß Otto