none
"Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat." RRS feed

  • 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

    Dienstag, 13. Juni 2017 11:34

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


    Dienstag, 13. Juni 2017 13:55
  • 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

    Dienstag, 13. Juni 2017 14:06

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.

    Dienstag, 13. Juni 2017 11:47
    Moderator
  • 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


    Dienstag, 13. Juni 2017 13:55
  • 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

    Dienstag, 13. Juni 2017 14:06