Thank you for your suggestions.
An acceptable solution (for me):
def sql_query_with_and(query1, query2):
if (None == query2):
return query1
else:
return query1 & query2
query = None
if (None != field1_value):
query = (db.table.field1 == field1_value)
if (None != field2_value):
query = sql_query_with_and((db.table.field2 == field2_value),
query)
if (None != field3_value):
query = sql_query_with_and((db.table.field3 == field3_value),
query)
rows = db(query).select()
I'm a happy web2py user!
On 18 Iul, 22:00, Yarko Tymciurak <[email protected]> wrote:
> since form.vars holds validated request.vars,
>
> after form.accepts( ),
>
> look at the structure of your form.vars, and then you'll see what you need
> to do to build up your query from the user response.
>
> you can show them in your page, for development, with
> {{=BEAUTIFY(form.vars)}} and compare that with {{=BEAUTIFY(request.vars)}}
>
> On Sat, Jul 18, 2009 at 8:29 PM, ionel <[email protected]> wrote:
>
> > I think I wasn't clear. The user can make any selection to search the
> > database.
>
> > Search Form example:
>
> > [*] field1 = some_value1
> > [ ] field2
> > [*] field3 = some_value2
> > [ ] field4
> > [ ] field5
> > [ ] field6
> > etc.
>
> > So, for this situation:
> > query = (db.table.field1=='some_value1')&
> > (db.table.field3=='same_value2')
>
> > Next time he can change the selection:
>
> > [ ] field1
> > [*] field2 = some_value1
> > [ ] field3
> > [ ] field4
> > [*] field5 = some_value2
> > [*] field6 = some_value3
>
> > query = (db.table.field2=='some_value1')&
> > (db.table.field5=='same_value2')&(db.table.field5=='same_value3')
>
> > I do not know what the user will select in advance. I need to generate
> > the query after his selection, in any field combination.
>
> > On Jul 18, 9:14 pm, mdipierro <[email protected]> wrote:
> > > yes
>
> > > db(db.table.field0=='somevalue').select
> > > (db.table.field1,db.table.field2,orderby=db.table.field3)
>
> > > On Jul 18, 7:58 pm, ionel <[email protected]> wrote:
>
> > > > Just to be more clear. The user can select multiples fields, from one
> > > > to all.
>
> > > > On Jul 18, 8:55 pm, ionel <[email protected]> wrote:
>
> > > > > Hello everyone,
>
> > > > > I have a table with multiples fields (20). The user can select the
> > > > > fields for searching the table. He can select one field or all the
> > > > > fields in any combination. I need to create a query with his
> > > > > selection. Is this thing possible in web2py but without using
> > > > > executesql() ?
>
> > > > > Thanks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---