jhaustein
Goto Top

Berechnung in Bericht in Access

Hallo Gemeinschaft,

ich habe Probleme bei der Berechnung eines Wertes in einem Bericht

habe folgende Tabellen
Objekt
idobjekt__objektnr__objektname_objektprovision

Reservierung
idres__idobjekt__vonres__bisres__preisres

Saison
idsaison__vonsai__bissai

Eigentuemer
ideigen__nameeigen__strasseeigen_plzeigen__plzort

nun erstelle ich nachdem ein Kunde ein Objekt verlassen hat eine Abrechnung

in dieser Abrechnung kommt auch der preisres vor

wenn der Reservierungszeitraum komplett ausserhalb der Saison ist, dann berechne ich im Bericht es so
preisres*(1-objektprovision)

wenn der Reservierungszeitraum zum teil in der Saisonzeit liegt, dann müsste es so berechnet werden
(Anzahl der Tage ausserhalb der Saison) *preisres*(1-objektprovision)

könnt ihr mir dabei bitte helfen, wie ich das für das entsprechende Objekt berechnen kann und im Bericht angezeigt bekomme

Content-ID: 2387178562

Url: https://administrator.de/forum/berechnung-in-bericht-in-access-2387178562.html

Ausgedruckt am: 22.12.2024 um 18:12 Uhr

DivideByZero
DivideByZero 03.04.2022 um 10:34:18 Uhr
Goto Top
Guten Morgen,

mit Verlaub, das ist so spezifisch, dass es nicht zu verstehen ist ohne Code, Beispiel, bessere Erklärungen. Was hast Du probiert, was für Werte kommen dabei heraus oder nicht heraus? Du kannst auch außerhalb von einem Bericht so eine Berechnung in einem beliebigen Modul anstellen und bspw. über eine MessageBox anzeigen lassen. Wenn es dann klappt, kannst Du das in den Bericht übernehmen.

Gruß

DivideByZero
1915348599
1915348599 03.04.2022 aktualisiert um 11:02:27 Uhr
Goto Top
Bidde, Doku scheint noch immer kein Freund von dir zu sein ...
https://support.microsoft.com/de-de/office/wenn-funktion-32436ecf-c629-4 ...
jhaustein
jhaustein 03.04.2022 um 19:23:40 Uhr
Goto Top
Lieben Dank – ich weiß nur nicht wie ich die Berechnungsfunktion aufbauen soll-
jhaustein
jhaustein 03.04.2022 um 19:24:31 Uhr
Goto Top
Weil immerhin – kann in der Tabelle Saison ja mehrere Saison Zeiten eingetragen sein innerhalb eines Jahres
1915348599
1915348599 04.04.2022 aktualisiert um 07:45:20 Uhr
Goto Top
Weil immerhin – kann in der Tabelle Saison ja mehrere Saison Zeiten eingetragen sein innerhalb eines Jahres
Oh man ... ist doch das gleiche wie hier in einem deiner letzten Beiträge, nimmst du halt die Switch-Funktion wenn es mehrere Bedingungen sind, dann brauchst du nicht verschachteln ...
Bedingte Berechnung in einer Access Abfrage
jhaustein
jhaustein 04.04.2022 um 13:41:25 Uhr
Goto Top
kannst du mir das vielleicht an einem bsp zeigen
GeradeKurve
GeradeKurve 04.04.2022 um 14:11:59 Uhr
Goto Top
Vielleicht bietet sich hier ein berechnetes Feld an:

https://support.microsoft.com/de-de/office/video-kombinieren-von-feldern ....
jhaustein
jhaustein 04.04.2022 um 14:17:10 Uhr
Goto Top
ich weiss bloss nicht, wie das coding für die query aussehen soll, damit ich es berechnen kann
it-frosch
it-frosch 04.04.2022 um 14:41:08 Uhr
Goto Top
Hallo jhaustein,

wie wäre es mit einigen youtube Videos zu Access und Queries?
Wenn du dann nicht weiter kommst, kannst du hier fragen.
Aber du solltest dich schon etwas selbst einarbeiten. face-wink

grüße vom it-frosch
jhaustein
jhaustein 04.04.2022 um 14:52:37 Uhr
Goto Top
alles schon probiert - weiis nicht, wie ich den bereich eingrenzen soll
erikro
erikro 04.04.2022 aktualisiert um 20:07:00 Uhr
Goto Top
Moin,

Zitat von @jhaustein:

Weil immerhin – kann in der Tabelle Saison ja mehrere Saison Zeiten eingetragen sein innerhalb eines Jahres

Problem erkannt. face-wink Jetzt die Lösung:

Der Aufbau Deiner DB hat einen Fehler, der diese Auswertung verhindert. Es gibt keine Verbindung zwischen Reservierung und Saison. Das ist eine 1:n-Beziehung. Die 1 steht bei Reservierung und das n bei Saison. Es fehlt also ein Feld, in das der Primärschlüssel der Saison eingetragen wird, zu der die Reservierung gehört. Es sei denn, es kann auch vorkommen, dass sich eine Reservierung über mehrere Saisons erstrecken kann. Dann wird es deutlich komplizierter.

Nun gibt es zwei Möglichkeiten: Du machst es Dir einfach und baust ein Nachschlagefeld mit dem Assistenten. Dann muss bei der Datenpflege das händisch ausgewählt werden. Fehleranfällig aber einfach.

Oder Du machst es richtig. Dann schreibst Du ein VB-Code, der Anfangs- und Enddatum der Reservierung ausliest und den entsprechenden Schlüssel dynamisch einträgt. Aber ich glaube, Du nimmst eher die erste Variante. face-wink Nennen wird das Feld mal saisonres. Liegt die Reservierung in keiner Saison, dann bleibt es leer. Also keine referentielle Integrität einschalten.

Dann würde ich zur Lösung des Problems noch eine berechnete Spalte notsaisonres (Typ Integer) in die Tabelle Reservierung einfügen. In der steht dann sowas wie

if(vonres < vonsai) {

    vonsai-vonres

}
elseif(bisres > bissai) {

    bisres-bissai

}
else {

    0

}

Das ist Pseudocode und wird so in VBA nicht funktionieren. Das ist nur ein Hinweis, wie die Lösung aussehen könnte.

Hast Du das umgesetzt, dann ist der Rest banal.

hth

Erik
jhaustein
jhaustein 04.04.2022 um 20:55:04 Uhr
Goto Top
Nicht ganz - wie kann ich die dB hier hochladen
jhaustein
jhaustein 05.04.2022 um 14:45:31 Uhr
Goto Top
lieben DAnk für deinen VB Code Ansatz

denke mal, dass es so nicht funktioniert - müsste das nicht eher eine sql query werden
jhaustein
jhaustein 06.04.2022 um 10:25:14 Uhr
Goto Top
guten morgen - könnt ihr mir vielleicht erklären, wie ich die Anzahl der Tage herausbekomme

also z.b. die Saisonzeiten sind vom 1.4.2022 - 10.10.2022
nun bucht ein gast vom 27.03. - 9.04.

wie würdet ihr es berechnen
erikro
erikro 06.04.2022 um 13:36:44 Uhr
Goto Top
Zitat von @jhaustein:

guten morgen - könnt ihr mir vielleicht erklären, wie ich die Anzahl der Tage herausbekomme

also z.b. die Saisonzeiten sind vom 1.4.2022 - 10.10.2022
nun bucht ein gast vom 27.03. - 9.04.

wie würdet ihr es berechnen

Na so, wie ich es Dir schon erläutert habe. Das kannst Du fast so in ein berechnetes Feld schreiben, sofern die Beziehungen richtig gesetzt sind.
1915348599
1915348599 06.04.2022 aktualisiert um 13:49:13 Uhr
Goto Top
Zitat von @erikro:
Na so, wie ich es Dir schon erläutert habe. Das kannst Du fast so in ein berechnetes Feld schreiben, sofern die Beziehungen richtig gesetzt sind.

Wetten werden ab sofort angenommen das als nächster Post wieder kommt :
ich weiss bloss nicht, wie das coding für die query aussehen soll, damit ich es berechnen kann
Mit dem Jung dreht man sich im Kreis. 🙃 Kann man nur hoffen das die Leute am Ende eine korrekte Rechnung bekommen ... 🙊
erikro
erikro 06.04.2022 um 13:48:57 Uhr
Goto Top
Zitat von @1915348599:

Zitat von @erikro:
Na so, wie ich es Dir schon erläutert habe. Das kannst Du fast so in ein berechnetes Feld schreiben, sofern die Beziehungen richtig gesetzt sind.

Wetten werden ab sofort angenommen das als nächster Post wieder kommt :
ich weiss bloss nicht, wie das coding für die query aussehen soll, damit ich es berechnen kann
Mit dem Jung dreht man sich im Kreis.

Er braucht dafür kein query. Wenn die Beziehungen stimmen, kann man die Felder in einem berechneten Feld in Access einfach so benutzen. Ich habe die Syntax jetzt nicht im Kopf. Aber mein Pseudocode angepasst auf die richtige Syntax wird so funktionieren. face-wink