Schönen Guten tage liebe Forenmitglieder,
wie ihr aus dem Betreff entnehmen könnt habe ich das Problem das mein Ausdruck viel zu lang für das Berechnete Feld ist.
Wenn(IstNull([Schriftzug]) Und IstNull([2_Farbe]) Und IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = FALSCH Und 2_Motiv = FALSCH;70;Wenn(IstNull([2_Farbe]) Und IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = FALSCH Und 2_Motiv = FALSCH;85;Wenn(IstNull([Schriftzug]) Und IstNull([2_Farbe]) Und IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = FALSCH;85;Wenn(IstNull([2_Farbe]) Und IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = FALSCH;100;Wenn(IstNull([Schriftzug]) Und IIstNull([2_Farbe]) Und IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = WAHR;100;Wenn(IstNull([2_Farbe]) Und IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = WAHR;115;Wenn(IstNull([Schriftzug]) Und IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = FALSCH Und 2_Motiv = FALSCH;78;Wenn(IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = FALSCH Und 2_Motiv = FALSCH;93;Wenn(IstNull([Schriftzug]) Und IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = FALSCH;93;Wenn(IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = FALSCH;108;Wenn(IstNull([Schriftzug]) Und IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = WAHR;108;Wenn(IstNull([3_Farbe]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = WAHR;123;Wenn(IstNull([Schriftzug]) Und IstNull([4_Farbe]) Und 1_Motiv = FALSCH Und 2_Motiv = FALSCH;82;Wenn(IstNull([4_Farbe]) Und 1_Motiv = FALSCH Und 2_Motiv = FALSCH;97;Wenn(IstNull([Schriftzug]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = FALSCH;97;Wenn(IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = FALSCH;112;Wenn(IstNull([Schriftzug]) Und IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = WAHR;112;Wenn(IstNull([4_Farbe]) Und 1_Motiv = WAHR Und 2_Motiv = WAHR;127;Wenn(IstNull([Schriftzug]) Und 1_Motiv = FALSCH Und 2_Motiv = FALSCH;86;Wenn(1_Motiv = FALSCH Und 2_Motiv = FALSCH;101;Wenn(IstNull([Schriftzug]) Und 1_Motiv = WAHR Und 2_Motiv = FALSCH;101;Wenn(1_Motiv = WAHR Und 2_Motiv = FALSCH;116;Wenn(IstNull([Schriftzug]) Und 1_Motiv = WAHR Und 2_Motiv = WAHR;116;131)))))))))))))))))))))))
Habt ihr irgendwelche Lösungsvorschläge?
MfG VatosCorsos
Nachtrag:
Hier nochmal etwas schöner und formatierter:
https://dl.dropboxusercontent.com/u/2519074/Berechnung.txt
Hallo,
du könntest aus dem Verschachtelunsgewirr eine Public Function in einem Standardmodul basteln und dem Textfeld das Ergebnis der Selbigen zuweisen.
z.B.:
Public Function GibHer() As Date
GibHer = Date()
End Function
in die Datenherkunft deines Textfeldes Schreibst du dann:
= GibHer()
HTH
Hi,
meinst du mit Standardmodul:
Erstellen --> Modul (im Makros und Code Bereich)
1. wo definiere ich den Rückgabeparametertyp? (Benötige integer)
2. meine verschachtelter Ausdruck füge ich in den Klammern von "Date" ein?
3. Viele Dank :)
btw ich nutze Access 2013
Hallo,
ja, meine ich ...
Den Rückgabeparametertyp bestimmst du in der Kopfzeile der Function ...
Public Function Funktionsname(etwaige Übergabeparameter) As Ausgabeparametertyp
wie in meinem Beispiel oben:
Public Function GibHer() As Date ... gibt das Ergebnis der Function als Datum zurück
Dein verschachtelter Ausdruck wird zwischen Public Function und End Function zu einem auswertbaren VBA-Konstrukt 'umgewandelt'.
Entweder verwendest du dabei die If Then Else ... ElseIf ... Konstrukte oder aber auch Select Case ...
Siehe dazu die VBA-Hilfe im VBE
Z.B.
If IsNull(Forms!frmDeinFormular!Schriftzug) AND IsNull(Forms!DeinFormular!2_Farbe) And .....
In jedem Fall wird das eine recht komplexe Geschichte werden, an die du dich am Besten schrittweise herantastest.
Soll heißen, jede Verschachtelungsebene nach der anderen implementieren und das Ergebnis durch Testdaten überprüfen..
Zitat2_Farbe, 3_Farbe, 4_Farbe
1_Motiv, 2_Motiv, 99_Motiv
Wenn man so etwas liest, könnte man auch erst einmal an einen zusätzlichen Normalisierungsschritt denken. Mit ordentlichen Tabellen würde man dann auch zu einer anderen Abfragelogik kommen als dieses "übersichtliche" Wenn-Dann-Sonst-Trallala.
MfGA
ebs
Hallo,
um es etwas deutlicher als ebs zu formulieren, das Datenmodell ist ziemlich verkorkst.
Bei Aufzählungsfeldern (Felder mit einer fortlaufenden Zahl ...1..., ...2....) kann man immer davon ausgehen, dass das Datenmodell falsch ist.
Und bei so vielen Wenn auch. Meines Wissens, gehen ohnehin nur 7 Wenns in einer Formel.
@database
mich wundert, dass Du da keine Anmerkung dazu gemacht hast. ;D ;D
Hallo,
@MzKlMu
Keine Angst, mir ist das schon aufgefallen, wollte aber erst mal auf das angefragte Problem reagieren.
Andererseits gab's keinen Hinweis darauf, dass das Formular an eine Tabelle oder Abfrage gebunden ist - und Feldbezeichnungen können
sehr phantasiereich ausfallen.
Nichts desto trotz stimmt natürlich deine Aussage zum Datenmodell generell ...
Zitatgehen ohnehin nur 7 Wenns in einer Formel
... und maximal 255 Zeichen in dieser - beides leicht überschritten 8)
Hab es anders und viel einfacher gelöst. Vielen Dank für eure Bemühungen! Adios!
~closed
"Löse es anders ..." ... ist doch der ultimative Tipp.
Im Wiederholungsfall würdest Du damit in helle Begeisterung ausbrechen.
MfGA
ebs
Hallo,
ZitatHab es anders und viel einfacher gelöst
...und das WIE bleibt ein streng gehütetes Geheimnis 8)
Na, so ist es gelöst:
Berechnetes Feld:
;D