Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Brauche Hilfe bei Datumsabfrage

Begonnen von wuffwuff2003, November 04, 2019, 13:09:04

⏪ vorheriges - nächstes ⏩

wuffwuff2003

Hallo, Ich habe eine Zeile in VBA die ich mal so umschreibe:
Am 1. des Monats muss eine Maschine zur Kontrolle aufgerufen werden,  das löste ich mit :
If Day(Date) = 1 Then
Hat super funktioniert. So nun ist es aber so, wenn ich dann die aufgerufene Maschine abhake als erledigt (und in der Tabelle das heutige Datum dann eingetragen wird), und das Formular wieder öffne logischerweise haben wir dann immer noch der 1. dann ruft er die Maschine erneut zur Kontrolle auf, obwohl abgehakt. Nun war mein Gedanke diese Maschine auf das ERLEDIGT DATUM zu prüfen und den Monat zu prüfen.
Das heisste : Wenn der Tag des Monats der 1. ist, und wenn die Maschine [f_machine] "X" ist und der Monat des Feldes [überprüfungsdatum] nicht der gleiche Monat ist wie "jetzt" .. THEN.
Aber das in VBA hinzukriegen ist mir doch ein bisschen zuviel dann. Vielleicht kann mir jemand helfen. Hoffe ich habe mich klar genug ausgedrückt. Vielen Dank

emmoticon

Hi!

Du kannst doch eine weitere Bedingung in das If-Statement hinzufügen.
if Day(Date)=1 and dlookup("erledigt", "Maschinentabelle", "[f_Maschine] = " & X ) = false then

Wenn dir das nicht reichen sollte, können wir uns ja an das Gefummel mit dem amerikanischen Datumssystem machen ;-)
Gruß, Smiley mit Rechtschreibfehler

wuffwuff2003

Hallo, das würde aber nur gehen wenn Erledigt einen Zustand darstellt wie JA/NEIN, mein Eledigt Feld ist aber ein Datumsfeld. Heisst, wenn die Maschine mittels Button als erledigt markiert wird, bekommt das Feld "Erledigt" das aktuelle Datum gesetzt.
Mfg

DF6GL

Hallo,


Du musst halt das Form neu mit entspr. gefilterten Daten versorgen:

Select * from Tabelle1 where Erledigt is Null

oder, je nachdem, was Du da im Hintergrund anstellst, das Form erneut filtern:


Me.Filter = "Erledigt is Null"
Me.FilterOn = True


wuffwuff2003

#4
Ja aber das ist so nicht realisierbar, ich bräuchte einfach einen Vergleich im VBA der mir wie oben beschrieben das Datum kontrolliert, und wenn der Monat dem Monat des eingetragenen Datums entspricht dann springt der IF Befehl weiter auf ELSE. Heisst ich müsste wissoen wie man die Zeile in VBA korrekt schreibt :
If Day(Date) = 1 and [F_maschine] = 1000 and Month(Date) [erledigt_am] <> Month() then
rumcommand.....

Das ist aber falsch in der Syntax das weiss ich.


DF6GL

#5
Hallo,

du sprichst in Rätseln...

Deine Beschreibung des Arbeitsablaufs ist unverständlich..

ZitatIch habe eine Zeile in VBA die ich mal so umschreibe:


Warum durch die Brust ins Auge?  Poste doch gleich die Codezeilen, da musst Du (uns) nichts umschreiben.

Beschreiben musst Du nur das, was Du anhand vorhandener Daten (Tabellen, Felder, Werte, Formulare) insgesamt erreichen willst.

Vielleicht ist es sinnvoll, die ganze Problematik umfänglich zu beschreiben und auch vollständige Prozeduren zu posten, einschließlich eines Screenshots des Beziehungsfensters.
Zitat
einen Vergleich im VBA der ... das Datum kontrolliert, und wenn der Monat dem Monat des eingetragenen Datums entspricht dann springt der IF Befehl weiter auf ELSE

If Month(nz(Me!Datum,0)) = Month(Date) Then
  'mach irgendwas, wenn der Monat übereinstimmt
Else
  'mach was anderes, wenn der Monat nicht übereinstimmt
End If



PS:

ZitatIf Day(Date) = 1 and [F_maschine] = 1000 and Month(Date) [erledigt_am] <> Month() then
rumcommand.....

Das ist aber falsch in der Syntax das weiss ich.

Das ist nicht nur falsche Syntax, das ist alles falsch...

If Day(Date) = 1 and Me![F_maschine] = 1000 and Month(Date) <> Month( nz(Me![erledigt_am],0)) Then
.
.
Else
.
.
End If




wuffwuff2003

Hallo ja genau so in die Richtung müsste es sein, nur dass hier der Monat eines Feldes ausgelesen werden soll:
If Day(Date) = 1 and [F_maschine] = 1000 and Month(nz(Me!Datum,0)) [erledigt_am] <> Month() then
Mfg

DF6GL

Hallo,

habe vorherigen Post erweitert..


Zitat
nur dass hier der Monat eines Feldes ausgelesen werden soll:  'Warum spricht Du nicht Tacheles? WELCHES Feld ? "Erledigt_am" ???

If Day(Date) = 1 and [F_maschine] = 1000 and Month(nz(Me!Datum,0)) [erledigt_am] <> Month() then

etwa so:


ZitatIf Day(Date) = 1 and Me![F_maschine] = 1000 and Month(nz(Me!Datum,0))  <> Month(nz(Me![erledigt_am],0)) then

wuffwuff2003

Ok danke
Ich denke aber bin auf dem Holzweg mit dieser Lösung, Problem ist es ist schwer zu beschreiben, ich versuch es mal noch anders: (sorry)
If Day(Date) = 1 then
strSQL1 = "update tbl_maschine set fait = '" & Me.faitnow - 30 & "' where [f_maschine] = 148
Else


bis dahin làuft es jetzt dahinter müsste nun noch ein Bedingung kommen, ich schreib mal blind auch wenn falsch hintendran:

strSQL1 = "update tbl_maschine set fait = '" & Me.faitnow - 30 & "' where [f_maschine] = 148 when month(nz(tbl_maschine [fait],0)) <> month(date)

Das heisst das Update darf nur ausgeführt werden wenn der Monat im Feld "Fait" anders ist als der aktuelle Monat

Sorry der Umstände wegen
Danke

DF6GL

#9
Hallo,


das SQL-Statement funktioniert?   Welche Access-/Sprachversion hast Du?

If Day(Date) = 1 then
strSQL1 = "update tbl_maschine set fait = " & Format(Me!faitnow - 30,"\#yyyy-mm-dd\#") & " where [f_maschine] = 148 and Month(nz([fait],0)) <> Month(Date())"
End If



btw: Grundsätzlich sind solche "Magic Number" wie 148 latent eingebaute Fehlerstellen.  Was passiert, wenn es sich mal um eine andere Maschine handelt?  Schreibst Du dann jedes mal den Code um?

wuffwuff2003

Hallo
Das SQL
If Day(Date) = 1 then
strSQL1 = "update tbl_maschine set fait = '" & Me.faitnow - 30 & "' where [f_maschine] = 148
Else

funktioniert hier kommt nur die WENN Bedingung hinzu im Monat. Es handelt sich nur um 2 maschinen dieser Art die ich explizit im VBA aufruhe daher ist das mit der Nummer für mich eigentlich noch ok so.
Mfg