Avatar billede bernhof Nybegynder
17. august 2005 - 21:11 Der er 1 løsning

AcceptChanges / RowUpdated

Hejsa.

Hvis jeg håndterer DataAdapter.RowUpdated hændelsen, og i denne forsøger at kalde AcceptChanges på den row, som netop er blevet opdateret af DataAdapter'en, så slår det ikke igennem på mit dataset. Se her:


  'Et sted i min forms kode køres følgende kode:
  '(dataadapteren ER sat op, og fungerer korrekt)
  Dim myTable As DataTable
  myTable = myDataset.Tables("Tabel1")
  myDataAdapter.Update(myTable)


'Et andet sted håndterer jeg så RowUpdated hændelsen, som
'kaldes for hver row der opdateres af DataAdapter.Update metoden:

Public Sub myDataAdapter_RowUpdated(ByVal sender As Object, ByVal e As SqlRowUpdatedEventArgs) Handles myDataAdapter.RowUpdated

  'dette kald har ingen effekt?
  e.Row.AcceptChanges()

  'derimod fungerer dette helt fint (der er egentlig tale om den samme row):
  myDataset.Tables("Tabel1").Rows(0).AcceptChanges()

End Sub


I ovenstående kode kan I se, at hvis jeg kalder AcceptChanges på e.Row, så sker der ikke noget, men hvis jeg kalder AcceptChanges på samme row, blot hvor jeg tilgår row'en gennem DataSet'et, så virker det fint.

Jeg prøvede i immediate vinduet at evaluere følgende udtryk:

  e.Row Is (yDataset.Tables("Tabel1").Rows(0)

... og det returnerede False. Det vil sige, at jeg har faktisk ikke har fat i den egentlig DataRow, som også findes i DataSet'et (selvom det burde være den samme). Det giver jo derfor også mening, at AcceptChanges ikke slår igennem på DataSet'et. Men er der nogen der ved hvorfor de ikke er en og samme row? Og hvordan skal jeg så kalde AcceptChanges på min DataRow?

Håber I forstår mit spørgsmål. Ellers så spørg løs! :)


På forhånd tak.

- Mikkel
Avatar billede bernhof Nybegynder
17. august 2005 - 22:53 #1
Argh, nu ved jeg hvorfor. Jeg benyttede følgende kode:

myTable = myDataset.Tables("Tabel1").GetChanges(DataRowState.Modified)

og ikke

myTable = myDataset.Tables("Tabel1")

.. som jeg ellers skrev ovenfor, blot for eksemplets skyld. GetChanges laver jo en ny DataTable, og refererer altså ikke til den oprindelige Tabel1. Derfor slår ændringerne ikke igennem, da jeg jo arbejder med en kopi af row'en, og altså ikke den oprindelige.

Lukker spm.
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