h41msh1c0r
Goto Top

Powershell CellFormatting

Moin,

kleine Verständnisfrage:

Ein Block im CellFormatting des Datagridview:
		if (($_.ColumnIndex -eq 19) -and ($_.Value -ne $null)){
    		    if ([int]($_.Value) -le $global:tableoption.Rows[5][1])
			    {
				    $_.CellStyle.BackColor = 'Orange'  
				    $_.CellStyle.ForeColor = 'white'  
			    }else{
   	                $_.CellStyle.BackColor = 'Green'  
				    $_.CellStyle.ForeColor = 'white'  
                }
            }

Die äußere If Schleife wird einfach nur ignoriert und er liefert mir:

Der Wert "" kann nicht in den Typ "System.Int32" konvertiert werden. Fehler: "Ein   
Objekt kann nicht von DBNull in andere Typen umgewandelt werden."  
In Zeile:1000 Zeichen:15

Wenn die Zelle mal leer sein sollte.

Er sollte meinem Verständnis nach aber garnicht zu dem Fehler kommen da die äußere If Abfrage doch mit "-and" verknüpft nie erfüllt ist bei einer leeren Zelle oder?

VG

Content-Key: 360557

Url: https://administrator.de/contentid/360557

Printed on: April 26, 2024 at 22:04 o'clock

Mitglied: 135111
Solution 135111 Jan 10, 2018 updated at 10:33:07 (UTC)
Goto Top
$NULL ist nicht gleich DBNULL außerdem wert sagt das der Wert der dort steht zu einem Integer umgewandelt werden kann? Also besser mit [int32]::TryParse() arbeiten um zu prüfen ob die Werte in der Zelle überhaupt zu einem Integer gewandelt werden können.
Member: colinardo
Solution colinardo Jan 10, 2018 updated at 12:03:35 (UTC)
Goto Top
Servus.
@135111 hat recht, du solltest prüfen ob der Wert überhaupt in einen Integer wandelbar ist. Denn ist er leer oder hat sonstige ungültige Strings in sich schlägt die Konvertierung in einen Integer ja logischerweise fehl und das sagt die hier die Shell
# ...
[int]$wert = $null
if ([int]::TryParse($_.Value,[ref]$wert)){
  # nur hier mit weiteren Wert-Vergleichen weitermachen denn ansonsten ist die Zelle leer oder nicht in eine Zahl wandelbar......
}
# ...
Der Wertevergleich sollte dann natürlich innerhalb dieser IF-Abfrage mit der Pointer-Variablen $wert stattfinden in der der dann in [int] gewandelte Wert steht.

Grüße Uwe
Member: H41mSh1C0R
H41mSh1C0R Jan 10, 2018 at 12:07:53 (UTC)
Goto Top
Danke euch beiden. Dann Strick ich mal das Script um =). *Stricknadeln anspitz*

VG