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-Key: 363050

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

Printed on: April 16, 2024 at 21:04 o'clock

Member: emeriks
emeriks Jan 31, 2018 at 07:55:14 (UTC)
Goto Top
Hi,
wie sieht denn Dein Code für das Update aus?

E.
Member: PCFJKG
PCFJKG Jan 31, 2018 at 08:13:24 (UTC)
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"))
Member: SlainteMhath
SlainteMhath Jan 31, 2018 at 08:30:20 (UTC)
Goto Top
Moin,

kannst du mal das Schema der Tabelle posten?

lg,
Slainte
Member: PCFJKG
PCFJKG Jan 31, 2018 at 08:46:15 (UTC)
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]
Member: SlainteMhath
SlainteMhath Jan 31, 2018 at 10:15:25 (UTC)
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?
Member: PCFJKG
PCFJKG Jan 31, 2018 at 11:09:57 (UTC)
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
Member: emeriks
emeriks Jan 31, 2018 updated at 12:15:49 (UTC)
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 ...
Member: PCFJKG
PCFJKG Jan 31, 2018 at 13:02:10 (UTC)
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