none
SSIS Skriptkomponente - Transformation NULL-Werte RRS feed

  • Frage

  • Hallo,

    ich versuche eine Skriptkomponente in einem Datenfluss zur Transformation zu nutzen. Die Eingabespalten können NULL-Werte enthalten.

    über eine IF-Bedinung habe ich versucht NULL-Werte bei den Berechnungen auszuschließen:

    ------------------------------------------------------------------------------------

    public override void Eingabe0_ProcessInputRow(Eingabe0Buffer Row)

    {

    if (Row.Spalte1 != null && Row.Spalte2 != null)

    {...Berechnungen...}

    }

    ------------------------------------------------------------------------------------

    Trotzdem erhalte ich die Fehlermeldung, dass eine Spalte NULL-Werte enthält. Wie kann ich die NULL-Werte im Skript rausfiltern oder irgendwie das ganze zum Laufen bringen??

    Im Pre-execute??

    Fragen über Fragen.

    Vielen Dank im Voraus!!!!!

    D

    Donnerstag, 20. Januar 2011 08:13

Antworten

  • Siehe auch MSDN ScriptBuffer.IsNull Method => Examples, dort steht der autogenerierte Code für BufferWrapper mit der _IsNull Property als Beispiel.
    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Donnerstag, 20. Januar 2011 12:28
  • Hallo,

    das null aus C# ist was ganz anderes als ein NULL Wert in SQL. Mit null kannst Du nur prüfen, ob ein Objekt instanziiert ist oder nicht. In C# wäre das Äquivalent DBNull, aber auch das brauchst Du nicht verwenden. Der Code-Generator erzeugt auch ein Property "Spalte1_IsNull", das Du zur Prüfung verwenden kannst:

    public override void Eingabe0_ProcessInputRow(Eingabe0Buffer Row)

    {

        while (Row.NextRow())

        {

            if (!Row.Spalte0_IsNull)

            {

                Row.Spalte0 += 1;

            }

        }

    }

     


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    • Bearbeitet Olaf HelperMVP Donnerstag, 20. Januar 2011 11:57 Korrektur NextRow
    • Als Antwort markiert Andrei Talmaciu Montag, 24. Januar 2011 12:30
    Donnerstag, 20. Januar 2011 11:45

Alle Antworten

  • Hallo,

    das null aus C# ist was ganz anderes als ein NULL Wert in SQL. Mit null kannst Du nur prüfen, ob ein Objekt instanziiert ist oder nicht. In C# wäre das Äquivalent DBNull, aber auch das brauchst Du nicht verwenden. Der Code-Generator erzeugt auch ein Property "Spalte1_IsNull", das Du zur Prüfung verwenden kannst:

    public override void Eingabe0_ProcessInputRow(Eingabe0Buffer Row)

    {

        while (Row.NextRow())

        {

            if (!Row.Spalte0_IsNull)

            {

                Row.Spalte0 += 1;

            }

        }

    }

     


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    • Bearbeitet Olaf HelperMVP Donnerstag, 20. Januar 2011 11:57 Korrektur NextRow
    • Als Antwort markiert Andrei Talmaciu Montag, 24. Januar 2011 12:30
    Donnerstag, 20. Januar 2011 11:45
  • Siehe auch MSDN ScriptBuffer.IsNull Method => Examples, dort steht der autogenerierte Code für BufferWrapper mit der _IsNull Property als Beispiel.
    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Donnerstag, 20. Januar 2011 12:28
  • DANKE!!!!!

     

    Brauchte die Hilfe zum Einstieg. Und sorry für den doppelten Eintrag. Hatte den erste abgeschickt und gedacht, der wäre im Forum nicht aufgeführt.

     

    D

    Donnerstag, 20. Januar 2011 12:51