combo box display member not working

Let me try 3 from 3 for EE:)

I'm getting an error when trying to load a dataGridView, through a Search funtion, from a combobox.
The combo box is loaded from a table like this:

Private Sub MySearches()
        Dim strSql As String = ""
        Dim dsData As DataSet
        cbJob.DataSource = Nothing
        strSql = " SELECT JobID, Active, Description "
        strSql = strSql & " FROM tblJob"
        strSql = strSql & " WHERE Active = 'Y'"
        strSql = strSql & " ORDER BY Description "
        dsData = SelectDataSet(strSql)
        cbJob.DataSource = dsData.Tables(0)
        cbJob.DisplayMember = "Description"
        cbJob.ValueMember = "JobID"
    End Sub

Open in new window


The datagrid is loaded like this:
Sub Load_Data()

        Dim strSQL As String = ""
        Dim dsData As DataSet

        Try
            strSQL = " SELECT DISTINCT ExampleID, SurName, JobID "
            strSQL = strSQL & " ,'N' RowModified "
            strSQL = strSQL & " From tblExample "
            strSQL = strSQL & " Where ExampleID = '1' " 
            If txtName.Text <> "" Then
                strSQL = strSQL & " And SurName = '" & Trim(UCase(Replace(txtSurName.Text, "'", ""))) & "'"
            End If
            If cbDesignation.Text <> "" Then
                strSQL = strSQL & " And JobID = '" & Trim(UCase(Replace(cbJob.Text, "'", ""))) & "'"
            End If
            strSQL = strSQL & " ORDER BY SurName, JobID ASC "

Open in new window


my problem is that the cbJob.DisplayMember works 100% when I do this:
       
cbJob.DisplayMember = "JobID"

Open in new window


as soon as I change it to diplay the Job description, then it errors out and cannot load the datagridview
The code that does not work:
cbJob.DisplayMember = "Description"

Open in new window

I obviously have some calsses etc going, but the just of the issue should be contained in the code I managed to post.
So to summarize:
I need to be able to SEARCH using the Combox cbJob, not on JobID but rather using the Description field from the same table feeding the cbJob, the JobID works fine, description does not.
fadiel rasAsked:
Who is Participating?
 
Shaun KlineConnect With a Mentor Lead Software EngineerCommented:
Try using the cbJob.SelectedValue in your SQL instead of cbJob.Text.

If you wish to use cbJob.Text, you will need to modify your SQL in your search to include a join to your tblJob table to allow searching on the description in that table.
0
 
AndyAinscowFreelance programmer / ConsultantCommented:
I've seen odd behaviour when one uses a reserved keyword.  This is a guess but does this make any difference?

Private Sub MySearches()
        Dim strSql As String = ""
        Dim dsData As DataSet
        cbJob.DataSource = Nothing
        strSql = " SELECT JobID, Active, Description as Descr "
        strSql = strSql & " FROM tblJob"
        strSql = strSql & " WHERE Active = 'Y'"
        strSql = strSql & " ORDER BY Description "
        dsData = SelectDataSet(strSql)
        cbJob.DataSource = dsData.Tables(0)
        cbJob.DisplayMember = "Descr"
        cbJob.ValueMember = "JobID"
    End Sub

Open in new window



you might need this modification if the ORDER BY clause gives a problem with the other change
[code]Private Sub MySearches()
        Dim strSql As String = ""
        Dim dsData As DataSet
        cbJob.DataSource = Nothing
        strSql = " SELECT JobID, Active, Description as Descr "
        strSql = strSql & " FROM tblJob"
        strSql = strSql & " WHERE Active = 'Y'"
        strSql = strSql & " ORDER BY Descr "
        dsData = SelectDataSet(strSql)
        cbJob.DataSource = dsData.Tables(0)
        cbJob.DisplayMember = "Descr"
        cbJob.ValueMember = "JobID"
    End Sub

Open in new window

[/code]
0
 
Shaun KlineLead Software EngineerCommented:
One observation:
Line 14 in the code you posted is comparing cbDesignation.Text in the IF statement, but your SQL on line 15 is using cbJob.Text.

In your SQL, instead of using cbJob.Text on line 15, you can use cbJob.SelectedValue in that line of SQL.
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
fadiel rasAuthor Commented:
thanks Andy, I'll try it. Shaun, sorry man, I changed the naming of some for purpose of the public forum, will update it, thanks for spotting
0
 
fadiel rasAuthor Commented:
Hi AndyAinscow, I tried yours, with no luck unfortuantely. the form loads with the Descriptions, but still errors on the search (tried both)
if you do think of something else, please let me know, thank you
0
 
AndyAinscowFreelance programmer / ConsultantCommented:
>>then it errors out

Do you get an error message?  If yes then what is it saying
0
 
fadiel rasAuthor Commented:
thanks. let me try.
>>Do you get an error message?  If yes then what is it saying
 {"Conversion failed when converting the varchar value 'CREDIT CONTROLLER' to data type int."}

'CREDIT CONTROLLER' being the Job Description

the sql code from my vb load when I search is:
( the value member should have passed JobID)
 
 SELECT DISTINCT ExampleID, Surname, JobID,'N' RowModified  
  From tblExample   
  Where ExampleID  = '1'  
  And JobID = 'CREDIT CONTROLLER' 
  ORDER BY Name, JobID ASC

Open in new window

0
 
fadiel rasAuthor Commented:
Hi Shaun, unfortunately no luck. when I use the .SelectValue, I get this error:
 {"Conversion from string "" to type 'Double' is not valid."}

Open in new window

pretty much still the same...
I tried the join earlier, but could figure out if I need to now bring the description column in my Load sub?, let me try, then I'll post my new Code
0
 
fadiel rasAuthor Commented:
The JOIN also doesn't work. Please review my code below:

Sub Load_Data()
Dim strSQL As String = ""
Dim dsData As DataSet
        Try
            strSQL = " SELECT DISTINCT ExampleID, SurName, tblJob .JobID "
            strSQL = strSQL & " ,'N' RowModified "
            strSQL = strSQL & " From tblExample "
            strSQL = strSQL & " INNER JOIN tblJob "
            strSQL = strSQL & " ON tblExample.JobID = tblJob.JobID   "
            strSQL = strSQL & " Where ExampleID = '1' " 
            If txtName.Text <> "" Then
                strSQL = strSQL & " And SurName = '" & Trim(UCase(Replace(txtSurName.Text, "'", ""))) & "'"
            End If
            If cbJob.Text <> "" Then
                strSQL = strSQL & " And tblJob .JobID = '" & Trim(UCase(Replace(cbJob.Text, "'", ""))) & "'"
            End If
            strSQL = strSQL & " ORDER BY SurName, tblJob .JobID ASC "

Open in new window


The Error
{"Conversion failed when converting the varchar value 'CREDIT CONTROLLER' to data type int."}

Open in new window

0
 
fadiel rasAuthor Commented:
found it. SHaun you idea solved it, thanks man!!!!!
the correct search code is:

            If cbJob.Text <> "" Then
                strSQL = strSQL & " And tblJob .Description = '" & Trim(UCase(Replace(cbJob.Text, "'", ""))) & "'"

Open in new window


the full code for reference purose is corrected below:
Sub Load_Data()
Dim strSQL As String = ""
Dim dsData As DataSet
        Try
            strSQL = " SELECT DISTINCT ExampleID, SurName, tblJob .JobID "
            strSQL = strSQL & " ,'N' RowModified "
            strSQL = strSQL & " From tblExample "
            strSQL = strSQL & " INNER JOIN tblJob "
            strSQL = strSQL & " ON tblExample.JobID = tblJob.JobID   "
            strSQL = strSQL & " Where ExampleID = '1' " 
            If txtName.Text <> "" Then
                strSQL = strSQL & " And SurName = '" & Trim(UCase(Replace(txtSurName.Text, "'", ""))) & "'"
            End If
            If cbJob.Text <> "" Then
                strSQL = strSQL & " And tblJob .Description = '" & Trim(UCase(Replace(cbJob.Text, "'", ""))) & "'"
            End If
            strSQL = strSQL & " ORDER BY SurName, tblJob .JobID ASC "

Open in new window

0
 
fadiel rasAuthor Commented:
Thanks Gents!
0
All Courses

From novice to tech pro — start learning today.