SQL abfrage ScalarQuery mit NULL - steh grad voll auf'm Schlauch...

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von michl75.

    SQL abfrage ScalarQuery mit NULL - steh grad voll auf'm Schlauch...

    Hallo,

    ich stehe grad voll auf'm Schlauch ... :S :S

    Könnt Ihr mir bitte mal kurze Hilfestellung geben:

    Habe typisiertes Dataset und eine SQL (SQL Express) Abfrage die so ausschaut:

    SQL-Abfrage

    1. SELECT COUNT(*) AS Expr1
    2. FROM buchungspositionen
    3. GROUP BY vp_rid
    4. HAVING (vp_rid = @Param1)


    Diese Abfrage habe ich dann in meinem Code eingebunden - so:

    VB.NET-Quellcode

    1. Dim _kontrollPosMenge As Integer = CType(BuchungspositionenTableAdapter.ScalarQuery_AnzahlPositionen(_rid), Integer)


    Beim Ausführen kackt er dann ab, weil die SQL Abfrage NULL zurück gibt, es aber 0 zurückgeben musss... Das ist mir klar, dass er 0 braucht und nicht NULL... sonst wird das nix mit dem Integer.


    Aber mir fällt es nicht ein, wo ich das NULL zu 0 mache...

    Bitte um kurze Unterstützung :)

    Danke vorab ...

    Gruß
    Michl
    Hab mit der Funktion ScalarQuery noch nicht gearbeitet. Aber abfragen kannst es zB so:

    VB.NET-Quellcode

    1. Dim _kontrollPosMenge As Integer = CType(If(IsDbNull(BuchungspositionenTableAdapter.ScalarQuery_AnzahlPositionen(_rid)), 0, BuchungspositionenTableAdapter.ScalarQuery_AnzahlPositionen(_rid)), Integer)


    Müsste so funzen.

    lg

    EDIT: da es im VisualBasic Namespace ist und der nicht so gerne gesehen wird ginge es scheinbar auch mit System.DBNull.Value zu prüfen

    VB.NET-Quellcode

    1. Dim _kontrollPosMenge As Integer = CType(If(BuchungspositionenTableAdapter.ScalarQuery_AnzahlPositionen(_rid) is DBNull.Value, 0, BuchungspositionenTableAdapter.ScalarQuery_AnzahlPositionen(_rid)), Integer)

    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Having verwendet man eigentlich um Gruppierte Daten nochmals zu selektieren.
    Obwohl dies eigentlich eher sind macht bei den Aggregaten Ergebnissen (Count, Sum, ...) und nicht bei einem normalen Feld. Dies würde auch ins Where passen

    Mehr Sinn hätte es zB

    SQL-Abfrage

    1. SELECT COUNT(*) AS Expr1
    2. FROM buchungspositionen
    3. GROUP BY vp_rid
    4. HAVING (Expr1 > 1)


    Hier würden nur Daten angezeigt werden bei denen das Count Ergebnis größer 1 ist.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten