Neuigkeiten:

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

Mobiles Hauptmenü

Kontrollkästchen mit dritter Komponente?

Begonnen von dobby110, November 18, 2016, 08:18:59

⏪ vorheriges - nächstes ⏩

dobby110

Hallo zusammen,

ich hätte eine Frage. Und zwar habe ich folgendes Problem.
Ich habe eine Art Checkliste erstellt. In dieser werden bestimmte Punkte abgehakt, sobald die Dokumente vorliegen. Allerdings ist es so, dass nicht immer alle Dokumente notwendig sind.
Nun suche ich nach einer Möglichkeit einer dritten Komponente für das Kontrollkästchen. Kann mir jemand sagen, ob das überhaupt möglich ist?

Ich will damit kenntlich machen, dass das Dokument nicht benötigt wird (weil es dieses nicht gibt)
Ich habe zwar auch ein Textfeld, wo man das erfassen kann, aber das Hauptproblem besteht auf dem dazugehörigen Bericht. Da dort wirklich nur die Häkchen angezeigt werden und dann nicht hervor geht, ob das Dokument vorliegt, nicht benötigt wird oder noch fehlt.

Hat jemand eine Idee?

MzKlMu

Hallo,
ein KK mit den 3 Zuständen gibt es nicht. Du kannst aber für die 3 Möglichkeiten ein einfache Zahlenfeld nehmen.
1=Vorhanden
2=fehlt noch
3=nicht notwendig

Mit Hilfe einer Optionsgruppe kannst Du diese 3 Zustände abbilden.

Wie ist denn die Tabelle mit den jetzigen KK aufgebaut ?
Sind das immer die gleichen Dokumente die mal gebraucht werden und mal nicht ?
Vermutlich könnte man auch das Datenmodell noch verbessern.

Kannst Du mal ein Bild des Beziehungsfensters posten ?
Gruß Klaus

crystal

Hallo,
Klaus, ich kann doch in den Eigenschaften eines KK unter Daten "Dreifacher Status" Ja definieren. Dann wird das KK in drei Zuständen angezeigt: leer, mit Häkchen oder gefüllt.

Ich habe jetzt nicht geprüft, wie diese drei Zustände intern abgebildet werden (ich glaube -1, 0, 1).

Das ausgefüllte KK sieht man in manchen Windows-Einstellungen und es steht da manchmal für "noch nichts gewählt" oder meistens für "nicht erforderlich".

lg
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

DF6GL

Hallo,
Ein KK-Feld kann nicht als Tristate mit einem boolschen Tabellenfeld verwendet werden.

Soll der Wertebereich eines Tristate-KK  (-1, 0, NULL)  in einem Tabellenfeld abgebildet werden, ist ein "echtes" Integer-Zahlen-Feld erforderlich.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MzKlMu

#4
Hallo,
@cristal
ZitatDann wird das KK in drei Zuständen angezeigt: leer, mit Häkchen oder gefüllt.
versuche mal in einem Formular ein gebundenes KK als Leer (also gefüllt) zu speichern. Das ist nur leer, solange der DS nicht gespeichert wurde. Sobald der Datensatz gespeichert ist wird aus dem Leer (gefüllt) ein "nicht angehakt (0).
Und selbst wenn Du das Hakenfeld an ein Zahlenfeld bindest, kannst Du das KK niemals wieder zu Leer zurückklicken. Es geht immer nur Ja (-1) oder Nein (0)
Es bleibt nur die Optionsgruppe.

Meiner Meinung nach ist das auch irreführend beschrieben, auch in der Access Hilfe.

Aber, da ich ohnehin das Datenmodell bezweifle braucht man das gar nicht.  ;D
Gruß Klaus

crystal

Hallo Klaus,
in einem Boolean speichern ist natürlich nicht möglich.
Wie aber Franz bereits geschrieben hat, geht es mit einem Integer-Feld. Als Wert steht dann in diesem Feld Null, 0, oder -1 und ich kann in einem Formular, das ein KK darstellt, alle drei Zustände anwählen (durch wiederholtes Klicken).

Der entscheidende Hinweis von Franz ist, dass der dritte Zustand als Null (nicht etwa 0) gespeichert wird (und nicht als 1, wie von mir vermutet).

Jedenfalls habe ich es eben probiert und es funktioniert (Acc2016).

lg
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

MzKlMu

Hallo,
es gelingt mir (Access2003) nicht den Null Zustand wieder auszuwählen. Dass KK wechselt von Angehakt zu Nicht angehakt, ohne einen 3.Zustand.
Gruß Klaus

crystal

#7
Hallo,
dann hat MS da vermutlich etwas nachgebessert...
Aber auch in acc2016 gibt es seltsame Phänomene, wenn man "Eingabe erforderlich" auf Ja stellt.

Um auf der sicheren Seite zu sein, bleibt also wirklich nur die Optionsgruppe, denn "da weiß man, was man hat".

lg
crystal

Nachtrag aus der acc2013-Developer-Documentation:


Published: July 16, 2012

You can use the TripleState property to specify how the specified control will display Null values. Read/write Boolean.

expression .TripleState

expression A variable that represents a CheckBox object.

The Null property uses the following settings.
----XXXX------------------------------------

True
The control will cycle through states for Yes, No, and Null values.
The control appears dimmed (grayed) when its Value property is set to Null.
-------------------XXXXXXXXXXXXXXX----------------------

False
(Default) The control will cycle through states for Yes and No values. Null values display as if they were No values.

This property can be set in any view.

Dim strTripleState As String

strTripleState = Forms.Item("frmOperations").Controls.Item("Check1").TripleState

Select Case strTripleState
Case True
MsgBox "For Check1, TripleState = " & strTripleState & _
". The control will cycle through states for Yes, No, " & _
"and Null values. The control appears dimmed (grayed) " & _
"when its Value property is set to Null."
Case False
MsgBox "For Check1, TripleState = " & strTripleState & _
". The control will cycle through states for Yes and No " & _
"values. Null values display as if they were No values."
Case Else
MsgBox "Can't determine the TripleState property for Check1."
End Select


Aber hier hat MS wohl etwas geschlampt (siehe meine Kommentar oben -----XXXX----).
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...