Acces - Feldeintrag erzwingen

DerLadendieb

White and Nerdy
Registriert
23 Juli 2013
Beiträge
281
Ort
Yellow Submarine
Hallo zusammen,

weiß jemand von euch wie ich, wenn ein bestimmter Wert gewählt wird einen Feldeintrag in Acces erzwingen kann?
Zum Beispiel Feld 4 hat 3 Auswahlmöglichkeiten - und wenn die 2. gewählt wird soll Feld 5 eine Eingabe erfordern, allerdings soll dies wenn 1. oder 3. gewählt wird nicht passieren.

Also eine Art IF-Anweisung wird benötigt - Ist dies ohne VBA realisierbar?
Wenn Nein, wie ist es mit VBA realisierbar?

Danke im voraus für eure Hilfe,
DerLadendieb
 
Bekommt Feld 5 einen default Wert, wenn keine Möglichkeit mit Eingabe gewählt wurde? Oder was kommt dann rein?
Ging da vielleicht was mit einem Berechnungsfeld, das eine IF-Anweisung nutzt?

edit:
Oder in der Design-Ansicht des Formulars das Eingabefeld mit ner bedingten Formatierung versehen. Man konnte damit glaub ich auch die Eigenschaft "enable" steuern, also ob Eingaben möglich sind oder nicht.

edit2:
Gerade gelesen, das das Feld dann eine Eingabe erfordern soll. Wenn das heißt, das Leerlassen keine gültige Eingabe ist, müsste man das noch in einer Validierungsregel verwursten.
 
Zuletzt bearbeitet:
Das dürfte glaube ich nur mit VBA gehen - außer dafür ist ein Feature ab Access2010 hinzu gekommen - die genauen neuen Features von Access habe ich noch nicht gebraucht ;D

[src=vb]Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Combobox.selected(1) = True AND Me.Textfeld.text = "" Then
MsgBox "Bemerkung muss ausgefüllt werden!", , ""
Cancel = True 'Speichern abbrechen
Me!Textfeld.SetFocus
End If
End Sub[/src]

könnte funktionieren.
 
  • Thread Starter Thread Starter
  • #4
@tophirsch

Bekommt Feld 5 einen default Wert, wenn keine Möglichkeit mit Eingabe gewählt wurde? Oder was kommt dann rein?

Feld 5 ist als Datum deklariert und soll dementsprechend ein bestimmtes Datum beinhalten.
Wenn Feld 4 die Auswahlmöglichkeit 1 oder 3 wählt wäre ein Datum sinnlos, aber bei Auswahlmöglichkeit 2 ist es unbedingt notwendig.

müsste man das noch in einer Validierungsregel verwursten.

Ist das kompliziert?


@drfuture

Wie genau muss ich so einen VBA Code deklarieren? Als neues Modul in VB Editor?
Und wie greife ich aus der Tabelle darauf zu?


Danke an euch beide für die Antworten.
 
Zuletzt bearbeitet:
Im deutschen Access nennt sich das Gültigkeitsregel. Je nach Version musst du mal schauen, wo du die definieren kannst. Bei 2010 gehts unter Felder>Überprüfung>Datensatz Gültigkeitsregel

Klimper da mal sowas rein:
[src=text](([auswahlfeld]=1 Oder [auswahlfeld]=3) Und IstNull([datum])) Oder ([auswahlfeld]=2 Und IstDatum([datum]))[/src]

Er bringt dann eine Meldung, wenn bei [auswahlfeld] =1 oder =3 etwas im Datumsfeld steht, muss also leer bleiben. Er beschwert sich auch, wenn das Datumsfeld leer bleibt, wenn [auswahlfeld] = 2 ist. Wenn du mehr als 3 mögliche Werte im Auswahlfeld hast, musste das auch noch mit einer weiteren Klammer verodern. Kann ich dir dann auch nochma helfen, wenns klemmt. Bildet das grundsätzlich erstmal das gewünschte Verhalten ab?
 
Zuletzt bearbeitet:
  • Thread Starter Thread Starter
  • #6
Danke für die schnelle Antwort.
Sieht theoretisch sehr gut aus - werde das jetzt testen und dann ein Feedback geben.

/edit:

Ich muss das mal zu Hause testen - habe in der Firma nur Zugriff auf Acces 2002.
Das ist wie ein Schlag ins Gesicht wenn du Access 2013 gewohnt bist.

Feedback folgt.
 
Zuletzt bearbeitet:
Der Code müsste direkt "hinter" das Formular gelegt werden, also im VBA-Editor das Formular auswählen, aber die Lösung vom Hirsch ist eh viel besser :)
 
  • Thread Starter Thread Starter
  • #8
So, bin heute endlich dazu gekommen den Vorschlag von tophirsch umzusetzen.

Nachdem ich fälschlicherweise versucht habe das ganze als Feld Gültigkeitsregel, anstatt als Datensatz Gültigkeitsregel zu definieren hat es dann doch tadellos funktioniert.
Bei Access 2013 findet man die Einstellung ebenfalls unter "Felder>Überprüfung>Datensatz Gültigkeitsregel".

Da ich mich mit VBA ehrlich gesagt noch gar nicht auskenne habe ich den Lösungsvorschlag von drfuture aussen vorgelassen.
Muss mich aber in nächster Zeit wohl sowieso damit beschäftigen.


Danke nochmals an euch beide für die Hilfe.
 
Zurück
Oben