Hallo @All,
ich habe zwei (Mehrfach)-Felder und will wissen, ob in beiden Feldern die gleiche Anzahl von Einträgen enthalten ist.
Mit
If Ubound(doc.Feld1) <> Ubound(doc.Feld2) Then
'tu was
End If
funktioniert das auch.
Wenn aber im Feld1 nur "ein" Wert enthalten ist, und in Feld2 "kein" Wert enthalten ist, vergleiche ich immernoch 0 mit 0. (Ich hoffe, ich habe mich verständlich ausgedrückt.)
Wie kann ich erreichen, dass Ubound(Feld1) den Wert "1" annimmt, wenn "ein" Element enthalten ist, und Ubound(Feld1) den Wert "0" annimmt, wenn "kein" Element enthalten ist?
Gruß
Stefan
Danke @Alle
ich machs jetzt so:
If doc.Feld1(0) <> "" And doc.Feld2(0) <> "" Then
If Ubound(doc.Feld1) <> Ubound(doc.Feld2) Then
Tu was
End If
Else
If doc.Feld1(0) = "" And doc.Feld2(0) <> "" Then
Tu was
End If
If doc.Feld1(0) <> "" And doc.Feld2 = "" Then
Tu was
End If
End If
Ich hatt mir vorgestellt, dass es einfacher geht - aber so krieg ich was ich will.
Gruß
Stefan
Ich denke, das ist noch zu einfach gedacht.
Zuallererst: Du arbeitest da nicht mit Feldern (das sind die Dinger im Frontend im Gestaltungselement "Maske"), sondern mit Items. Ein himmelweiter Unterschied ... Wärst Du mal gerade in Gravenbruch auf der SoftSphere (http://soft-sphere.de/) gewesen - nicht nur ich habe mich da ausführlich darüber ausgelassen - mit einigen "A-ha-Effekten" bei manchen Zuhörern ;)
Weiterhin musst Du ja postulieren, was für Dich überhaupt "leer" bedeutet. Wenn es keinerlei Leerstrings geben darf, ist es einfach. Wenn ein Ein-Element-Array keinen Leerstring enthalten darf, woanders aber drinstecken darf, funktioniert Dein Vorgehen nicht mehr. Ein Vorschlag (aber noch nicht der Weisheit letzter Schluss!!) wäre dann:
On Error Goto ErrorRoutine
If Ubound (doc.Feld1) <> Ubound (doc.Feld2) Then
Messagebox "Different arrays"
Else
If Ubound (doc.Feld1) + Ubound (doc.Feld2) = 0 Then
If Len (doc.Feld1 (0)) + Len (doc.Feld2 (0)) = 0 Then
Messagebox "Both arrays are empty"
Else
If (Len (doc.Feld1 (0)) + Len (doc.Feld2 (0)) = Len (doc.Feld1 (0))) Or (Len (doc.Feld1 (0)) + Len (doc.Feld2 (0)) = Len (doc.Feld2 (0))) Then
Messagebox "One array is empty"
Else
Messagebox "Equal arrays"
End If
End If
Else
Messagebox "Equal arrays"
End If
End If
Eine "einfache Lösung" kann es in diesem Zusammenhang auch gar nicht geben - das ist der Preis, den Du für den ansonsten mehr als komfortablen Umgang mit Items, wie Du ihn schon nutzt, bezahlen musst. Und die paar Zeilen sind ja nun auch nicht der Rede wert (ausgefeilt gehören sie dann in eine Script Library, denn sowas braucht man immer wieder!).
HTH,
Bernhard