Toon posts:

[VB.NET Compact Framework] Tabel filteren

Pagina: 1
Acties:
  • 254 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben al een tijd bezig met een database te maken op een PDA. Ik heb al verschillende problemen tegenkomen, maar na een tijdje toch opgelost. Met dit probleem geraak ik er niet aan uit.
De code vind je hieronderen. Wanneer hij de eerste maal de code overloopt zal hij de tabel niet filteren of sorteren.
De code om te filteren komt eigenlijjk uit de MSDN dus zou deze moeten werken. Ik zie het probleem niet, zien jullie iets?

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                Dim x As Int16
        Dim fileName As String = "\Program Files\Touch-Go PDA\tblTechnieker_Destkop.xml"
        If Not File.Exists(fileName) Then
            MessageBox.Show(fileName + " does not exist")
            Return
        End If
        Dim fs As FileStream = New FileStream(fileName, FileMode.Open, FileAccess.Read)
        Dim xtr As XmlTextReader = New XmlTextReader(fs)
        dsTechniekers.Reset()
        dsTechniekers.ReadXml(xtr, System.Data.XmlReadMode.ReadSchema)
        xtr.Close()
        Dim tablesCol As DataTableCollection = dsTechniekers.Tables
        Dim dtTechniekers As DataTable = tablesCol("tblTechnieker")
        Dim drTechnieker As DataRow
        dtTechniekers.DefaultView.RowFilter = "TechNaam = '" & cboTechniekers.Text & "'"
        dtTechniekers.DefaultView.RowStateFilter = DataViewRowState.ModifiedCurrent
        drTechnieker = dtTechniekers.DefaultView.Table.Rows.Item(0)
        x = dtTechniekers.Rows.Count 'parameter om aantal rijen te bepalen
        intTechniekerId = drTechnieker.Item(0)
        strTechnieker = drTechnieker.Item(1)

In totaal heeft de tabel vier records. Maar na de filter zou hij maar 1 record mogen hebben. Via de parameter kwam ik te weten dat hij de vier records blijft behouden

[ Voor 46% gewijzigd door Verwijderd op 01-04-2005 17:41 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 09-05 01:02
Die Count geeft gewoon aan hoeveel rijen er in je tabel zitten, en dat zijn er 4.
Ook als je filtert. Er blijven 4 rijen in die tabel zitten.
Je filter wordt weergegeven dmv de DataView, die gaat enkel de rijen tonen die aan jouw filtercriteria voldoen, maar dan nog blijven er 4 rijen in de datatable zitten.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op vrijdag 01 april 2005 @ 18:02:
Die Count geeft gewoon aan hoeveel rijen er in je tabel zitten, en dat zijn er 4.
Ook als je filtert. Er blijven 4 rijen in die tabel zitten.
Je filter wordt weergegeven dmv de DataView, die gaat enkel de rijen tonen die aan jouw filtercriteria voldoen, maar dan nog blijven er 4 rijen in de datatable zitten.
Azo, maar hoe kun je dan die ene rij oproepen, deze dat zocht met uw filter?

Visual Basic:
1
2
3
4
5
6
7
8
        Dim dv As DataView
        dv = New DataView
        With dv
            .Table = dsTechniekers.Tables("tblTechniekers")
            .RowFilter = "TechNaam = '" & cboTechniekers.Text & "'"
            .RowStateFilter = DataViewRowState.ModifiedCurrent
        End With
        drTechnieker = dv.Table.Rows(0)

Maar via deze code, zal het terug zijn eerste rij oproepen van uw vier rijen. En niet deze dat je zoekt via uw filter, niet?

  • whoami
  • Registratie: December 2000
  • Laatst online: 09-05 01:02
Als je doet
code:
1
dv.Table.Rows(0)

Dan roep je weer niet je dataview, maar je datatable zelf aan. (zie ook de help over de DataView en z'n Table property).
Kijk eens naar de Item property van de DataView.
In C#:
code:
1
dv[0]

(Als dv een dataview is).

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op vrijdag 01 april 2005 @ 18:14:
Als je doet
code:
1
dv.Table.Rows(0)

Dan roep je weer niet je dataview, maar je datatable zelf aan. (zie ook de help over de DataView en z'n Table property).
Kijk eens naar de Item property van de DataView.
In C#:
code:
1
dv[0]

(Als dv een dataview is).
A, het is eindelijk gelukt. _/-\o_ _/-\o_
Effen de volledige oplossing noteren

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        Dim fileName As String = "\Program Files\Touch-Go PDA\tblTechnieker_Destkop.xml"
        If Not File.Exists(fileName) Then
            MessageBox.Show(fileName + " does not exist")
            Return
        End If
        Dim fs As FileStream = New FileStream(fileName, FileMode.Open, FileAccess.Read)
        Dim xtr As XmlTextReader = New XmlTextReader(fs)
        dsTechniekers.Reset()
        dsTechniekers.ReadXml(xtr, System.Data.XmlReadMode.ReadSchema)
        xtr.Close()
        Dim dv As DataView
        dv = New DataView
        With dv
            .Table = dsTechniekers.Tables("tblTechnieker")
            .RowFilter = "TechNaam = '" & Me.cboTechniekers.Text & "'"
        End With
        intTechniekerId = dv(0).Row.Item(0)
        strTechnieker = dv(0).Row.Item(1)