August 03, 2021, 16:53:20

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Abfrageergebnis an Formular übergeben

Begonnen von Seturo1375, Juni 24, 2021, 17:37:46

⏪ vorheriges - nächstes ⏩

Seturo1375

Hallo zusammen,

ich bin Access Anfänger und arbeite grade an einem Projekt, wo ich ein Abfrageergbnis im Formular weiterverarbeiten möchte.

Folgende Situation:

Ich erfasse Statistik Daten von Fahrzeugen in einer Tabelle/Formular, u.a getankter Dieselkraftstoff.
In einem weiteren Formular/Tabelle verwalte ich den Füllstand einer internen Betriebstankstelle.

Zu Testzwecken habe ich einige wenige Datensätze eingegeben.

Mit einer SQL Abfrage ermittele ich die Summe des getankten Diesel (seit dem letzten Datum mit vollem Füllstand), subtrahiere das Ergebnis vom Maximal Füllstand von 15.000 L und erhalte als Ergebnis den neuen Füllstand. Das funktioniert auch.

Mein Ansatz:

Nun möchte ich dieses Ergebnis in dem Formular für den Füllstand an ein Kombifeld übergeben, um dieses als
neuen Datensatz zu erfassen -> und hier hängt es, wie übergebe ich das ?

Wenn die Tankstelle wieder vollgetankt wird erfasse ich einen Datensatz mit vollem Füllstand von 15.000 L.
So ergibt sich eine Historie mit den Füllständen.

Ich hoffe das es einigermaßen verständlich ist und freue mich über Tipps.

Danke.

MzKlMu

Juni 24, 2021, 17:51:04 #1 Letzte Bearbeitung: Juni 24, 2021, 18:00:08 von MzKlMu
Hallo,
das ist ja sonst nix als eine Bestandermittelung.

Die Füllungen und die Tankvorgänge gehören in eine Tabelle.
Füllungen mit + und Tankvorgänge mit -
Der Füllstand ist dann einfach die Summe.

FahrzeugID    Menge  Vorgang     Datum
    0        15000  Füllung   20.06.2021
    1          -50  Tanken    21.06.2021
    2         -100  Tanken    22.06.2021
Wenn jetzt über die Menge die Summe bildest hast Du den aktuellen Füllsttand (hier 14850).
Diese Suptrahierungen entfallen ersatzlos.
Außerdem glaube ich auch nicht, dass der Tank der Tankstelle immer komplett leer gemacht wird, Du wirst also nicht immer 15.000 nachfüllen.
Wenn Du alle Mengen in einem Endlosformular erfasst, kannst Du automatisch im Formularkopf immer den aktuellen Füllstand anzeigen. FahrzeugID 0 entspricht kein Fahrzeug = Nachfüllen. Du kannst hier aber auch das Fahrzeug angeben das das Diesel nachliefert.

Du solltest das Vorhaben überdenken.
Gruß
Klaus

Seturo1375

Hallo Klaus,

danke für den Tipp, werd ich mal testen.

An ein Endlosformular hab ich gar nicht gedacht.

Gruß

Seturo1375

Hallo nochmal,

hat super geklappt mit dem Endlos Formular, danke nochmal.

Hättest du evtl noch einen Tipp, wie ich steuern kann das bei Auswahl der Vorgangsart "Tankvorgang" automatisch das Feld zur Mengen Angabe ein Minus Zeichen erhält für den negativen Wert ?

Danke. Gruß Sascha

Beaker s.a.

Hallo Sascha,
Führe in der Typentabelle (Tankvorgang) einfach einen Faktor (1/-1) mit.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

Seturo1375

Danke Ekkehard, ich denke ich weis was du in etwa meinst.

Aber ich glaube ich komme grad nicht drauf wo ich da ansetzen muss 🤔

MzKlMu

Hallo,
zeige mal ein Bild des Beziehungsfensters oder Lade die DB hier hoch.
Gruß
Klaus

Beaker s.a.

Sorry, ich habe mich schlecht ausgedrückt.
Es sollte heissen
ZitatFühre in der Typentabelle (VorgangsArt) einfach einen Faktor (1/-1) mit.
Luftcode
SELECT Sum(TV.Menge * VA.Faktor) AS aktuellerBestand
FROM Tankvorgaenge AS TV
    INNER JOIN VorgangsArten AS VA
    ON TV.VorgangsArtID_F = VA.VorgangsArtID
Bestand an einem bestimmten Tag
SELECT Sum(TV.Menge * VA.Faktor) AS BestandAm, TV.TDatum
FROM Tankvorgaenge AS TV
    INNER JOIN VorgangsArten AS VA
    ON TV.VorgangsArtID_F = VA.VorgangsArtID
WHERE TV.TDatum <= EinDatum

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

Seturo1375

Hallo Klaus,

Db hochladen geht leider nicht aus Datenschutzgründen.

Screenshot funktioniert grade nicht mit OneDrive Freigabe ... *blöd*

Es ging mir im Prinzip darum, wie ich bei der Erfassung von Diesel Mengen im Formular
steuern kann, das durch Vorwahl der Vorgangsart "Tanken" automatisch der erfasste Betrag negativ wird,
um das nicht dem Benutzer zu überlassen.

Evtl. klappts später noch mit Screenshots.

Gruss





Seturo1375

So hallo nochmal,

unten hab ich jetzt 2 Screenshots verlinkt, einmal von den 3x Tabellen die zu diesem Vorgang gehören und
dann noch vom Endlosformular.

Die Kombi Felder "Fahrer" und "Fahrzeug" befülle ich jeweils mit einer Abfrage auf bestehende Tabellen mit hinterlegten Stammdaten.

Wenn ich Daten ins Formular eintrage funktioniert es auch wunderbar, solange man immer an das "Minus" denkt
für die Tankvorgänge. Das würd ich halt gern abfangen.


https://1drv.ms/u/s!Ao8AJPAEklAyzWdVy956XSs0Xe-S
https://1drv.ms/u/s!Ao8AJPAEklAyzWYEHkAKSd_4rLoy

DF6GL

Hallo,

Du stellst es Dir nicht ganz richtig vor..

Bei "Diesel_Menge" wird lediglich ein (positiver) Betrag eingegeben.  Anhand der Vorgangsart wird (später) definiert, bzw. ausgewertet, ob es sich um eine "postive" Menge (Füllung) oder um eine negative (Tankvorgang) Menge handelt.

Wenn Du unbedingt auf eine negative Eingabe beharrst, dann führe wie schon beschrieben den 1/-1 Faktor in der Tabelle tblVorgänge mit  und korrigiere die Eingabe wie folgt:


Sub Diesel_Menge_Afterupdate()

 Me!Diesel_Menge = Me!Diesel_Menge * Me!Vorgangsart.Column(2)
End Sub


wobei in Me!Vorgangsart.Column(2) der 1/-1 Faktor steht und keine negativen Zahlen eingegeben werden dürfen, wodurch das Ganze nicht zu empfehlen ist.

MzKlMu

Juni 25, 2021, 18:47:50 #11 Letzte Bearbeitung: Juni 25, 2021, 19:14:26 von MzKlMu
Hallo,
das passt so nicht. Die Mengen (egal ob Intern oder Extern) gehören in eine Tabelle. Nur dann lassen sich ohne Klimmzüge die Bestände erfassen, denn die Menge muss ja summiert werden um den Bestand zu erhalten.
Nur dann macht auch die Vorgangsart Sinn.
Extern, sind das die Nachfüllvorgänge ?

Bei den Fahrzeugen werden auch die Lieferfahrzeuge erfasst.

Wieso haben die Tabellen keine Beziehungen ?
Man kann keine Datenbank ohne Beziehungen betreiben, Beziehungen sind das A+O einer Datenbank. Das ist der erste Schritt nach dem Anlegen der Tabellen. Erst dann kann man mal an Formulare denken.
Du brauchst auch eine Tabelle für die Fahrer (Intern und Extern in einer Tabelle).
Auch die Vorgangsart erfordert eine Tabelle.
Alle Tabellen müssen in das Beziehungsgeflecht aufgenommen werden.

Du solltest das Vorhaben noch mal überdenken, das wird so nix.

Lade die DB hier mal hoch, mit einigen anonymen Spieldaten.
Gruß
Klaus

Seturo1375

Hallo Franz,

danke für die Erklärung, das war mir vorher nicht klar, das die Überprüfung hinterher stattfinden soll.
Nur auf welchem Weg ich das hinterher überprüfe hab ich nicht ganz verstanden.

Zum anderen gibt es keine Tabelle "Vorgangsart", ich hab das Kombi hierfür mit einer Werteliste befüllt.
Jetzt verstehe ich auch den Code und die Kombination mit 1/-1 um die Werte entsprechend positiv oder als
negativ zu bewerten. Vorgangsart muss in eine eigene Tabelle.

@klaus 
Ich habe nur einen "Ausschnitt" gezeigt, dies ist nicht die komplette Datenbank. Intern und Extern deshalb, weil in seltenen Fällen auswärts getankt wird. Da wird kein Bestand verfolgt, lediglich erfasst und eine Quittung abgelegt.

- Ja Lieferfahrzeug ist in entsprechender Tabelle angelegt
- Fahrertabelle gibts auch
- Beziehungen ebenfalls bei den Tabellen mit den Stammdaten

Das hatte ich alles als erstes eingerichtet. Dann länger nicht mehr daran gearbeitet.

Jetzt kam mir die Idee, alle Excel Listen die mit Statistik Daten befüllt werden, eine Dieselbestandliste für die Betriebsinterne Tankstelle, in Access abzubilden.

Die DB auszuräumen wird etwas Zeit in Anspruch nehmen. Melde mich dann wieder.

Trotzdem schon mal Danke an alle die sich beteiligt haben.

Schönen Abend noch.

MzKlMu

Hallo,
auch die Tabellen des Ausschnitts brauchen Beziehungen, nicht nur die Tabellen mit den Stammdaten.
Auch externe Tankvorgänge kommen in diese eine Tabelle mit der Vorgangsart extern. Als Multiplikator wird dann 0 verwendet, dann wird auch die Menge beim Summieren 0 und zählt somit nicht mit.
Gruß
Klaus

Seturo1375

Ok danke Klaus. Das werd ich dann nochmal angehen.

Gruß