Here is my version info:

web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2017
Version 2.14.6-stable+timestamp.2016.05.09.19.18.48
Database drivers available: pymysql, imaplib, MySQLdb, sqlite3, pg8000,
pyodbc

Code used to be:

queries = [db.auth_user.id > 0]
queries.append((db.auth_user.firstLast.contains(searchText)) |
(db.auth_user.lastFirst.contains(searchText)))
query = reduce(lambda a, b: (a & b), queries)

I'd hadn't figured out that I could pass text like that to my sub-query.




On Thu, Mar 9, 2017 at 2:27 PM, Anthony <[email protected]> wrote:

> What did your code look like, and are you using an older version of web2py?
>
> On Thursday, March 9, 2017 at 12:08:10 PM UTC-5, Jim S wrote:
>>
>> Holy Cow!  I got it working.
>>
>> Not exactly what you specified Anthony, but got me on the right track
>>
>> With your method I got this traceback:
>>
>> Traceback (most recent call last):
>>   File "C:\dev\web2py\gluon\restricted.py", line 216, in restricted
>>     exec(ccode, environment)
>>   File "C:\dev\web2py\applications\connect\controllers/user.py:index", line 
>> 281, in <module>
>>   File "C:\dev\web2py\gluon\globals.py", line 405, in <lambda>
>>     self._caller = lambda f: f()
>>   File "C:\dev\web2py\gluon\tools.py", line 4299, in f
>>     return action(*a, **b)
>>   File "C:\dev\web2py\applications\connect\controllers/user.py:index", line 
>> 72, in index
>> AttributeError: 'MySQL' object has no attribute 'CONCAT'
>>
>>
>> However, I then tried this:
>>
>> queries = [db.auth_user.id > 0]
>> queries.append((db.auth_user.firstLast.contains(searchText)) |
>>   (db.auth_user.lastFirst.contains(searchText)) |
>>   ("CONCAT(first_name, \' \', last_Name) LIKE '%%%s%%'" % (searchText)))
>> query = reduce(lambda a, b: (a & b), queries)
>>
>> ...and passed the query and it worked.
>>
>> Much appreciated!
>>
>> -Jim
>>
>>
>>
>>
>> On Thu, Mar 9, 2017 at 10:37 AM, Anthony wrote:
>>
>>> I haven't tried it, but maybe something like this:
>>>
>>>     def search(sfields, keywords):
>>>         keywords = keywords.strip().replace("'", "''")
>>>         return "CONCAT(first_name, ' ', last_name) LIKE '%%%s%%'" %
>>> keywords
>>>
>>>     grid = SQLFORM.grid(db.mytable, searchable=search)
>>>
>>> Actually, although not documented as part of the public API, each
>>> adapter has a CONCAT method, which produces the correct syntax for each
>>> database. So, the last line of the search function above could be:
>>>
>>>         return "%s LIKE '%%%s%%'" % (db._adapter.CONCAT('first_name', '
>>> ', 'last_name'), keywords)
>>>
>>> Anthony
>>>
>>> On Tuesday, March 7, 2017 at 11:00:04 PM UTC-5, Jim S wrote:
>>>>
>>>> Hi
>>>>
>>>> I have a search form where the user types in generic search text.  I
>>>> want to be able to return to them a list of matching users.
>>>>
>>>> Sample Data
>>>>
>>>>   First       Last
>>>> - ----------  ----------
>>>> 1 Jim         Sanders
>>>> 2 Bill        Van Der Wall
>>>> 3 John        St James
>>>> 4 Peter       Williams
>>>> 5 Jim         Hensen
>>>> 6 John        Adams
>>>> 7 William     Tell
>>>> 8 Adam        Johnson
>>>>
>>>>
>>>> Based on the data entered in the search box, these records should be
>>>> returned
>>>>
>>>>
>>>>   Search Text      Rows Returned
>>>> - ---------------- ------------------
>>>> 1 Jim              1, 5
>>>> 2 John             3, 6, 8
>>>> 3 Adam             6, 8
>>>> 4 Bill             2
>>>> 5 Jim Sanders      1
>>>> 6 Adam John        8
>>>> 7 John St James    3
>>>>
>>>>
>>>> I can't seem to come up with a query or anything to make this happen.
>>>> With SQL I might to this:
>>>>
>>>> 'SELECT * FROM auth_user WHERE first_name LIKE \'%s*\' OR last_name
>>>> LIKE \'%s*\' OR concat(first_name, ' ', last_name) LIKE \'%s*\'' %
>>>> (search_text, search_text, search_text)
>>>>
>>>> But, I want to build this as a query for SQLFORM.grid.
>>>>
>>>> Anyone have any ideas?
>>>>
>>>> -Jim
>>>>
>>>> --
>>> Resources:
>>> - http://web2py.com
>>> - http://web2py.com/book (Documentation)
>>> - http://github.com/web2py/web2py (Source code)
>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>> ---
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "web2py-users" group.
>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>> pic/web2py/3RnGSoUbxxY/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/web2py/3RnGSoUbxxY/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to