Avatar billede karsten_larsen Praktikant
28. september 2007 - 21:16 Der er 8 kommentarer og
1 løsning

Slette rækker i et dataset

Ønsker kun at slette de rækker som opfylder en bestemt betingelse.

Ville mene at det burde virke

        Dim i As Integer
        For i = 0 To ds.Tables(0).Rows.Count - 1
            If ds.Tables(0).Rows(i)("Antal") > 50 Then
                ds.Tables(0).Rows(i).Delete()
            End If
        Next
Avatar billede neoman Novice
28. september 2007 - 21:30 #1
Gør det ikke det ? Så skal du nok huske at kalde ds.tables(0).AcceptChanges
Avatar billede karsten_larsen Praktikant
28. september 2007 - 21:51 #2
hmm
Har prøvet sådan her:
        Dim i As Integer
        For i = 0 To ds.Tables("tbDemo").Rows.Count - 1
            If ds.Tables("tbDemo").Rows(i)("Antal") > 50 Then
                dsOriginal.Tables("tbDemo").Rows(i).BeginEdit()
                dsOriginal.Tables("tbDemo").Rows(i).Delete()
                dsOriginal.Tables("tbDemo").Rows(i).EndEdit()
                dsOriginal.Tables("tbDemo").Rows(i).AcceptChanges()
            End If
        Next

men får fejl: Der er ingen række på positionen 221, hvilket svarer til at to poster er slettet, hvilket også skal være rigtigt.
Avatar billede neoman Novice
28. september 2007 - 21:53 #3
Du skal nok køre accept changes EFTER  loopet, ellers forsvinder rækken med det samme, mens upper limit i loopet ikke er opdateret, så prøver den at komme igennem rækker som ikek længere findes
Avatar billede neoman Novice
28. september 2007 - 21:54 #4
Dim i As Integer
        For i = 0 To ds.Tables(0).Rows.Count - 1
            If ds.Tables(0).Rows(i)("Antal") > 50 Then
                ds.Tables(0).Rows(i).Delete()
            End If
        Next
        ds.Tables(0).AcceptChanges
Avatar billede karsten_larsen Praktikant
28. september 2007 - 21:54 #5
Hvordan korrigeres så ds.Tables(0).Rows.Count - 1 for de slettede rækker?
Avatar billede karsten_larsen Praktikant
28. september 2007 - 21:58 #6
neomann - lav et svar, det vist mig som sov! ds.tables(0).AcceptChanges og ikke ds.tables(0).Rows(i).AcceptChanges

Tak for hjælpen

:-) karsten_larsen
Avatar billede neoman Novice
28. september 2007 - 22:00 #7
det der sker når du "deleter" en række er at den får status Deleted (det kan du checke på i .RowState property'en for en række). Det er bl.a. dét en adapter/datasource bruger til at finde ud af hvilken række den skal fjerne fra db'en, hvorpå den kører AcceptChanges, således at rækkerne også forsvinder fra datasettet.
Avatar billede neoman Novice
28. september 2007 - 22:00 #8
det var så lidt
Avatar billede karsten_larsen Praktikant
28. september 2007 - 22:11 #9
okay - tak for fiffet med .Rowstate
:-) karsten_larsen
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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