Avatar billede jpi Mester
04. marts 2014 - 09:30 Der er 1 løsning

Manglende autogenereret ID fra db til dataset

Hej

Jeg har et problem med at oprette/gemme data til database.

Jeg har følgende kode (uddrag) og hver for sig virker de fint. Jeg kan indlæse data fra databasen redigere lave nye og gemme i databasen igen.
Men problemet opstår når jeg opretter en ny post, (evt. gemmer i databasen), derefter redigerer den og så gemmer igen. Så kommer der flere poster i databasen med samme data.
Jeg har fundet ud af at problemet er at jeg ikke får opdateret det autogenererede ID som databasen indeholder til datasettet. derfor kan datasettet ikke finde den rigtige post at gemme det i i databasen.

Databasen er en MS Access database.

Hvordan får jeg løst mit problem ?
Meget gerne med kode eksempel.

mvh
jpi76

------------------------------------------------------------
'Forbindelse til database + indlæsning af data til DataAdapter/Dataset
_dbcn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & defaultDB & ";")
_dbcn.Open()
_dbcn = dbConn
_dbds = New DataSet
_dbda = New OleDbDataAdapter("SELECT * FROM T_DATA WHERE NOT DELETED", _dbcn)
_dbcb = New OleDbCommandBuilder(_dbda)

Dim dtmUsers As New DataTableMapping("Table", "T_Data")

_dbda.TableMappings.Add(dtmUsers)
_dbda.FillSchema(_dbds, SchemaType.Source, "T_Data")
_dbda.Fill(_dbds, "T_Data")

_dbcn.Close()

------------------------------------------------------------
'Gemmer ny record i dataset
Dim dr As DataRow = _dbds.Tables("T_Data").NewRow
dr("NAME") = Name
dr("POINTTYPE") = PointType
_dbds.Tables("T_Data").Rows.Add(dr)

------------------------------------------------------------
'Opdaterer record i dataset
Dim dr As DataRow = _dbds.Tables("T_Data").Find(ID)
dr("NAME") = Name
dr("POINTTYPE") = PointType

------------------------------------------------------------
'Gemmer data til database
Dim changesDS As DataSet

changesDS = _dbds.GetChanges()

If Not IsNothing(changesDS) Then
    _dbcn.Open()

    _dbda.Update(changesDS)

    _dbds.AcceptChanges()
    _dbcn.Close()
End If
Avatar billede jpi Mester
03. maj 2014 - 00:19 #1
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester