pcfjkg
Goto Top

Vb.NET dbnull als NULL in SQL-Tabelle speichern mit Dataadapter

In der Tabelle T_Kunden gibt es Spalten mit dbNUILL.VALUE (soll so sein) und diese sollen auch als NULL in der entsprechenden Spalte einer SQL-Tabelle gespeichert werden. Aus dbnull.VALUE wird beim Speichern (genauer über UPDATE) aber immer 0 statt NULL im SQL-SERVER. Wie ist vorzugehen, um das Problem zu lösen ?

Dim ocmB As New SqlCommandBuilder
If Me.DS_BEN.Tables.Contains("T_Kunden") Then
ocmB.DataAdapter = Me.DA_Kunden
Me.DA_Kunden.Update(Me.DS_BEN, ("T_Kunden"))
End If
ocmB.Dispose()

Die Tabelle in VB.NET wird erzeugt aus der Struktur der SQL-Tabelle:

CommandText = "SELECT ... FROM T_Kunden ...
DA_Kunden.Fill(F.DS_BEN, TabBez)

Vielen Dank
PCFJKG

Content-ID: 363050

Url: https://administrator.de/contentid/363050

Ausgedruckt am: 24.11.2024 um 04:11 Uhr

emeriks
emeriks 31.01.2018 um 08:55:14 Uhr
Goto Top
Hi,
wie sieht denn Dein Code für das Update aus?

E.
PCFJKG
PCFJKG 31.01.2018 um 09:13:24 Uhr
Goto Top
Hallo emeriks, das update erfolgt über den Dataadapter DA_Kunden, er ist Teil des Datasets DS_BEN.
--> DA_Kunden.Update(Me.DS_BEN, ("T_Kunden"))
SlainteMhath
SlainteMhath 31.01.2018 um 09:30:20 Uhr
Goto Top
Moin,

kannst du mal das Schema der Tabelle posten?

lg,
Slainte
PCFJKG
PCFJKG 31.01.2018 um 09:46:15 Uhr
Goto Top
Hi SlainteMhath,
die Tabelle ist wie folgt strukturiert:

CREATE TABLE [dbo].[T_Kunden](
[Geändert] [bit] NULL,
[NName] [varchar](100) NULL,
[VName] [varchar](100) NULL,
[StrNr] [varchar](100) NULL,
[Plz] [varchar](5) NULL,
[Ort] [varchar](100) NULL,
[Preis] [decimal](18, 2) NULL,
[Bank] [varchar](66) NULL,
[IBAN] [varchar](34) NULL,
[BIC] [varchar](11) NULL,
[MandatsReferenz] [varchar](26) NULL,
[DVertragBeginn] [datetime] NULL,
[DVertragEnde] [datetime] NULL CONSTRAINT [DF_T_Kunden_DVertragEnde] DEFAULT (NULL),
[VertragNrObjekt] [varchar](16) NULL,
[WohnungNr] [varchar](16) NULL,
[KundeNr] [varchar](3) NULL,
[Einzelvertrag] [bit] NULL CONSTRAINT [DF_T_Kunden_Einzelvertrag] DEFAULT (NULL),
[DLSBeginn] [datetime] NULL,
[DLSEnde] [datetime] NULL,
[Intervall] [varchar](16) NULL,
[Bem] [varchar](166) NULL,
[ID] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_T_Kunden] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Explizit geht es um die Spalte [Einzelvertrag]
SlainteMhath
SlainteMhath 31.01.2018 um 11:15:25 Uhr
Goto Top
Sieht saubar aus. Was machst du zwischendurch mit dem DataSet? Wird das an ein Control gebunden das aus dem NULL eine 0 macht?
PCFJKG
PCFJKG 31.01.2018 um 12:09:57 Uhr
Goto Top
Das Dataset (genauer die Tabelle des Dataadapters im Dataset) wird eine Source für ein Datagridview. Bei Click auf eine Zelle der Spalte ("Einzelvertrag") des DGV wird

erstens die Zelle dieses DGV
Me.DGV_Kunden.Rows(e.RowIndex).Cells("EinzelVertrag").Value = DBNull.Value

und zweitens die entsprechende row
row As DataRow In Me.DS_BEN.Tables("T_Kunden").Rows()
row("EinzelVertrag") = DBNull.Value

gesetzt. Dann folgt später das Speichern über den SqlCommandBuilder wie oben dargestellt.

MfG
PCFJKG
emeriks
emeriks 31.01.2018 aktualisiert um 13:15:49 Uhr
Goto Top
Hast Du schon mal versucht, statt DBNULL Nothing zu nehmen? Das ist nicht das Gleiche, ich weiß, aber .Net ist da manchmal etwas komisch ...
PCFJKG
PCFJKG 31.01.2018 um 14:02:10 Uhr
Goto Top
Habe ich, gleiches Ergebnis. Es steht auch dbNULL in der Tabelle (habe ich geprüft). Müsste also an der Übergabe an SQL liegen .

MfG
PCFJKG