Neuigkeiten:

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

Mobiles Hauptmenü

DomSumme in Gruppenfuss

Begonnen von J.D, März 02, 2020, 16:57:25

⏪ vorheriges - nächstes ⏩

J.D

Hallo Forum,

leider ist mein andere Thread nicht so erfolgreich, da mir die Werte aus der zweiten Tabele mehrfach angezeigt werden und es hierfür anscheind keine Lösung gibt.

Daher versuche ich jetzt das mit DomSumme zumindest die Zeit angezeigt wird für den Tag, aber auch hier scheint es nicht so einfach zu sein.
Im Berichtsfuss habe ich neue Felder hinzugefügt um auch zu sehen das die erforderlichen Daten (StoerDatum, MaschinenID) für die Abfrage richtig sind...

Denoch werden mir alle Störungen zusammen gezählt und die übergebenen Parameter ignoriert!

Tabele Störung
Felder ZeitDez, Datum, Maschinen_ID

Bericht Felder StoerDatum, MaschinenID

=DomSumme("ZeitDez";"Störung";"Datum =" & [StoerDatum] Und "Maschinen_ID =" & [MaschinenId])

Lasse ich das Datum weg, wird mir die Störzeit zwar für die jeweilige Maschine angezeigt aber eben alles komplett und nicht mit dem Datum
=DomSumme("ZeitDez";"Störung";"Maschinen_ID =" & [Maschinenid])

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

MzKlMu

Hallo,
zu den Ungereimtheiten der Übersetzung gehört, dass Du DomSumme verwenden musst, aber innerhalb das Strings musst Du reines SQL verwenden also statt UND musst Du AND schreiben. Und das AND muss auch in den String.

Wenn das Feld auf dem Bericht vorhanden ist, solltest Du Me.[MaschinenId] schreiben.
Weiterhin, muss das Datum SQL konform verglichen werden, entweder US Format (mm/dd/yyyy) oder ISO (yyyy/mm/dd).

=DomSumme("ZeitDez";"Störung";"Datum =" & Format(StoerDatum; "\#yyyy\-mm\-dd\#") & " AND Maschinen_ID =" & Me.[MaschinenId])
ungetestet
Gruß Klaus

J.D

Danke,

Access macht mir in meinem Feld im Bericht
=DomSumme("ZeitDez";"Störung";"Datum =" & Format([StoerDatum];"""#yyyy-""mm""-dd#""") & " AND Maschinen_ID =" & [Me].[MaschinenId])
und entfernt die \\\, im Feld steht dann #Name?

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

MzKlMu

Hallo,
versuche mal die deutschen Formatkurzzeichen.
=DomSumme("ZeitDez";"Störung";"Datum =" & Format(StoerDatum; "\#jjjj\-mm\-tt\#") & " AND Maschinen_ID =" & Me.[MaschinenId])
Du kannst auch mal das probieren:
=DomSumme("ZeitDez";"Störung";"Int(Datum) =" & Int(StoerDatum) & " AND Maschinen_ID =" & Me.[MaschinenId])

Ich würde das in eine VBA Funktion auslagern, dann braucht es diesen Sprachwirrwar nicht, da ist alles in englisch.

Gruß Klaus

J.D

Funktioniert leider alles nicht,

wie gesagt zeigt er mir ja die Summe der Maschine an wenn ich
=DomSumme("ZeitDez";"Störung";"Maschinen_ID =" & [MaschinenId])
schreibe, daher denke ich nicht das ich das Me. benötige, aber es fehlt halt noch der Filter nach dem Datum...

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

J.D

Ok, danke dir MzKlMu!

Es geht doch ich habe nochmal etwas rumprobiert und habe das Me. entfernt! 

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

MzKlMu

Hallo,
dann zeige bitte auch Deine Lösung. Hier lesen ja auch andere mit, daher sollten auch die Lösungen gezeigt werden.
Das Me. war an der Stelle Unsinn. Me kann in einem Ausdruck eines Berichtsfeldes nicht verwendet werden.
Me ist in VBA der Bezug auf das aktiven Objekt (Bericht/Formular) und ist an der Stelle falsch. Hatte ich übersehen, sorry.
Gruß Klaus

J.D

Gerne mache ich das... ich musste nur gucken das es auch alles so funktioniert wie es soll ;)

Felder müssen natürlich angepasst werden
Das Feld ZeitDez wird in der Datenbank berechnet mit
[Zeit]*60*24/60
=DomSumme("ZeitDez";"Störung";"Datum =" & Format([StoerDatum];"\#jjjj-mm-tt\#") & " AND Maschine =" & [MaschinenId])
So erhalte ich die Störzeit auf den Bericht und kann dann so die Störzeit von der Produktionszeit abziehen und mit dem Soll gegenrechnen...

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

MzKlMu

Hallo,
*60 und /60 hebt sich gegenseitig auf.
Wenn Du es als Bruch schreibst, kannst du es erkennen.

Zeit *60 * 24
-------------------
      60

Die 60 kann rausgekürzt werden.

Es reicht also:
[Zeit]*24
Gruß Klaus

J.D

#9

Ja  :-[

Schleich fehler  ::)

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

Beaker s.a.

Hallo J.D.
Warum nimmst du Klaus' Rat nicht an und lagerst die Datumsformatierung in
ein allgem. Modul aus; - das brauchst du doch ständig. Ich würde verrückt
werden, wenn ich bei jedem Datum diesen Formatbefehl tippen müsste.
Public Function SQLDatum(ByVal datWert As Date) As String
    SQLDatum = _
            Format$(datWert, "\#yyyy\-mm\-dd\#")
End Function

In SQL-Strings und Dom-Funktionen kannst du das dann in dieser Form verwenden
"..." & SQLDatum(Datumsfeld) & "..."

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

J.D

Zitat von: Beaker s.a. am März 03, 2020, 21:13:10
Hallo J.D.
Warum nimmst du Klaus' Rat nicht an und lagerst die Datumsformatierung in
ein allgem. Modul aus; - das brauchst du doch ständig. Ich würde verrückt
werden, wenn ich bei jedem Datum diesen Formatbefehl tippen müsste.

Mein derzeitiger Wissensstand gibt es nicht her :D

Danke für die Funktion welche ich gerne übernehme...

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2