Also was so richtig Bescheiden ist bei Access 2013 ist die Hilfe... Es gibt keine...
Folgende Situation: Habe ein Endlosformular mit Datensätzen welche ein Ja/Nein Feld beinhalten. Ich möchte nun ganz einfach haben, dass bei gesetztem Haken im Textfeld eine 1, und ohne eine 2 kommt. Die Spalte mit dem Haken heißt "Marke". Die Formel sieht wie folgt aus: =Wenn([Marke]=True;1;2)
Leider erhalte ich als Ergebnis der Berechnung die Fehlermeldung #Typ!. Es gibt nirgends einen Hinweis, was mir das Programm damit sagen will. Ich bin schon so weit gekommen, dass Access ein Problem mit dem Ausdruck [Marke]=True hat.
Könnt Ihr mir helfen?
Hi,
ist [Marke] als "Ja/Nein"-Feld deklariert?
ansonsten wegen "Textfeld" => Wenn([Marke]=True;"1";"2")
Harald
Hallo Harald,
ja, es ist ein Ja/Nein Feld - es wird mit einem Haken angezeigt.
Auch wenn ich die Eingabe so mache, wie Du es vorschlägst, erhalte ich die Fehlermeldung #Typ! Wie gesagt, Access scheint mit [Marke]=True ein Problem zu haben. Es scheint so, als ob es so nicht geschrieben wird. In einem anderen Forum habe ich gelesen, dass der Ausdruck so heißen muss: wenn([Marke];1;2) aber dann erhalte ich in jeder Zeile eine 1.
Hallo datekk
Ein Ja/nein feld liefert immer ein Wert zurück. Kein Tur oder False sondern wie folgt.
Bei ja = -1
Bei Nein = 0
Gut und schön, aber wie sieht dann die Wenn Funktion aus??? Denn =Wenn([Marke]-1;"1";"2") = #Typ! oder =Wenn([Marke]=-1;"1";"2") = #Typ!
Hi,
probier mal den Anhang.
Gibt Formular, das eine Abfrage als Datenquelle hat. Dort wird Marke in Text gewandelt. Das gewandelte Feld wird im Formular angezeigt.
Harald
[Anhang gelöscht durch Administrator]
Ah, ist ein Lösungsansatz.. Aber wie hast Du das Feld "Text2" im Formular erzeugt? Das erschließt sich mir nicht und wenn ich auf Layout gehe, wird das Formular zerschossen... Ist da was mit SQL im Spiel oder ist einfach nur das Feld aus der Abfrage zugefügt worden?
Hallo
Dem Formular liegt als Datenherkunft die Abfrage in der die Umschaltung gemacht wird
Eigentlich total blöde Lösung, nur für so einen Umstand ne extra Abfrage erstellen zu müssen.. Manchmal fragt man sich echt bei dem Programm was die Programmierer sich hier gedacht haben.....
trotzdem vielen Dank für die Lösung... :)
Hallo
Wenn du in einem Formular ein Feld mit dem Ja/Nein umschalten möchtest geht das natürlich auch ohne Abfrage dann aber mit VBA Code
If Marke = -1 then
Me.dein_feld=2
else
Me.dein_feld=1
end if
Hallo
evtl zickt Acc ja rum weilMarke eine reserviertes Wort ist. benenn es um( in tb und ggf im Formular) dann sollte dein vorhaben auch so klappen.
ok, am Wort "Marke" lag es nicht.
Wie und wo gebe ich die SQL-Anweisungen aus dem Beitrag von Stapi ein? Als Ereignis?
SQL ?
Stapi hat Dir VBA-Code offeriert ;)
Und ja, der gehört in ein Ereignis......davon gibt es sehr viele, daher musst Du Dir erst im klaren sein, wann das Feld seinen Wert ändern soll.
Du kannst es zB im "Current" Ereignis des Formulars verwenden, dann würde bei jedem Datensatzwechsel den Wert einstellen.
Hallo,
ZitatEigentlich total blöde Lösung, nur für so einen Umstand ne extra Abfrage erstellen zu müssen.. Manchmal fragt man sich echt bei dem Programm was die Programmierer sich hier gedacht haben.....
Man erstellt für Access immer eine Abfrage und greift nie auf die Tabelle direkt zu. Insofern, haben sich die Programmierer schon was gedacht. Und mit Verlaub, wenn man den Unterschied zwischen SQL und VBA nicht kennt, sollte man mit solchen Aussagen eh vorsichtig sein. ;D ;D
So eigenartig wie sich das anhört, aber der Zugriff auf die Daten geht mit einer Abfrage schneller als wie mit der Tabelle direkt.
Bein Zugriff über eine Tabelle erstellt Access intern auch eine Abfrage kompiliert diese und erstellt den internen Ablaufplan zur Darstellung der Abfrage. Das erfordert
jedes mal Zeit. Eine gespeicherte Abfrage liegt fertig kompiliert mit Ablaufplan vor und wird sofort ausgeführt.
Weiterhin enthält eine Abfrage nur die Felder die man benötigt, was ein Speicher und Geschwindigkeitsvorteil sein kann.
Und schließlich, die Datensatzreihenfolge einer Tabelle richtet sich nach der Sortierung des Primärschlüssels. Nur die Sortierung der Daten über eine Abfrage ist zuverlässig immer gleich.
Daher: Immer eine gespeicherte Abfrage verwenden, bei großen Datenmengen ist das unerlässlich.
Ich würde hier ohnehin kein Ja/Nein Feld verwenden, sondern eine Optionsgruppe mit Ja/Nein als zwei Optionen. Dann kannst Du gleich die 1 oder die 2 speichern und die Umwandlung entfällt.
@Stapi
Ein Ja/Nein Feld liefert True oder False. -1 und 0 erfordert eine Typumwandlung. Daher ist bei gr0ßen Datenmengen True und False zu bevorzugen.
Hi,
ein weiterer Grund, warum ich die Variante mittels Abfrage und nicht per VBA vorgeschlagen hatte, wird ersichtlich, wenn die Daten nicht in der Formular-Sicht sondern als Tabelle bzw. Endlos-Formular dargestellt werden sollen.
In diesem Fall werden bei der vba-Variante nämlich bei allen Datensätzen ein "Ja" bzw. "Nein" angezeigt, je nachdem auf welchem Datensatz der Datensatzzeiger positioniert ist.
Harald
Hallo
@bahasu die Vorteile liegen sicherlich bei der Abfrage, nur @dattek frage nach einer weiteren Lösung ohne Abfrage das gibt es aber dann nur per VBA dieses wollte ich nur als Beispiel aufzeigen.
@MzKiMu
Zitat@Stapi
Ein Ja/Nein Feld liefert True oder False. -1 und 0 erfordert eine Typumwandlung. Daher ist bei gr0ßen Datenmengen True und False zu bevorzugen
Habe ich nicht deutlich rüber gebracht, in einer Abfrage als Kriterium hilft "True oder False" dir nicht viel, das war mein Gedanklicher Ansatz.
Hallo,
@Stapi
auch in einer Abfrage ist die Where Klausel mit True/False zu bevorzugen.
SELECT JaNeinFeld
FROM DeineTabelle
WHERE JaNeinFeld=True
Ist reiner SQL Code und funktioniert einwandfrei, auch mit =False.
Hallo MzKiMU
Wenn ich eine Abfrage erstellt habe, wurde das bei mir in der Enwurfsansicht erstellt nicht in der SQL Ansicht.
Anfänger halt!
Somit Danke für den Hinweis, war der Tag wieder nicht Umsonst (was dazu gelernt) ;D
Hallo,
die Entwurfsansicht ist eingedeutscht, daher ist dort Wahr bzw. Falsch einzutragen. Access ändert das in der SQL Sicht automatisch auf True bzw. False.