Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: mmaatouk am Juli 24, 2015, 11:46:34

Titel: VBA Funktion Status Automatisch ändert
Beitrag von: mmaatouk am Juli 24, 2015, 11:46:34
Hallo Und Guten tag
Ich habe in einem Formulare die Feld Status , die von 1 bis 5 bewertet
und muss mit der zeit verändert automatisch
zb : wenn von heute bis ende des Garantie nur 3 Monate noch gibt dann von Status 1 zu 2 ändern
und wenn Garantie abgelaufen ist dann von 2 zu 3 ändert
mit 4 und 5  wir nichts verändert

Viele Grüße
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: DF6GL am Juli 24, 2015, 12:01:39
Hallo,

schreibe eine Funktion ("CalcStatus()"), die den Status aktuell berechnet und zurück liefert  und rufe diese Funktion im Steuerelementinhalt eines Form-Textfeldes auf:

=CalcStatus()


Dazu  muss aber die Bedeutung ALLER 5 Status-Werte bekannt und berechenbar  sein.
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: mmaatouk am Juli 24, 2015, 12:22:54
ich habe diese Funktion geschrieben ist das Richtig
wie kann aufrufen und ganze spalte automatisch anwenden
Public Function StatusBestimmen(Nächste_Kal As Variant) As Integer


Dim DifferenzInMonat As Integer
Dim Statusnr As Integer
Dim diDifferenzInyear As Integer

If IsNull(Nächste_Kal) Then Exit Function

    DifferenzInyear = DateDiff("y", Date, Nächste_Kal)
    If DifferenzInyear < 1 Then
    DifferenzInMonat = DateDiff("m", Date, Nächste_Kal)
    If DifferenzInMonat >= 3 And Not IsNull(Me!Status) Then
    StatusBestimmen = 1
    End If
    If DifferenzInMonat < 3 And DifferenzInMonat > 1 And Not IsNull(Me.Status) Then
    StatusBestimmen = 2
    End If
    If DifferenzInMonat < 0 And Not IsNull(Me!Status) Or Me.Status = 3 Then
    StatusBestimmen = 3
    End If
    If DifferenzInMonat < 0 And Not IsNull(Me!Status) And Me.Status = 4 Then
    StatusBestimmen = 4
    End If
    If DifferenzInMonat < 0 And Not IsNull(Me!Status) And Me.Status = 5 Then
    StatusBestimmen = 5
    End If
   
   End If


End Function
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: DF6GL am Juli 24, 2015, 13:45:29
Hallo,

so war das nicht gemeint...  Me!Status darf in der Funktion nicht vorkommen, der Status-Wert soll ja berechnet werden.


Deshalb meine vorherige Anmerkung, dass die Bedeutung aller Status-Werte definiert sein muss.

Z.B . Woher kommt Statuswert 3 oder 4 und was bedeutet der?  Ein Feld "Status" in irgendeiner Tabelle ist überflüssig/falsch.

Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: mmaatouk am Juli 24, 2015, 13:47:39
Können SIe mal Bitte ein beispiel Programm schreiben damit ich verstehe was Sie meinen
Danke
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: DF6GL am Juli 24, 2015, 22:25:21
Hallo,



Public Function StatusBestimmen(Nächste_Kal As Date) As Integer


Dim DifferenzInMonat As Integer
Dim Statusnr As Integer
Dim diDifferenzInyear As Integer

If IsNull(Nächste_Kal) Then Exit Function

    DifferenzInyear = DateDiff("y", Date, Nächste_Kal)

    If DifferenzInyear < 1 Then
         DifferenzInMonat = DateDiff("m", Date, Nächste_Kal)
 

         If DifferenzInMonat >= 3  Then
             StatusBestimmen = 1
         End If


          If DifferenzInMonat < 3 And DifferenzInMonat > 1  Then
            StatusBestimmen = 2
         End If


         If DifferenzInMonat < 0  Then
             StatusBestimmen = 3
         End If


         If <<ein bestimmter anderer Zustand der Zeitverhältnisse>>  Then
             StatusBestimmen = 4
         End If

         If <<ein bestimmter weiterer anderer Zustand der Zeitverhältnisse>> Then
             StatusBestimmen = 5
         End If
   
    End If


End Function



Im Steuerelementinhalt eines Form-Textfeldes:

=StatusBestimmen()
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: mmaatouk am Juli 24, 2015, 22:34:56
Danke Ihnen hat mich gut geholfen
aber bei 4 und 5 es gibt kein Bedingung die sind schon 4 und 5 bewertet und die müssen nicht ändern
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: mmaatouk am Juli 27, 2015, 13:51:34
=StatusBestimmen([Nächste Kal]) Und Wenn([Status]=4;4;5)
ich habe dieses Ausdruck geschrieben und möchte damit sagen
ruf die Funktion StatusBestimmen auf von 1 bis 3
und wenn es 4 dann bleibt 4 und wenn 5 ist dann bleibt 5
aber es gibt Fehler
bitte helfen
Danke
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: MaggieMay am Juli 27, 2015, 14:15:27
Versuche es mal hiermit:
=Wenn([Status] < 4;StatusBestimmen([Nächste Kal]);[Status])
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: mmaatouk am Juli 27, 2015, 14:24:32
die zeigt immer fehler wie im bild
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: MaggieMay am Juli 27, 2015, 15:04:19
Das Textfeld selbst darf dabei nicht "Status" heißen.

Oder wie bzw. wo hast du den Code eingesetzt?
Titel: Re: VBA Funktion Status Automatisch ändert
Beitrag von: mmaatouk am Juli 27, 2015, 15:09:45
Vielen dank ist geklappt  :D