Powershell CellFormatting
Moin,
kleine Verständnisfrage:
Ein Block im CellFormatting des Datagridview:
Die äußere If Schleife wird einfach nur ignoriert und er liefert mir:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 360557
Url: https://administrator.de/forum/powershell-cellformatting-360557.html
Ausgedruckt am: 16.04.2025 um 10:04 Uhr
3 Kommentare
Neuester Kommentar

$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.
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
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
@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......
}
# ...
Grüße Uwe