Supportnet / Forum / Datenbanken
Abfrage - Funktion
Frage
Ich habe ein großes Problem:
Ich muss in einer Abfrage folgende Dauer der Wartungen berechnen:
(365/Frequenz*Dauer).
Bei gleichen Werkzeugen soll die Dauer allerdings folgendermaßen berechnet werden:
(365/Frequenz*Dauer)-(365/Frequenz(Werkzeug danach)*Dauer)
Wie bekomme ich hin in einer Funktion in einer Abfrage zu überprüfen, wie der Werkzeugname im Datensatz davor hieß?????
Antwort 1 von Teddy7
Du mußt im Modul1 eine globale function anlegen.
Public function XRECH(Werkzeug as string, Dauer as double, Frequenz as double) as double
..........
XRECH = ..............
end function
In der Abfrage kannst Du diese function dann ansprechen:
XErg: XRECH(Werkzeug; Dauer; Frequenz)
Gruß
Teddy
Public function XRECH(Werkzeug as string, Dauer as double, Frequenz as double) as double
..........
XRECH = ..............
end function
In der Abfrage kannst Du diese function dann ansprechen:
XErg: XRECH(Werkzeug; Dauer; Frequenz)
Gruß
Teddy
Antwort 2 von SchwarzerEngel
Das habe ich getan und das funktioniert auch alles ohne probleme.
Mein Problem:
Der Zugriff auf den Datensatz davor, um zu sehen, ob die neue Wartung am gleichen Werkzeug passiert oder nicht.
Mein Problem:
Der Zugriff auf den Datensatz davor, um zu sehen, ob die neue Wartung am gleichen Werkzeug passiert oder nicht.
Antwort 3 von Teddy7
Das kann man machen indem man z.B. in der Function eine globale Variable füttert.
Public XLAST as double
(auch im Modul1 definieren)
Gruß
Teddy
Public XLAST as double
(auch im Modul1 definieren)
Gruß
Teddy
Antwort 4 von OmaDuck
Hallo,
Du kommst um eine sequentielle programmierung wohl nicht herum. Die Idee könnte sein:
dim fzaehler, fwerkzeug
fzaehler=0
fwerkzeug = ´ ´
schleife über alle sätze
satz holen
if werkzeug = fwerkzeug then
fzaehler=fzaehler+1
else
fzaehler=0
end if
fwerkzeug = werkzeug
fzaehler als zusätzliches feld in den satz schreiben (update satz set zaehler = fzaehler)
dann hast Du eine Tabelle in der alle zaehlerwerte >0 bedeuten,dass davor schon der gleiche werkzeugname war und Du kannst in der Abfrage entscheiden welche der beiden functions Du brauchst.
Gruß
OmaDuck
Du kommst um eine sequentielle programmierung wohl nicht herum. Die Idee könnte sein:
dim fzaehler, fwerkzeug
fzaehler=0
fwerkzeug = ´ ´
schleife über alle sätze
satz holen
if werkzeug = fwerkzeug then
fzaehler=fzaehler+1
else
fzaehler=0
end if
fwerkzeug = werkzeug
fzaehler als zusätzliches feld in den satz schreiben (update satz set zaehler = fzaehler)
dann hast Du eine Tabelle in der alle zaehlerwerte >0 bedeuten,dass davor schon der gleiche werkzeugname war und Du kannst in der Abfrage entscheiden welche der beiden functions Du brauchst.
Gruß
OmaDuck
Antwort 5 von SchwarzerEngel
Danke, das letzte klingt schon wirklich gut.
Leider weiß ich noch nicht richtig, wie ich das machen muss.
Kannst du das bitte nochmal ein bißchen ausführlicher schreiben mit dem Satz holen??
Tabelle: Wartungsnr, Werkzeugname, Frequenz (1-tägig, 2-tägig, ...), Dauer
Ziel: Stundenanzahl eines Werkzeuges für Wartung!
Dabei folgende Rechnung, wenn Werkzeug gleich dem davor:
(365/Frequenz*Dauer)-(365/Frequenz von dem davor*Dauer)
Leider weiß ich noch nicht richtig, wie ich das machen muss.
Kannst du das bitte nochmal ein bißchen ausführlicher schreiben mit dem Satz holen??
Tabelle: Wartungsnr, Werkzeugname, Frequenz (1-tägig, 2-tägig, ...), Dauer
Ziel: Stundenanzahl eines Werkzeuges für Wartung!
Dabei folgende Rechnung, wenn Werkzeug gleich dem davor:
(365/Frequenz*Dauer)-(365/Frequenz von dem davor*Dauer)
Antwort 6 von SchwarzerEngel
Jetzt hab ich es.
Er bringt auch im Debug-Fenster die richtigen Werte, aber wenn ich das Ergebnis dann nicht dem Debug.Print sondern der Funktion (also Abfrage) zuordne, schreibt er in jeden Datensatz das gleiche Ergebnis. :-(
Er bringt auch im Debug-Fenster die richtigen Werte, aber wenn ich das Ergebnis dann nicht dem Debug.Print sondern der Funktion (also Abfrage) zuordne, schreibt er in jeden Datensatz das gleiche Ergebnis. :-(

