Hallo ans Forum. Folgendes Problem, ich habe ein VB Skript für die Beschriftung eines Layers, von dem ich nur zum teil weiß, was es macht, aber es funktioniert.
Es sieht so aus:
Function FindLabel ( [Name] , [Laenge] , [Gefaelle] , [Profilhoehe] , [Sonderbauwerk] )
Dim mylabel
If (IsNull([Sonderbauwerk]) Or [Sonderbauwerk] = 1) Then
If Not IsNull([Name]) Then
mylabel = [Name] & vbNewLine
End If
If Not IsNull([Laenge]) Then
mylabel = mylabel & FormatNumber([Laenge] , 2) & "m "
End If
If Not IsNull([Profilhoehe]) Then
mylabel = mylabel & FormatNumber([Profilhoehe] , 2) & "m "
End If
If Not IsNull([Gefaelle] ) Then
mylabel = mylabel & FormatNumber([Gefaelle] , 2) & Chr(137)
End If
FindLabel = "<CLR red='255' green='0' blue='197'>" & mylabel & "</CLR>"
Else
FindLabel = "<CLR red='255' green='0' blue='0'>" & [Name] & "</CLR>"
End If
End Function
Ich weiß nicht genau, was das IF bewirkt oder nicht bewirkt. Trotzdem möchte ich die Beschriftung soweit umstellen, dass nur noch die Profilhoehe verwendet wird und wenn Profilhöhe ungleich Profilbreite, auch die Profilbreite. Das ganze ohne die ominöse If-Geschichte auf die Sonderbauwerke kaputt zu machen.
Kann mir jemand helfen?
Es sieht so aus:
Function FindLabel ( [Name] , [Laenge] , [Gefaelle] , [Profilhoehe] , [Sonderbauwerk] )
Dim mylabel
If (IsNull([Sonderbauwerk]) Or [Sonderbauwerk] = 1) Then
If Not IsNull([Name]) Then
mylabel = [Name] & vbNewLine
End If
If Not IsNull([Laenge]) Then
mylabel = mylabel & FormatNumber([Laenge] , 2) & "m "
End If
If Not IsNull([Profilhoehe]) Then
mylabel = mylabel & FormatNumber([Profilhoehe] , 2) & "m "
End If
If Not IsNull([Gefaelle] ) Then
mylabel = mylabel & FormatNumber([Gefaelle] , 2) & Chr(137)
End If
FindLabel = "<CLR red='255' green='0' blue='197'>" & mylabel & "</CLR>"
Else
FindLabel = "<CLR red='255' green='0' blue='0'>" & [Name] & "</CLR>"
End If
End Function
Ich weiß nicht genau, was das IF bewirkt oder nicht bewirkt. Trotzdem möchte ich die Beschriftung soweit umstellen, dass nur noch die Profilhoehe verwendet wird und wenn Profilhöhe ungleich Profilbreite, auch die Profilbreite. Das ganze ohne die ominöse If-Geschichte auf die Sonderbauwerke kaputt zu machen.
Kann mir jemand helfen?
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Maxilla am Do., 22.09.2011 - 14:13
Permalink"Wenn das Feld [Sonderbauwerk] leer ist oder eine 1 enthält, dann schreib mir (falls vorhanden) Name, Länge, Profilhöhe und Gefälle ins Label, und zwar in Rosa. Wenn im Feld [Sonderbauwerk] aber etwas anderes steht, schreib mir nur den Namen ins Label, und zwar in Rot."
Fragt sich jetzt: Was sollte im zweiten Fall in deinem gewünschten Label stehen, bei dem ja "nur noch die Profilhoehe verwendet wird und wenn Profilhöhe ungleich Profilbreite, auch die Profilbreite"?
Gespeichert von Kramp am Do., 22.09.2011 - 16:41
PermalinkFunction FindLabel ( [Profilhoehe] , [Profilbreite] , [Profiltyp] )
Dim mylabel
Select Case ([Profiltyp])
Case "1"
FindLabel = "<CLR red='255' green='0' blue='197'>" & "DN " & [Profilhoehe] & "m" & "</CLR>"
Case "2"
FindLabel = "<CLR red='255' green='0' blue='197'>" & "RG " & [Profilbreite] & "m" & chr(47) & [Profilhoehe] & "m" & "</CLR>"
Case "3"
FindLabel = "<CLR red='255' green='0' blue='197'>" & "Ei " & [Profilbreite] & "m" & chr(47) & [Profilhoehe] & "m" & "</CLR>"
End Select
End Function
Vielleicht noch jemand eine Idee wie ich den Part mit den Sonderbauwerken davor wieder einbauen kann?