Supportnet / Forum / Datenbanken
Brauche Hilfe beim erstellen einer Abfrage Syntax...!!!
Frage
Hi Leutz,
Habe folgendes Szenario: (Sehr Kompliziert)
Tabelle Mitarbeiter:
=================================================================================================
Grundgehalt
TLZ (in %, vom Grundgehalt)
ATZ (DM-Wert ohne Komma zahl)
=================================================================================================
Form Mitarbeiter: (in DM, ohne Währungssymbol(Standartzahl #0,00))
=================================================================================================
Grundgehalt (von Tabelle Mitarbeiter)
TLZ (in % von Tabelle Mitarbeiter)
TLZabsolut (von TLZ, vom Grundgehalt, aufgerundet auf die volle Mark) Anzeige in DM 0,00
ATZ (von Tabelle Mitarbeiter)
Bruttogehalt (Errechnet in der Abfrage-Syntax (Berechnung siehe unten (DM-Werte))
(Aufgerundet auf die nächste volle DM (Falls es nachkomma stellen geben sollte))
=================================================================================================
Neue Anzeigen im Formular Mitarbeiter: (in Euro, ohne Währungssymbol(Standartzahl #0,00))
=================================================================================================
Euro_mit_Spezial_Rundung
Berechnung soll in der Abfrage-Syntax erfolgen (Vorrechnungen siehe unten (Euro-Werte))
Berechnung soll nach folgendem Schemata erfolgen (Private Sub AT_Euro_Rech())
Alle zahlen sind Standardzahlen z.B.: 1234,00 oder 5468,00
=================================================================================================
Private Sub AT_Euro_Rech()
Dim AT_Rech As Integer
Dim AT_Prüf As Integer
Dim ZS_AT As Integer
Dim AT_L As Integer
AT_Prüf = Right$(Me.Euro_Bruttogehalt, 1) Letzte Zahl auslesen (Rundungskriterium)
If AT_Prüf = 0 Then Wenn zahl = 0 dann soll nichts passieren
AT_Rech = Me.Euro_Bruttogehalt
ElseIf AT_Prüf >= 1 < 5 Then Wenn zahl größer1 o. kleiner5 dann soll
AT_L = Len(Me.Euro_Bruttogehalt) Zahl mit 5 ersetzt werden und wieder
ZS_AT = AT_L - 1 eingesetzt werden
AT_Rech = Mid(Me.Euro_Bruttogehalt, ZS_AT, 1) = "5"
ElseIf AT_Prüf = 5 Then Wenn zahl = 5 dann soll nichts passieren
AT_Rech = Me.Euro_Bruttogehalt
ElseIf AT_Prüf >= 6 <= 9 Then Wenn zahl größer6 o. kleiner9 dann soll
AT_L = Len(Me.Euro_Bruttogehalt) zahl der zweit letzten stelle +1 sein
ZS_AT = AT_L - 2 und zahl der letzten 0 sein
AT_Rech = (Mid(Me.Euro_Bruttogehalt, AT_L, 2) = 10)
End If
Me.AT_Euro.Value = AT_Rech
End Sub
=================================================================================================
Beispiele:
Zahl1 = 1230,00
Zahl2 = 1234,00
Zahl3 = 1235,00
Zahl4 = 1237,00
vergleiche letzt zahl aus Zahl1-4:
wenn zahl1 = xxx0,00 dann zahl1 = zahl1 (1230,00) Zahl bleibt so wie sie ist.
wenn zahl2 = xxx4,00 dann zahl2 = zahl2 (1235,00) Zahl wird geändert.
wenn zahl3 = xxx5,00 dann zahl3 = zahl3 (1235,00) Zahl bleibt so wie sie ist.
wenn zahl4 = xxx7,00 dann zahl4 = zahl4 (1240,00) Zahl wird geändert.
=================================================================================================
DM-Werte:
=================================================================================================
TLZabsolut: Wenn(([Grundgehalt]*[TLZ]/100) Wie (Int([Grundgehalt]*[TLZ]/100));([Grundgehalt]*[TLZ]/100);(Int([Grundgehalt]*[TLZ]/100)+1))
Bruttogehalt: Wenn([TGR] Wie "A*";Wenn(([Grundgehalt]) Wie (Int([Grundgehalt]));[Grundgehalt];(Int([Grundgehalt])+1));Wenn(([Grundgehalt]+[TLZabsolut]+[ATZ]) Wie (Int([Grundgehalt]+[TLZabsolut]+[ATZ]));[Grundgehalt]+[TLZabsolut]+[ATZ];(Int([Grundgehalt]+[TLZabsolut]+[ATZ])+1)))
=================================================================================================
Euro-Werte:
=================================================================================================
Euro_Grundgehalt: (Int(([Grundgehalt]/1,95583)*100+0,9999)/100)
Euro_ATZ: (Int(([ATZ]/1,95583)*100+0,9999)/100)
Euro_TLZabsolut: (Int(([TLZabsolut]/1,95583)*100+0,9999)/100)
Euro_Bruttogehalt: (Int((([Bruttogehalt]/1,95583)*100+0,9999)/100)+1)
=================================================================================================
Kurz geschrieben:
-----------------
Wenn die letzte zahl eines Wertes 0 oder 5 ist soll sie so bleiben wie sie ist.
Wenn die letzte zahl eines Wertes nicht 0 ist und kleiner als 5 dann soll sie auf 5 gerundet werden.
Wenn die letzte zahl eines Wertes nicht 5 ist und kleinerGleich 9 ist soll sie auf 10 gerundet werden.
Wenn mir hier jemand Helfen kann, kommt es dem einem Wunder gleich.
Gruß
Verminaard The Dragon_Lord_Evil
Antwort 1 von struppi
Hallo
Hier wollte schon einmal jemand auf diese Art runden. Ab Access 2000 gibt es wohl auch den round-Befehl. Rundet aber anders wie Exel.
Mit einfacher select Anweisung bringst du den Wert dann in die gewünschte Form.
Siehe:
https://supportnet.de/discussion/listmessages.asp?content=&recno=59428&adminrecno=23
Ich hoffe deine Fragen waren die 3 Sätze unter "kurz geschrieben"?
Hier wollte schon einmal jemand auf diese Art runden. Ab Access 2000 gibt es wohl auch den round-Befehl. Rundet aber anders wie Exel.
Mit einfacher select Anweisung bringst du den Wert dann in die gewünschte Form.
Siehe:
https://supportnet.de/discussion/listmessages.asp?content=&recno=59428&adminrecno=23
Ich hoffe deine Fragen waren die 3 Sätze unter "kurz geschrieben"?

