| |
VB.NET - Fortgeschrittenewieder 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. | |
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. | |
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 | |
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" | |
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. | |
| 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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats März 2024 Dieter OtterUTF-8 Konvertierung von Dateien und StringsVB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|
|
|
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
|
|