[Qgis-user] Re : How evaluate a string as an expression in expression builder

Alexandre Neto senhor.neto at gmail.com
Mon Mar 2 03:23:32 PST 2015


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" <delazj at gmail.com> 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" <enricofer at gmail.com>
> Pour : "Alexandre Neto" <senhor.neto at gmail.com>
> Cc : "QGIS User" <qgis-user at lists.osgeo.org>
> 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 <senhor.neto at gmail.com>:
>
>> 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
>> Qgis-user at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/qgis-user
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20150302/1e982ab2/attachment.html>


More information about the Qgis-user mailing list