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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2387178562
Url: https://administrator.de/contentid/2387178562
Ausgedruckt am: 12.11.2024 um 19:11 Uhr
17 Kommentare
Neuester Kommentar
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
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
Bidde, Doku scheint noch immer kein Freund von dir zu sein ...
https://support.microsoft.com/de-de/office/wenn-funktion-32436ecf-c629-4 ...
https://support.microsoft.com/de-de/office/wenn-funktion-32436ecf-c629-4 ...
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
Vielleicht bietet sich hier ein berechnetes Feld an:
https://support.microsoft.com/de-de/office/video-kombinieren-von-feldern ....
https://support.microsoft.com/de-de/office/video-kombinieren-von-feldern ....
Moin,
Problem erkannt. 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. 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
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
Zitat von @jhaustein:
Weil immerhin – kann in der Tabelle Saison ja mehrere Saison Zeiten eingetragen sein innerhalb eines Jahres
Weil immerhin – kann in der Tabelle Saison ja mehrere Saison Zeiten eingetragen sein innerhalb eines Jahres
Problem erkannt. 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. 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
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
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.
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.
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 ... 🙊Zitat von @1915348599:
Wetten werden ab sofort angenommen das als nächster Post wieder kommt :
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.
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.