casting /filtering problem

Hi

Im trying to cast a dataview column to string

Property Expression can not be used , because there is a cirkular reference in the expression

I have the problem filtering a column which is a type of integer use the like operator when passing a txtbox input e.g = 4

how can i address this problem?

vbturbo



parentView.Table.Columns("import_policeid").Expression = "Convert('import_policeid',System.String)"
 
                With parentView
                    .RowFilter = "import_policeid Like '%" & txtsearch.Text & "%' Or xml_kunde_navn Like '%" & txtsearch.Text & "%' Or import_kundenr Like '%" & txtsearch.Text & "%' Or xml_kunde_adresse1 Like '%" & txtsearch.Text & "%' Or import_id Like '%" & txtsearch.Text & "%'"
                    .RowStateFilter = DataViewRowState.CurrentRows
                End With

Open in new window

LVL 18
vbturboAsked:
Who is Participating?
 
SanclerConnect With a Mentor Commented:
>>
Im just looking for a solution to cast a column to string.
Of course i could create a overhead by adding a column to the table ,assign the values from the int column
then remove the int column .........ect
<<

I don't think you can do this - at least using in-built functions - without the overhead: and, if you do that, you won't be able to "remove the int column ..."

The page you are referring to/quoting from is concerned with expression _columns_ (although the same rules also apply to other expressions - e.g. .RowFilters).  Now, when you use it as an expression in a column, the column actually CONTAINS the _expression_, although it will DISPLAY the value that resuts from that application of that expression to the other (relevant) data in the row concerned.  What your original attempt was doing was saying: display in column 'import_policeid' the result of casting the value in column 'import_policeid' as a string.  But that, explained in that way, is obviously a circular reference.  Further - and this is why you won't (with this approach) be able to "remove the int column" - once you remove the referenced column, the expression column has no data remaining to which to apply its formula.

What you might (??) be able to do - given, as I say above, that "expression" rules are the same for rowfilters as for expression columns - is use the CONVERT() function in the rowfilter.  But I haven't tried it (so far as I can recall) myself.

Roger
0
 
Pratima PharandeCommented:
  .RowFilter = "import_policeid Like '%" & txtsearch.Text & "%' Or xml_kunde_navn Like '%" & txtsearch.Text & "%' Or import_kundenr Like '%" & txtsearch.Text & "%' Or xml_kunde_adresse1 Like '%" & txtsearch.Text & "%' Or import_id=" & txtsearch.Text & "%"
                    .RowStateFilter = DataViewRowState.CurrentRows
                End With
0
 
Pratima PharandeCommented:
  .RowFilter = "import_policeid Like '%" & txtsearch.Text & "%' Or xml_kunde_navn Like '%" & txtsearch.Text & "%' Or import_kundenr Like '%" & txtsearch.Text & "%' Or xml_kunde_adresse1 Like '%" & txtsearch.Text & "%' Or import_id=" & txtsearch.Text & ""
                    .RowStateFilter = DataViewRowState.CurrentRows
                End With
0
Cloud Class® Course: Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

 
vbturboAuthor Commented:
throws this exception
There is missing an operand after operator 'Mod'.

I need also to be able to use the like operator on import_id =" & txtsearch.Text & "%" instead of the equal operator

thanks

0
 
vbturboAuthor Commented:
your second suggestion throws

Column [s] was not found.
0
 
Pratima PharandeConnect With a Mentor Commented:

pratima_mcs:
  .RowFilter = "import_policeid Like '%" & txtsearch.Text & "%' Or xml_kunde_navn Like '%" & txtsearch.Text & "%' Or import_kundenr Like '%" & txtsearch.Text & "%' Or xml_kunde_adresse1 Like '%" & txtsearch.Text & "%' Or import_id=" & txtsearch.Text
                    .RowStateFilter = DataViewRowState.CurrentRows
                End With
0
 
vbturboAuthor Commented:
well i have redefined my structure a bit and it works ,but.....

                With parentView
                    If bool = False Then
                        .RowFilter = "" & var & " Like '%" & txtsearch.Text & "%'"
                    Else
                       ' here it shows only the exact match........How do i apply the like operator ????????
                        .RowFilter = "" & var & " = " & txtsearch.Text & ""
                    End If
                    .RowStateFilter = DataViewRowState.CurrentRows
                End With

thanks
0
 
Pratima PharandeCommented:
you can't apply like to int
0
 
vbturboAuthor Commented:
but then how can i cast the  "import_policeid" column to string ?

parentView.Table.Columns("import_policeid").Expression = "Convert('import_policeid',System.String)"

throws
Property Expression can not be used , because there is a cirkular reference in the expression


0
 
Pratima PharandeCommented:
why you need like for the int ?
0
 
vbturboAuthor Commented:
to filter out long invoice numbers.(15-18 digits)

Im just looking for a solution to cast a column to string.
And of course create a overhead by adding a column to the table ,assign the values from the int column
then remove the int column .........ect

that i would like to avoid.

Do you know how to cast/convert a column to string ?
0
 
vbturboAuthor Commented:
sorry correction:

to filter out long invoice numbers.(15-18 digits)

Im just looking for a solution to cast a column to string.
Of course i could create a overhead by adding a column to the table ,assign the values from the int column
then remove the int column .........ect

that i would like to avoid.

Do you know how to cast/convert a column to string ?
0
 
Pratima PharandeCommented:
0
 
vbturboAuthor Commented:
at the middle of this page it shows how to convert a datatable column

but where am i dropping the ball ?



https://msdn2.microsoft.com/en-us/library/system.data.datacolumn.expression(VS.71).aspx

The following functions are also supported:

CONVERT

Description Converts given expression to a specified .NET Framework Type.
Syntax Convert(expression, type)
Arguments expression-- The expression to convert.
type-- The .NET Framework type to which the value will be converted.
 

Example: myDataColumn.Expression="Convert(total, 'System.Int32')"
0
 
vbturboAuthor Commented:
Hi Roger

Sorry for my late responce, just came home from work.

Thanks for an "as always"  competent responce and elaboration.
Glad that you still are around, long time no see -;)

I really miss some of your comments as you seem absent now a days.

Thinking deeper in applying the convert() function in the rowfilter.
Should be possible in the same way as in a SQL select against a datasource where you can cast and convert
Ill do some testing in this regard.

If anything else pops into your mind please drop in with a comment.


Jens
0
 
vbturboAuthor Commented:
Roger

I think this should the trick

parentView.RowFilter = "Convert(import_policeid, 'System.String')  Like '%" & txtsearch.Text & "%'"

ill test it tomorrow and let you know

Jens


0
 
SanclerCommented:
Jens

I've been, and still am, rather busy on other things.  So although I keep an eye on EE when I can, I'm not contributing so much.  In particular, I try to resist posting where it looks like the thread might get protracted.  But I know that you and I are "on the same wavelength" and  that you'd get the point I was trying to make without me having to put it in half a dozen different ways.  Hence my comment on this.

It looks like it should work.  I'll be interested to hear if it does.

Roger
0
 
vbturboAuthor Commented:
Roger

It works like a charm.

Jens
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.