Benutzer mit den meisten Antworten
"Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat."

Frage
-
Hallo, ich habe in kleines Problem. Ich frage in einer Datenbank einen Wert ab. Wenn der Wert $null ist, möchte ich gerne einen Wert schreiben. Wenn ich das Ergebnis der Abfrage in eine var schreiben möchte, dann erhalte ich die Meldung die im Titel steht.
Wie bekomme ich es hin, eine Abfrage zu erstellen mit dem Wissen das es auch $null sein kann?
Vielen Dank für eure Hilfe.
Norbert
IT Berater
Antworten
-
Mit Code könnte man tatsächlich mehr sagen. Aber prinzipiell: Variablen dürfen $null sein. Jedoch: $null hat keine Methoden. Es gibt kein $null.ToString() oder ähnliches, das ist einfach nicht definiert.
Daher musst du, wenn eine Variable eine Methode ausführen soll, immer sicherstellen, dass sie nicht $null ist. Entweder, weil es gar nicht anders geht (dann ist es einfach). Oder indem du vorher prüfst, ob sie $null ist und dann die Methode nicht ausführst.
Merke dir also generell: Nach einer Variable, die $null sein kann, darf nie ein Punkt stehen.
$a = $null, 23 | get-Random if($a -ne $null){$a.ToString("0.0")}
else{Write-Host "Variable a ist null"}
Viele Grüße
Christoph
- Bearbeitet hpotsirhc Dienstag, 13. Juni 2017 13:55
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 19. Juni 2017 17:15
-
Mit Code könnte man tatsächlich mehr sagen. Aber prinzipiell: Variablen dürfen $null sein. Jedoch: $null hat keine Methoden. Es gibt kein $null.ToString() oder ähnliches, das ist einfach nicht definiert.
Daher musst du, wenn eine Variable eine Methode ausführen soll, immer sicherstellen, dass sie nicht $null ist. Entweder, weil es gar nicht anders geht (dann ist es einfach). Oder indem du vorher prüfst, ob sie $null ist und dann die Methode nicht ausführst.
Genau. Aber da Du von Datenbanken sprachst, wirst Du nun mit noch mehr Info abgefüllt: Wenn das Datenbankfeld den Wert NULL hat, wird es in PowerShell in [DBNull] übersetzt. Und [DBNull]::Value ist nicht $null! Es könnte also der dritte Fall zum Behandeln werden, wenn NULL-Werte in Deiner Datenbank zugelassen sind...
Merke dir also generell: Nach einer Variable, die $null sein kann, darf nie ein Punkt stehen.
<korinthenkack>Doch, $null.Length funktioniert und gibt - oh Wunder! - 0 zurück ;-)</korinthenkack>
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 19. Juni 2017 17:15
Alle Antworten
-
Der Code wäre sehr hilfreich. :)
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Code Manager v5: Link
(u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort. -
Mit Code könnte man tatsächlich mehr sagen. Aber prinzipiell: Variablen dürfen $null sein. Jedoch: $null hat keine Methoden. Es gibt kein $null.ToString() oder ähnliches, das ist einfach nicht definiert.
Daher musst du, wenn eine Variable eine Methode ausführen soll, immer sicherstellen, dass sie nicht $null ist. Entweder, weil es gar nicht anders geht (dann ist es einfach). Oder indem du vorher prüfst, ob sie $null ist und dann die Methode nicht ausführst.
Merke dir also generell: Nach einer Variable, die $null sein kann, darf nie ein Punkt stehen.
$a = $null, 23 | get-Random if($a -ne $null){$a.ToString("0.0")}
else{Write-Host "Variable a ist null"}
Viele Grüße
Christoph
- Bearbeitet hpotsirhc Dienstag, 13. Juni 2017 13:55
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 19. Juni 2017 17:15
-
Mit Code könnte man tatsächlich mehr sagen. Aber prinzipiell: Variablen dürfen $null sein. Jedoch: $null hat keine Methoden. Es gibt kein $null.ToString() oder ähnliches, das ist einfach nicht definiert.
Daher musst du, wenn eine Variable eine Methode ausführen soll, immer sicherstellen, dass sie nicht $null ist. Entweder, weil es gar nicht anders geht (dann ist es einfach). Oder indem du vorher prüfst, ob sie $null ist und dann die Methode nicht ausführst.
Genau. Aber da Du von Datenbanken sprachst, wirst Du nun mit noch mehr Info abgefüllt: Wenn das Datenbankfeld den Wert NULL hat, wird es in PowerShell in [DBNull] übersetzt. Und [DBNull]::Value ist nicht $null! Es könnte also der dritte Fall zum Behandeln werden, wenn NULL-Werte in Deiner Datenbank zugelassen sind...
Merke dir also generell: Nach einer Variable, die $null sein kann, darf nie ein Punkt stehen.
<korinthenkack>Doch, $null.Length funktioniert und gibt - oh Wunder! - 0 zurück ;-)</korinthenkack>
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 19. Juni 2017 17:15