Supportnet Computer
Planet of Tech

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"?