Thank you both for your input. Enrico, that might work. In fact, I'm not going to use the same layer. I will give it a try.
Nice plugin btw. Junior, I can't use case when condition because I still have to put a condition in it, and a string won't be evaluated as such. The reason why I need a string is because the condition in it will be created in a dynamic way using values from other attributes Best regards, Alexandre Neto Em 26/02/2015 16:34, "Junior" <[email protected]> escreveu: > Hi, > Can't this be done with the simple use of case when condition? Something > like: > CASE WHEN "field_1"= 20 THEN 'something True' ELSE 'something false' END > > Envoyé depuis mon HTC > > ----- Reply message ----- > De : "Enrico Ferreguti" <[email protected]> > Pour : "Alexandre Neto" <[email protected]> > Cc : "QGIS User" <[email protected]> > Objet : [Qgis-user] How evaluate a string as an expression in expression > builder > Date : jeu., févr. 26, 2015 15:52 > > I developed a plugin called refFunctions v1.0 > <http://geogear.wordpress.com/2014/11/13/reffunctions-v1-0/> that extends > expressions with a new group of functions. > In Expression calculator, under the group 'Reference' you will find a > function called dbquery(targetLayer,targetField,whereClause) > It was developed keeping in mind the reference to other layers, but I > think you can use it with the same layer. > You can pass the field containing conditional expression in whereClause > parameter and retrieve the same field used in where clause. > I you get NULL the test is false otherwise is true. > > for example (with field "condition" containing 'testField = 1'): > > CASE > WHEN dbquery('samelayer','testFiled',"condition") = NULL THEN 0 > ELSE 1 > END > > Pay attention to quotes! > > > Here is the description: > > dbquery function > > > Retrieve first targetField value from targetLayer when whereClause is true > > Syntax > > dbquery(targetLayer,targetField,whereClause) > > Arguments > > targetLayer → the name of a currently loaded layer, for example 'myLayer'. > targetLayer → a field of targetLayer whom value is needed, for example > 'myField'. In case of multiple results only the first is retrieved. If > targetLayer = '$geometry' geometry value is retrieved > whereClause → a valid expression string without duoble quotes to identify > fields, for example 'field1 > 1 and field2 = "foo"' > > Example > > dbquery('myLayer','myField','field1 > 1 and field2 = "foo"') > dbquery('myLayer','$geometry','field1 > 1 and field2 = "foo"') > > > > > > 2015-02-26 14:00 GMT+01:00 Alexandre Neto <[email protected]>: > >> Hello all, >> >> Does any one know how if it's possible to evaluate an all string as an >> expression in expression builder. >> >> What I'm aiming to be able to do is to dynamicly create expression based >> on other fields. So Imagine I have attribute with a string like this: >> >> '"field_1" = 20' >> >> Is there a way to evaluate this as an conditional expression? >> >> Thanks, >> >> Alexandre Neto >> >> _______________________________________________ >> Qgis-user mailing list >> [email protected] >> http://lists.osgeo.org/mailman/listinfo/qgis-user >> > >
_______________________________________________ Qgis-user mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-user
