Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: ellinho am Juli 03, 2017, 13:49:08

Titel: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: ellinho am Juli 03, 2017, 13:49:08
Hallo zusammen.
(Vorweg: Ich bin kein Access-Profi  :(- auch wenn das bei meinem Benutzerprofil steht - weiß nicht, wie man das ändert.  ::) )
Ich habe eine Access-DB, die u.a. aus den Tabellen Artikel, Lagerbewegungen sowie 2 Abfragen besteht, über die ich zum einen den Artikelverbrauch sowie den damit verbundenen Warenwert seit Beginn der Aufzeichnungen sowie andererseits den exakten Netto-EK jedes Artikels (gleitender Durchschnitt) berechnen lasse. Nun möchte ich gerne eine Formular erstellen, das aus einem Kombifeld besteht, über das der Artikel ausgewählt werden kann, 2 Textfelder (Zeitraumvon, Zeitraumbis) im Datumsformat und eine Schaltfläche "Verbrauch berechnen". Über die Auswahl des Artikels und die Eingabe der beiden Datumswerte soll nach Betätigen der Schaltfläche in einem weiteren Textfeld die verbrauchte Menge des Artikels und in einem anderen, weiteren Textfeld der entsprechende Warenwert angezeigt werden. Wie schon erkennbar, ist eigentlich alles an Berechnungen vorhanden (außer die Berechnung des Verbrauchs für einen gewissen, ausgewählten Zeitraum). Ich weiß nur aktuell nicht, wie ich eine Funktion aufbauen kann, die mir die Ergebnisse im Formular anzeigt.
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: DF6GL am Juli 03, 2017, 13:57:45
Hallo,

einfachste Möglichkeit ist die Verwendung der DSUM()-Aggregatsfunktion (siehe VBA-Hilfe). Im Where-Condition-Teil können die einschränkenden Kriterien (aus den Textfeldern) mitgegeben werden.


Alternativ können in einer Public(!)-Funktion mit Hilfe eines Recordsets und einer passenden Abfrage die Werte berechnet und in den entspr. Textfeldern angezeigt werden. Der Aufruf der Funktion kann im Steuerelementinhalt mit Übergabe der Kriterien erfolgen, z. B:

=fktArtikelVerbrauch([Zeitraumvon];[ZeitrumBis];[ArtikelNr])
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: ellinho am Juli 03, 2017, 14:59:28
Hallo DF6GL.
Vielen Dank zunächst für Deine Hilfe.
Ich habe noch einen Syntaxfehler im Code, den ich als Ereignis bei Fokuserhalt für das Textfeld hinterlegt habe, in dem der zugehörige Verbrauch des Artikels angezeigt werden soll.
DSum("Bewegung";"Lagerbewegungen";[Datum] Between [txtvon] And [txtbis])

Kann man auf Anhieb sehen, was ich dort falsch mache?

Viele Grüße
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: DF6GL am Juli 03, 2017, 15:18:44
Hallo,


in SQL-Where-Conditions muss das Datum im USA- oder ISO-Format formatiert sein.   Alternativ könnte man auch Zahlen-Konvertierungen benutzen..


Außerdem ist "Datum" als Feldname wegen des reservierten Wortes zu vermeiden.


Zitat=DSum("Bewegung";"Lagerbewegungen";"[Datum] Between " & Format([txtvon];"\#jjjj-mm-tt\#") &   " And " & Format([txtbis];"\#jjjj-mm-tt\#") )
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: ellinho am Juli 03, 2017, 15:25:35
=DSum("Bewegung";"Lagerbewegungen";[Buchungsdatum] Between " & Format([txtvon];"\#jjjj-mm-tt\#") &   " And " & Format([txtbis];"\#jjjj-mm-tt\#") )

Das Feld "Datum" heißt nun "Buchungsdatum".
Allerdings wird noch ein Syntaxfehler "angemeckert".
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: DF6GL am Juli 03, 2017, 15:29:17
Hi,

es fehlt ein  Gänsefuß:

=DSum("Bewegung";"Lagerbewegungen";"[Buchungsdatum] Between " & Format([txtvon];"\#jjjj-mm-tt\#") &   " And " & Format([txtbis];"\#jjjj-mm-tt\#") )
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: ellinho am Juli 03, 2017, 15:49:25
ZitatHi,

es fehlt ein  Gänsefuß:

=DSum("Bewegung";"Lagerbewegungen";"[Buchungsdatum] Between " & Format([txtvon];"\#jjjj-mm-tt\#") &   " And " & Format([txtbis];"\#jjjj-mm-tt\#") )

Vielen Dank.
Leider bleibt der Syntax-Fehler erhalten.  :-\
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: Lachtaube am Juli 03, 2017, 17:16:44
Die Syntax ist für die deutsche Spracheinstellung so korrekt. Statt zu zitieren, was man 10 cm oberhalb Deines Beitrags nachlesen kann (wir sind noch nicht so senil), solltest Du besser Deinen verwendeten Ausdruck - vorzugsweise als Code formatiert (Knopf mit Raute (#) verwenden) - zeigen.
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: DF6GL am Juli 03, 2017, 17:33:19
Hallo,

wobei es (mir) nicht so ganz klar ist, WO der Ausdruck nun steht:

Zitat..den ich als Ereignis bei Fokuserhalt für das Textfeld hinterlegt habe


In der Eigenschaft selber oder in der dazugehörenden Ereignisprozedur....


In der FokusErhalt-Eigenschaft selber hat das keinen Sinn und eine Ereignisprozedur verlangt englische Sprache.  Der Ausdruck muss in der Eigenschaft "Steuerelementinhalt"  des Anzeige-Textfeldes stehen.
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: ellinho am Juli 04, 2017, 10:01:56
Der Ausdruck
=DSum("Bewegung";"Lagerbewegungen";"[Buchungsdatum] Between " & Format([txtvon];"\#jjjj-mm-tt\#") &   " And " & Format([txtbis];"\#jjjj-mm-tt\#") )

steht nun in der Eigenschaft "Steuerelementinhalt" des Anzeige-Textfeldes.
Allerdings bekomme ich noch die Anzeige #Fehler

Was mich verwirrt: Access macht aus DSUM automatisch DOMSUMME - also quasi die deutsche Übersetzung. Begriffe wie "BETWEEN" oder "AND" bleiben aber in englischer Sprache stehen.


Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: DF6GL am Juli 04, 2017, 10:26:23
Hallo,

ja, Access übersetzt das ins Deutsche....spielt aber keine Rolle.


Und besser wäre es, den Steuerelementinhalt mit C&P zu zeigen...

Aber noch ein Versuch:


=DSum("Bewegung";"Lagerbewegungen";"[Buchungsdatum] Between " & Format(nz([txtvon];0);"\#yyyy-mm-dd\#") &   " And " & Format(nz([txtbis];0);"\#yyyy-mm-dd\#") )


und weiterhin (nochmal) prüfen, ob die Namen stimmen....
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: ellinho am Juli 04, 2017, 11:06:11
Hallo. Funktioniert leider noch nicht. Trotzdem vielen Dank. Ich werde es weiter versuchen.   ;)
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: Lachtaube am Juli 04, 2017, 12:52:46
Du könntest ja auch ein Minimalbeispiel im 2003er-Format mit wenigen Spieldaten in der Tabelle und dem besagten Formular hochladen.
Titel: Re: Verbrauch für bestimmten Zeitraum ermitteln
Beitrag von: ellinho am Juli 11, 2017, 09:24:46
@Lachtaube

Da könnt ihr wahrscheinlich nichts mit anfangen, da es sich um ein Access-Projekt handelt. Daten liegen also auf dem SQL.

Habe bisher auch noch nicht die zündende Idee gehabt, wie ich die Berechnung hinbekomme. Ich vermute, dass ich eine Funktion aufbauen muss, denn ich möchte z.B. auch noch verhindern, dass im Datumsfeld (txtbis) ein älteres Datum eingegeben werden kann als im Datumsfeld (txtvon). Das bekomme ich sicherlich nicht in die Eigenschaft "Steuerelementinhalt" des Textfeldes hinein.
Viele Grüße
Karsten