Ich habe einen SSRS Ausdruck mit diesem in ihm:SSRS Expression - #Error in einem offensichtlich richtigen Ausdruck
=IIF(
Fields!CUT.Value.ToString().Length > 1
,IIF(
Fields!CUT.Value.ToString().Contains(","),
Fields!CUT.Value.ToString().Substring(0, Fields!CUT.Value.ToString().IndexOf(",")),
Fields!CUT.Value.ToString()
)
,""
)
Übersetzung:
Wenn das Feld ein ,
enthält, Geben Sie mir die substring
des Feldes von der ersten Position bis zum ,
. Wenn das Feld ,
nicht enthält, hol mir einfach das gesamte Feld.
Probelm:
Ich bekomme eine #Error
in allen Seiten, auf denen es kein Komma ist. Wenn es einen COMMA gibt, funktioniert es wie erwartet. Eines der Felder ist der Wert 4
. In einem anderen Szenario lautet der Wert 17/64" Corrugated
. Ich bekomme einen Fehler für beide.
Was ich habe versucht:
Ich habe ein paar verschiedene Ansätze versucht:
Gebrauchte
LIKE
stattContains
=IIF( IsNothing(Fields!CUT.Value) ,"" ,IIF( Fields!CUT.Value LIKE "*,*", Mid(Fields!CUT.Value, InStr(Fields!CUT.Value, ",") + 1, (LEN(Fields!CUT.Value) - InStr(Fields!CUT.Value, ",") - 1)) Fields!CUT.Value ) )
ich ein neues Feld hinzugefügt, um meine
dataset
, das,
durchXXXX
ersetzt. Ich dachte, vielleicht kann SSRS nicht verstehen, dass ich über einen,
als Teil der Zeichenfolge spreche. Und dann änderte die Abfrage, um zu sehen, ob darin einXXXX
drin ist. hat immer noch die gleiche#Error
die
.data
Datei löschen, um das Projekt zu reinigen, und das Projekt wieder aufgebaut. Denn das ist offensichtlich nicht inkorrekt. Also dachte ich, dass es sich vielleicht nicht um die neueste Version des Berichts handelt.
Nichts scheint es zu tun! Ich bin wirklich kurz davor, etwas Schlechtes zu tun! Dieses Ding macht mich wahnsinnig.
Fragen:
- Wer etwas falsch mit entweder meiner Ausdrücke sehen?
- Gibt es einen besseren Weg zu dem, was ich erreichen möchte? Wenn es eine
,
gibt, gib mir alles vor die,
. Wenn nicht, gib mir alles.
Edit 1:
bemerkenswert, dass in einem anderen Feld, ich etwas sehr ähnlich wie diese tue:
IIF(
IsNothing(Fields!CUT.Value)
,""
,IIF(
Fields!CUT.Value LIKE "*,*"
," | Length: " & Mid(Fields!CUT.Value, InStr(Fields!CUT.Value, ",") + 1, (LEN(Fields!CUT.Value) - InStr(Fields!CUT.Value, ",") - 1))
,""
)
)
Was dies tut, ist, wenn es eine ist ,
in das gleiche Feld, erhalten Sie mir alles nach ,
und fügen Sie es an | Length:
. Wenn es keine ,
gibt, zeigen Sie einfach eine leere Stelle ""
. Das funktioniert ganz gut. In Situationen, wo es eine ,
gibt und wo es keine ,
gibt.Also habe ich festgestellt, dass Microsoft SSRS verwendet, um mich verrückt zu machen.
SSRS alle Teile des 'IIF' wertet unabhängig davon, ob die erste Aussage wahr oder falsch ist, so dass Ihr Problem am meisten liegt wahrscheinlich in Ihrem wahren Abschnitt:' Felder CUT! .Value.ToString(). Substring (0, Felder! CUT.Value.ToString(). IndexOf (",")) '. Wenn kein Komma vorhanden ist, kann dieser Ausdruck die Position des Kommas nicht finden. Aber ich bin mir nicht sicher, wie sich die 'IndexOf'-Funktion genau verhält, und ich habe nicht die Mittel, sie im Moment zu testen, also ist das nur ein Kommentar. –