Avatar of vbNewbie2009

asked on 

Unable to filter Dataset

I'm having a difficult time grasping how I can filter data in a datatable using the Select method and then populate a combobox.  I've created a Private Dataset for my form that I populate on form Load.  Then when my routine runs to fill a combobox based off that I want to perform a Select against the table in the dataset but keep getting the error below.  I've attached the code as I have it...any help would be most appreciated.

Problem responseChkBoxEvents: --Message:Cannot bind to the new display member.  Parameter name: newDisplayMember--StackTrace:   at System.Windows.Forms.ListControl.SetDataConnection(Object newDataSource, BindingMemberInfo newDisplayMember, Boolean force)     at System.Windows.Forms.ListControl.set_ValueMember(String value)     at RxAssess.DynamicForm.responseChkBoxEvents(Object sender, EventArgs e) in C:\Programming\DynamicForm.vb:line 629--TargetSite:Void SetDataConnection(System.Object, System.Windows.Forms.BindingMemberInfo, Boolean)
Public Class DynamicForm
Private dsNCICriteria As New DataSet

Private Sub DynamicForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Capture data for NCI Criteria Combo Boxes
Dim conStringNCICriteria As String = "removed string;"
Dim strSQLNCICriteria As String = "select ntypeid,grade,cast(grade as nvarchar) + '   -   ' + description as description " + _
                "from nci_criteria"
Dim conNCICriteria As New SqlConnection(conStringNCICriteria)
Dim daNCICriteria As New SqlDataAdapter(strSQLNCICriteria, conNCICriteria)
daNCICriteria.Fill(dsNCICriteria, "NCICriteria")
conNCICriteria = Nothing
strSQLNCICriteria = Nothing
conStringNCICriteria = Nothing
End Sub

Sub responseChkBoxEvents(ByVal sender As System.Object, ByVal e As System.EventArgs)
If chk.Checked = True Then
                If chk.Name.Substring(chk.Name.LastIndexOf("N") + 1) <> 0 Then
                    Dim nciTypeID As String = chk.Name.Substring(chk.Name.LastIndexOf("N") + 1)
                    Dim nciFilter As String
                    nciFilter = "ntypeid = " + chk.Name.Substring(chk.Name.LastIndexOf("N") + 1)

                    Dim cbo As ComboBox = TryCast(Me.Controls(Replace(Replace(chk.Name, "CHK", "NCICBO"), "L" + z.ToString, "L" + (z + 1).ToString)), ComboBox)
                                      With cbo
                        .DataSource = dsNCICriteria.Tables("NCICriteria").Select(nciFilter)
                        .DisplayMember = "description"
                        .ValueMember = "grade"
                        .Visible = True
                        .SelectedItem = Nothing
                        .AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems
                        .AutoCompleteMode = AutoCompleteMode.Append
                    End With
                End If
End Sub

Open in new window

.NET ProgrammingVisual Basic.NETVisual Basic Classic

Avatar of undefined
Last Comment
Nasir Razzaq
Avatar of Nasir Razzaq
Nasir Razzaq
Flag of United Kingdom of Great Britain and Northern Ireland image

Try replacing

.DataSource = dsNCICriteria.Tables("NCICriteria").Select(nciFilter)


.dsNCICriteria.Tables("NCICriteria").DefaultView.RowFilter = nciFilter
.DataSource = dsNCICriteria.Tables("NCICriteria").DefaultView
Avatar of Éric Moreau
Éric Moreau
Flag of Canada image

can you print out the value of nciFilter?
Avatar of vbNewbie2009


Thanks CodeCruiser I will give that a try an about an hour.

Emoreau:  The value of nciFIlter is "ntypeid = 5"
Avatar of vbNewbie2009


CodeCruiser:  That works, i just had to put the first row outside the With clause and remove the dot.   Was that your intent?    I'm noticing that other checkBox events associated with populating comboBoxes all fire properly too.  The comboBoxes all share the same drop down values though.  Can the filter results be assigned to each comboBox individually or is this just a limitation?

Based on your suggestion I think I've misunderstood the whole Table Select method; I thought if I select just a certain number of items from a table and associated that with the combobox those values would be; somewhat added to just that combobox.
Avatar of Nasir Razzaq
Nasir Razzaq
Flag of United Kingdom of Great Britain and Northern Ireland image

Blurred text
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of vbNewbie2009


Extremely helpful; thank you very much for the help and explanation!!!
Avatar of Nasir Razzaq
Nasir Razzaq
Flag of United Kingdom of Great Britain and Northern Ireland image

Glad to help :-)
Visual Basic Classic
Visual Basic Classic

Visual Basic is Microsoft’s event-driven programming language and integrated development environment (IDE) for its Component Object Model (COM) programming model. It is relatively easy to learn and use because of its graphical development features and BASIC heritage. It has been replaced with VB.NET, and is very similar to VBA (Visual Basic for Applications), the programming language for the Microsoft Office product line.

Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews


IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo