Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Mina am Dezember 04, 2016, 20:03:39

Titel: Gültigkeitsregel
Beitrag von: Mina am Dezember 04, 2016, 20:03:39
Hallo Forum,
ich habe eine Tabelle mit Telefonnummern, MobiltelefonNr. Fax usw.
Es gibt Leute, die haben nur eine TelefonNr. oder nur eine MobilNr.

Es muss jedoch in jedem Feld ein Wert stehen.
Ich wollte das Problem mit einer Gültigkeitsregel lösen.

Meine Idee für das TelefonNr-Feld: Wenn([Tele];"";"keine")
Funktioniert leider nicht!

Kann mir jemand einen Tipp geben

Gruß
Mina


Titel: Re: Gültigkeitsregel
Beitrag von: crystal am Dezember 04, 2016, 20:34:09
Hallo Mina,
in deiner Gültigkeitsregel gibt es 2 Fehler.
1. wenn man sie "übersetzt", lautet die Regel ungefähr:
Wenn (telnr) existiert, dann nehme "", ansonsten "keine"
2. "keine" ist nur dann möglich, wenn das Feld als Text und nicht als Zahl definiert ist.

Eine Lösung könnte sein:
Wenn (telnr) existiert, dann nehme sie, ansonsten nichts (oder 0).

Wenn([Tele];[Tele];"0")

Das bewirkt nur, dass im Feld Tele die Telefon-Nr. steht, wenn sie schon dasteht, ansonsten eine 0.
Problem ist nur, dass eine Gültigkeitsregel nur dann geprüft wid, wenn im betreffenden Feld auch etwas eingegeben wird.

Deshalb musst du die Prüfung wohl eher machen, BEVOR der Datensatz abgespeichert werden soll, ODER du müsstest alle TK-Felder mit "Eingabe erforderlich: Ja" kennzeichnen und daneben einen Text schreiben wie "wenn unbekannt, bitte 0 eingeben" (was aber nicht funktioniert, z. B. nach Bewegen der Maus in ein anderes Feld).

Es bleibt also nichts anderes übrig, als die Telefon-Felder zu prüfen, bevor der DS gespeichert werden soll. Dazu ist etwas VBA-Code nötig.

lg
crystal
Titel: Re: Gültigkeitsregel
Beitrag von: MzKlMu am Dezember 04, 2016, 20:45:39
Hallo,
eine Telefonnummer muss zwingend Text sein, sonst sind die 0en bei der Vorwahl weg. Mit einer Gültigkeitsregel geht das ohnehin nicht in einer Tabelle und als Formel in einem Formularfeld auch nicht. Das Feld wird ja dann mit der Formel belegt und ist dann nicht mehr beschreibbar. Das muss in einem Formular gemacht werden wie von Crystal auch vorgeschlagen.

Ich würde mir die Sache aber ganz einfach machen und die Felder in der Tabelle mit dem Standardwert "Keine" vorbelegen und dann einfach bei Bedarf überschreiben.
Man müsste aber dann noch mit etwas VBA den Fall abfangen wenn der Datensatz später noch geändert wird.

Als alter Datenmodellanmeckerer ;D möchte ich aber nicht unerwähnt lassen, dass man das mit 2 zusätzlichen Tabellen als n:m Beziehung lösen würde.
Das ist deutlich flexibler. Da gibt es dann auch keine leeren Felder mehr. Und es lassen sich beliebig viele unterschiedlichen Kommunikationseinträge erfassen. (Email, Festnetz priv., Festnetz Dienstl., Fax, Homepage, Handy, Skip, usw. usw. )

Siehe Bild aus einer anderen DB.
Titel: Re: Gültigkeitsregel
Beitrag von: Mina am Dezember 04, 2016, 21:22:45
Hallo,
Vielen Dank für Eure Tipps.

Ich werde das Problem mit "Eingabe erforderlich=ja" lösen. Daneben einen Anweisungstext.

Gruß
Mina
Titel: Re: Gültigkeitsregel
Beitrag von: Lachtaube am Dezember 04, 2016, 21:28:44
Selbstverständlich lässt sich eine Gültigkeitsregel in den Eigenschaften der Tabelle - nicht des Felds - festlegen, die garantiert, dass mindestens eines der drei Felder einen Eintrag haben muss.[Tele] Ist Nicht Null Oder [Mobil] Ist Nicht Null Oder [Fax] Ist Nicht NullWas eine Telefonnummer enthalten muss oder darf, kann mehr oder weniger gut in der Gültigkeitsregel des Felds selbst festgelegt werden. Ohne auf Fremdsoftware zuzugreifen kannst Du gültige Telefonnummern kaum garantieren. Ich verweise nur mal auf Googles phonenumber (https://github.com/googlei18n/libphonenumber) Bibliothek, von der es wiederum viele Forks auch in anderen Sprachen gibt - leider nicht in VBA. :D
Titel: Re: Gültigkeitsregel
Beitrag von: MzKlMu am Dezember 04, 2016, 21:33:30
Hallo,
Zitatdass mindestens eines der drei Felder einen Eintrag haben muss.
Dass das geht ist mir auch klar, aber Mina wollte ja auch noch "keine" reinschreiben wenn ein Feld leer ist, geht das dann auch mit der Gültigkeitsregel ?
Titel: Re: Gültigkeitsregel
Beitrag von: Lachtaube am Dezember 04, 2016, 21:49:46
Für die Anzeige von keine könnte man die Formateigenschaft heranziehen: @;"keine"