Gültigkeitsregeln

Hallo Ihr klugen Köpf,

ich hoffe Ihr könnt mir helfen.

Mein Problem:
Ich habe in Access ein Formular auf dem sich ein Feld befindet. In dieses Feld sollen nur bestimmte Nummern eingegeben werden können.
Diese Nummern befinden sich in einer Tabelle.
Geht es das ich die Tabelle irgendwie mit dem Formular verknüpfe und man nur die Nummern eingeben kann die auch in der Tabelle stehen?

Ich würde das gerne so machen, weil ich mehrere Formular habe die sich auf das Feld beziehen. Wenn ich das mit der Gültigkeitsregel umsetzten würde, müsste ich jedes Mal wenn eine neue Nummer dazu kommt in jedes Formular und die dazutragen. Wenn das mit der Tabelle ginge bräuchte ich die Nummern nur an einer Stelle zupflegen.

Ich hoffe Ihr kennt eine Lösung!
Vielen Dank!

Liebe Grüße EMMA

Moin, EMMA,

schau Dir mal das Kombinationsfeld an, auch Dropdown genannt.

Du änderst einfach das Textfeld, in dem die Nummer stehen soll, in ein Kombinationsfeld und gibst als Datenherkunft die Tabelle an.

Das Kombínationsfeld kannst Du übrigens en bloc auf andere Formulare kopieren.

Gruß Ralf

Hallo EMMA,

Ich hoffe Ihr kennt eine Lösung!

ich glaube schon :smile:

  • Rechtsklick auf das Feld
  • Aumwandeln in ein Kombinationsfeld
  • Datenbasis ist deine Tabelle
  • Häkchen bei „Nur Listeneinträge“
  • fertig

Grüße aus Schönberg
Wolfgang
(Netwolf)

Danke euch für die schnellen Antworten.
Problem das Feld soll kein Kombinationsfeld sein. Erklären kann ich das leider auch nicht. Es wir einfach so gewünscht!

Geht es auch ohne Kombifeld?

Grüße EMMA

Hi EMMA,

Problem das Feld soll kein Kombinationsfeld sein. Erklären
kann ich das leider auch nicht. Es wir einfach so gewünscht!

das sind die Wünsche, bei denen der Programmierer sich auf die Hinterbeine stellen muss - als Berater seines Kunden darf er derartige Blödheiten nicht durchgehen lassen.

Geht es auch ohne Kombifeld?

Nein.

Gruß Ralf

Nachtrag

Geht es auch ohne Kombifeld?

es gibt nichts, was man nicht mit besten Kenntnissen in VBA selbst nachbauen könnte. Dazu würde ich den Auftraggeber exakt beschreiben lassen, wie das aussehen müsste, und heraus käme dabei - trörö - ein Kombifeld. Wazu also das Rad nochmal erfinden?

Gruß Ralf

Hallo!
Vielleicht ist es ein Weg, das ganze anzufragen und wenn der eigegebene Wert nicht in der Tabelle vorkommt: Fehlermeldung und Feld wieder löschen. Etwa so:

If DCount("*", „[TABELLE]“, „[Nummernfeld]=“ & Me![DeineEingegebeneNummer]) = 0 Then
MsgBox „Nummer nicht vorhanden“, vbCritical, „Eingabe korrigieren“
SendKeys „{ESC}“, False
DoCmd.GoToControl „[DeineEingegebeneNummer]“
End If

Viele Grüße

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

naja, ich versteh auch nicht, warum kein Kombi…

Wie auch immer, mit einem normalen Textfeld („MeineZahl“) ginge das etwa so:

Sub Meinezahl_BeforeUpdate(Cancel as Integer)
If Isnull (Me!Meinezahl) OR Dcount("*",„tblZahlen“,„Zahlfeld=“ & nz(Me!MeineZahl,0)) = 0 Then
Msgbox „Nix da“
Cancel =True
End If
End Sub

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Sub Meinezahl_BeforeUpdate(Cancel as Integer)
If Isnull (Me!Meinezahl) OR Dcount("*",„tblZahlen“,„Zahlfeld=“
& nz(Me!MeineZahl,0)) = 0 Then
Msgbox „Nix da“
Cancel =True
End If
End Sub

Hallo Franz!

Ich habe jetzt mal den Programmcode von Dir getestet und es funktioniert wunderbar! Vielen Dank für Deine Mühe! Hast mir wirklich sehr geholfen!

Viele Grüße von der Ostsee
EMMA