Ich hab mich heute furchtbar in "If"-Clauses verheddern.
Ich kenne es von anderen Programmiersprachen so, dass if eine Bedingung prüft, ob die wahr ist - wenn nicht, KANN man quasi einen "else" wert angeben. Muss aber nicht.
Ich habe begriffen, dass if(x,y,z) offenbar anders funktoniert und IMMER ein "z" erwartet, oder geht es auch anders.
Konkret:
Ich habe mir - Dank Eurer Hilfe - nun endlich eine Formel geschrieben, die abhängig von der Laufzeit eines Albums und der Anzahl der Tracks eine Grobsortierung macht, ob es sich um eine Single, eine EP oder ein Album handelt. Das funktioniert auch super.
Tagfeld formatieren %releasetype%:
$if($grtr($add($mul($num($left(%totaltime%,2),1),60),$num($left($cutLeft(%totaltime%,3),2),1)),29),Album,$if($less(%totaltracks%,4),Single,$if($less(%totaltracks%,7),EP,Album)))
Nun will ich aber "Album" noch weiter aufbohren und anhand von "Signalwörtern" im Albumtitel aus Album ggf,. "Live", "Remix", "Bonus", "Collection" etc. machen.
Dazu habe ich ein zusätzliches Tagfeld formatieren definiert und das extra prüft, ob %releasetype% aus dem vorherigen Schritt auf "Album" steht (da ich EP und Single nicht weiter aufbohren will).
Das sieht dann so aus... (Beispiel)
$if($and($eql(%releasetype%,Album),$grtr($strstr(%album%,Concert),0)),Live,Album)
Das funktioniert zwar auch - was ich übersehen habe ist, dass er zwar "Live" nur setzt, wenn beide Bedingungen erfüllt sind und ansonsten wieder auf Album zurückspringt - auch, wenn es sich um eine Single oder EP handelt, so dass damit die erste Formatierung in jedem Fall überschrieben wird.
Und klar, ich könnte nach jeder Abfrage das 1. nochmal nachschießen, nach dem Motto:
$if($and($eql(%releasetype%,Album),$grtr($strstr(%album%,Concert),0)),Live,$if($grtr($add($mul($num($left(%totaltime%,2),1),60),$num($left($cutLeft(%totaltime%,3),2),1)),29),Album,$if($less(%totaltracks%,4),Single,$if($less(%totaltracks%,7),EP,Album))))
... das endet aber spätestens dann, wenn ich in der nächsten "Abfrage" schaue, ob "Konzert" im Albumtitel vorkommt, also so was wie
$if($and($eql(%releasetype%,Album),$grtr($strstr(%album%,Konzert),0)),Live,$if($grtr($add($mul($num($left(%totaltime%,2),1),60),$num($left($cutLeft(%totaltime%,3),2),1)),29),Album,$if($less(%totaltracks%,4),Single,$if($less(%totaltracks%,7),EP,Album))))
würde dann auch immer die erste Abfrage (Concert) wieder überschreiben...
Was ich also "brauche", ist so was wie
$if($and($eql(%releasetype%,Album),$grtr($strstr(%album%,Concert),0)),Live)
Also auf gut deustch, wenn "Concert" in %album% titel ist, setzte %realesetype% auf Live, wenn nicht = "Do nothing" (und lass %realesetype% so wie er ist...)
Hab ich hier irgendeine Chance?!