vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
wieder DBNULL 
Autor: ERBRU
Datum: 19.02.19 11:25

Habe eine ungebundene Datagridview,
diese soll mit Daten gefüllt werden aus einer Tabelle

nun habe ich in meiner Abfrage das Problem mit DBNULL, es ist möglich das hier und dort kein Wert enthalten ist, wird von Zeit zu Zeit gepflegt.

wie kann ich das trotzdem Umgehen? oder wie muss ich das abändern ?

betroffene Felder aus Datentabelle:
'Datenfeld: Stellplatz = String
'Datenfeld: Fach = String
'Datenfeld: Artikelbezeichnung = String
'Datenfeld: Artikelnummer = String

dieser Ansatz AndAlso Not String.IsNullOrEmpty(Eintrag.Stellplatz) hat nichts gebracht !

  Private Sub dgv_LV_Inventur_Stellplatz_Fach_Artikel_Update()
        dgv_LV_Inventur_Stellplatz_Fach_Artikel.Rows.Clear()
 
        'In dieser Abfrage habe ich Probleme mit DBNULL
        'Datenfeld: Stellplatz
        'Datenfeld: Fach
        'Datenfeld: Artikelbezeichnung
        'Datenfeld: Artikelnummer
        '---------------------------------
        'wie kann ich das hier abfangen ?
        '---------------------------------
 
        Dim ue As LagerlisteRow
        Dim intLagerID As Integer = CInt(dgv_LV_Inventur_Lager.SelectedRows( _
          0).Cells("col_Inventur_L_LagerID").Value)
 
        Dim Abfrage_Stellplatz = From Eintrag In LagerlisteDB.Lagerliste
                      Where Eintrag.RowState <> DataRowState.Deleted _
                      AndAlso Not String.IsNullOrEmpty(Eintrag.Stellplatz) _
                      AndAlso Eintrag.USERID = intLagerID
                      Order By Eintrag.Stellplatz
                      Group By Art = Eintrag.USERID Into Stellplatz_Gruppe = _
                        Group
 
        For Each Stellplatz_Reihe In Abfrage_Stellplatz
 
            Dim Abfrage_Fach = From Eintrag In _
              Stellplatz_Reihe.Stellplatz_Gruppe
                               Order By Eintrag.Fach
                               Group By Art = Eintrag.USERID Into Fach_Gruppe = _
                                 Group
 
            For Each Fach_Reihe In Abfrage_Fach
 
                Dim Abfrage_Artikel = From Eintrag In Fach_Reihe.Fach_Gruppe
                                      Order By Eintrag.Artikelbezeichnung Order _
                                        By Eintrag.Artikelnummer
                                      Group By Art = Eintrag.USERID Into _
                                      Artikel_Gruppe = Group
 
                For Each Artikel_Reihe In Abfrage_Artikel
                    ue = Artikel_Reihe.Artikel_Gruppe.First
 
                    dgv_LV_Inventur_Stellplatz_Fach_Artikel.Rows.Add( _
                      {ue.Stellplatz, ue.Fach, ue.Artikelbezeichnung, _
                      ue.Artikelnummer, ue.MAXIMO, _
                      Artikel_Reihe.Artikel_Gruppe.Count})
                Next
            Next
        Next
    End Sub
 


Beitrag wurde zuletzt am 19.02.19 um 11:27:15 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: wieder DBNULL 
Autor: Souffleurlos
Datum: 19.02.19 16:21

Hallo ,

baue in deine Abfrage eine Funktion ein die den Resultsetinhalt dahingehend prüft, ob das Feld Null ist. IST ES NULL, dann tue dies ist es nicht null, dann tue das.
Da ich nicht weiß, was für eine Datenbank du verwendest, kann ich dir nicht weiterhelfen. In Oracle jedenfalls heißt diese Funktion NVL bzw. NVL2.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: wieder DBNULL 
Autor: ERBRU
Datum: 19.02.19 18:32

OK, verstehe ich verwende eine Accsess DB

zuerst bestücke ich eine DGV

 Private Sub dgv_LV_Inventur_Lager_Update()
        dgv_LV_Inventur_Lager.Rows.Clear()
 
        Dim ue As LagerlisteRow
 
        Dim Abfrage_Lager = From Eintrag In LagerlisteDB.Lagerliste
                           Where Eintrag.RowState <> DataRowState.Deleted
                           Order By Eintrag.Standort
                           Group By Art = Eintrag.USERID Into Lager_Gruppe = _
                             Group
 
        For Each Lager_Reihe In Abfrage_Lager
            ue = Lager_Reihe.Lager_Gruppe.First
            'Gesamtwert = Lager_Reihe.Lager_Gruppe.Sum(Function(f) 
            ' f.Einzelpreis)
            dgv_LV_Inventur_Lager.Rows.Add({ue.Standort, ue.USERID, _
              Lager_Reihe.Lager_Gruppe.Count})
        Next
    End Sub
im SelectionChanged Ereignis der ersten DGV soll er mir eine Liste ausgeben.
ich erhalte leider nur eine Datenzeile

 Private Sub dgv_LV_Inventur_Stellplatz_Fach_Artikel_Update()
        dgv_LV_Inventur_Stellplatz_Fach_Artikel.Rows.Clear()
 
        'In dieser Abfrage habe ich Probleme mit DBNULL
        'Datenfeld: Stellplatz
        'Datenfeld: Fach
        'Datenfeld: Artikelbezeichnung
        'Datenfeld: Artikelnummer
        '---------------------------------
        'wie kann ich das hier abfangen ?
        '---------------------------------
 
        Dim ue As LagerlisteRow
        Dim intLagerID As Integer = CInt(dgv_LV_Inventur_Lager.SelectedRows( _
          0).Cells("col_Inventur_L_LagerID").Value)
 
        Dim Abfrage_Stellplatz = From Eintrag In LagerlisteDB.Lagerliste
                      Where Eintrag.RowState <> DataRowState.Deleted AndAlso _
                      (Eintrag.IsStellplatzNull = False) AndAlso _
                      (Eintrag.IsFachNull = False) AndAlso _
                      (Eintrag.IsArtikelbezeichnungNull = False) AndAlso _
                      (Eintrag.IsArtikelnummerNull = False) AndAlso _
                      (Eintrag.IsMAXIMONull = False) AndAlso _
                               Eintrag.USERID = intLagerID
                      Order By Eintrag.Stellplatz
                      Group By Art = Eintrag.Standort Into Stellplatz_Gruppe = _
                        Group
 
        For Each Stellplatz_Reihe In Abfrage_Stellplatz
 
            Dim Abfrage_Fach = From Eintrag In _
              Stellplatz_Reihe.Stellplatz_Gruppe
                               Order By Eintrag.Fach
                               Group By Art = Eintrag.Standort Into Fach_Gruppe _
                                 = Group
 
            For Each Fach_Reihe In Abfrage_Fach
 
                Dim Abfrage_Artikel = From Eintrag In Fach_Reihe.Fach_Gruppe
                                      Order By Eintrag.Artikelbezeichnung Order _
                                        By Eintrag.Artikelnummer
                                      Group By Art = Eintrag.Standort Into _
                                      Artikel_Gruppe = Group
 
                For Each Artikel_Reihe In Abfrage_Artikel
                    ue = Artikel_Reihe.Artikel_Gruppe.First
 
                    dgv_LV_Inventur_Stellplatz_Fach_Artikel.Rows.Add( _
                      {ue.Stellplatz, ue.Fach, ue.Artikelbezeichnung, _
                      ue.Artikelnummer, ue.MAXIMO, _
                      Artikel_Reihe.Artikel_Gruppe.Count})
                Next
            Next
        Next
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: wieder DBNULL 
Autor: Manfred X
Datum: 19.02.19 19:34

https://www.vbarchiv.net/forum/read.php?f=10&t=75507&i=75514
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: wieder DBNULL 
Autor: ERBRU
Datum: 19.02.19 20:38

Danke Manfred X,

genau habe da ja schon viel mit dir (von dir) bekommen.

zum Beispiel, das geht auch!


 'Abfrage der Tabelle "Lagerliste" im DataSet
        Dim Q = From row As DataRow In LagerlisteDB.Lagerliste
                Let Maximo = row.Field(Of String)("Maximo")
            Where Not String.IsNullOrEmpty(Maximo)
            Select Maximo, Standort = row.Field(Of String)("Standort"), _
            Artikelbezeichnung = row.Field(Of String)("Artikelbezeichnung"), _
            Artikelnummer = row.Field(Of String)("Artikelnummer")
            Group By Maximo Into Anzahl = Count(), Artikel = Group
            Order By Anzahl Descending
 
        AnzahlenBindingSource.DataSource = Q
        LagerlisteAusgabeBindingSource.DataSource = AnzahlenBindingSource
        LagerlisteAusgabeBindingSource.DataMember = "Artikel"
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: wieder DBNULL 
Autor: Manfred X
Datum: 19.02.19 21:35

Prinzipiell sollte man bei Verwendung eines Frameworks STETS
für jede Funktion die dort vorgesehene Klasse/Klassenmethode nutzen.

Alles andere führt - je nach Gegebenheit - zu ineffizienten,
fehleranfälligen oder unnötig komplizierten Codezeilen.

Der Code mag im gewünschten Sinn funktionieren, weil DBNull.Value
bei Zuweisung auf eine String-Variable implizit in NOTHING umgewandelt
wird - falls die übrigen Stringspalten der Abfrage keine fehlenden Werte
aufweisen. Empfehlen würde ich so einen Code nicht.

Ich zitiere in diesem Zusammenhang sinngemäß die DBNull-Dokumentation:

Do not confuse the notion of Nothing (VB) with a DBNull object.
Nothing means the absence of a reference to an object or
the initalizing Value of a structure.
DBNull represents an uninitialized variant or nonexistent database column.

Beitrag wurde zuletzt am 19.02.19 um 21:45:05 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel