2016-06-02 14 views
0

Ich habe 5 Textfelder in einem Formular.MS Access: Wie kann ich dieses Textfeld automatisch einen Wert basierend auf einer Abfrage ausfüllen?

  1. Job (Text)
  2. Suffix (integer)
  3. Produktionsdatum (Datum)
  4. Verschiebung (Text)
  5. Startzeit (Zeit)

Der Benutzer füllt Diese Felder und dann übergibt das Formular, um in eine Tabelle zu schreiben. Der Benutzer macht dies mehrmals pro Schicht mit den gleichen Informationen.

Das Problem: Manchmal vergißt der Benutzer, die fünfte Textbox auszufüllen, also möchte ich einfach ihre zuvor übergebenen Werte in der Tabelle überprüfen und das Textfeld mit der maximalen Startzeit ausfüllen.

Was ich versucht habe: Ich machte eine Abfrage, um die ersten 4 Textfelder als Kriterium zu nehmen und dann die maximale Startzeit zurückzugeben. Die Abfrage funktioniert, aber ich kann nicht erreichen, dass sie standardmäßig im Formular angezeigt wird. Ich habe die Standardwerteigenschaft verwendet, um auf den richtigen Wert in der Abfrage zu zeigen, aber nichts wird angezeigt.

Das Ziel: Die 5 Textfelder sollten zunächst leer sein (was sie derzeit sind). Nachdem der Benutzer die ersten 4 Textfelder ausgefüllt hat, sollte die 5. Box mit der maximalen Startzeit gefüllt werden.

Antwort

0

Sie müssen AfterUpdate-Code für 4 Felder hinzufügen, die den Wert aller 4 ersten Felder überprüfen sollten, und wenn sie nicht leer sind, füllen Sie das fünfte Textfeld mit DLookup aus Ihrer Abfrage.

Zum Beispiel die Funktion wie folgt aus allen NachAktualisierung Veranstaltungen anrufen:

Private Function CheckData() 
If Nz(Me.job, "") <> "" And Nz(Me.suffix, "") <> "" _ 
    And Nz(Me.[production date], "") <> "" And Nz(Me.Shift, "") <> "" Then 

    Me.[start time] = DLookup("start time", "MyQuery", "job='" & Me.job & _ 
     "' and suffix=" & Me.suffix & " and [production date]=#" & _ 
     Format(Me.[production date], "yyyy/mm/dd") & "# and Shift='" & Me.Shift & "'") 

End If 
End Function