Page 1 of 1

PostPosted: Thu Jan 11, 2007 7:06 pm
by shiraz
Good day!

I have two simple search questions:

1. Is there a way to search for null values in a given field? Or can I search with a negative operand?

2. I have a drop-down field that I want to search. I want to be able to search for all values above a given number. But since it's a dropdown, I can't actually enter "> 1" to search all values greater than one. I need to choose just one value from the list. Is there anything I can do here? Could I perhaps do a calculated field based on the drop-down and make the calculated field searchable? Or if I can't make a calculated field searchable I could add a delegate class to copy the drop-down field and make *that* field searchable, but I'd also want to make it non-editable. Is that possible?


Thanks to anyone who can answer!

Shiraz

PostPosted: Fri Jan 12, 2007 1:45 pm
by shannah
Good point, I can't think of a clean way to change the find form to accommodate this, but the guts of dataface will certainly allow this sort of search. Dataface searching works on URLs and GET parameters. Suppose your field name is 'category'. By adding "category=1..5" as a GET parameter
e.g. http://yourdomain.com/yourapp/index.php?-table=foo&-action=list&category=1..5
You will get all of the records with category values between 1 and 5
Similarly you could do:
"category=>1"
"category=<1"
For greater than or less than searches.

Now, the auto-generated search form doesn't currently allow you to change the widget type on the form, but you can rig up your own little form to do this search if you like. All it has to do is append to the GET parameters.

Alternatively, you can whip up some tricky javascript code to change the widget type in the DOM with about 3 lines of code if you wanted to.

Hope this helps a little.

-Steve

PostPosted: Fri Jan 12, 2007 2:45 pm
by shiraz
That does help, thanks again Steve!

PostPosted: Fri Jan 12, 2007 3:14 pm
by shiraz
Steve, I'm not sure you answered the 1st question. Is there something I could put as a GET parameter to specify a null value? And/or, a NOT EQUALS? eg. "if studenttypetrainee" or "if studenttype==NULL"

PostPosted: Mon Jan 15, 2007 7:14 am
by shiraz
My apologies for not doing this before, but I just upgraded to version 0.69 (from 0.53) and I see the find form has been improved -- including the addition of the NONE radio button beside any of the drop-down fields. Sweet!


HOWEVER! It appears checking the NONE value for a drop-down list only matches empty strings, which are treated differently by MySQL than NULL fields. NULL fields are *not* matched when this box is checked. In fact, NULL fields are the default value for an empty field in a standard MySQL table, which essentially makes this a Dataface bug. I may be wrong but I believe this is correct. I suspect you missed it Steve because perhaps Dataface-inserted records set empty fields to an empty string rather than leaving them NULL? I haven't checked that but it seems logical.


And HOWEVER #2! I'm wondering how I might specify a NULL search criteria for a free-form field. Perhaps the NONE radio button should be available for all fields, not just the drop-downs.



Version .69 is a BLESSING! Thanks again, Mr. Hannah.

PostPosted: Mon Jan 15, 2007 12:39 pm
by shannah
I Shiraz,

Looks like you are right. The searching does not deal with NULL values at all. I'll have to add this for the next release.

As far as ways to specify "NOT EQUALS", you can either begin the search term with '!=' or ''.

E.g. if you want to find records that do not have DOG in the "subject" field, you would put 'DOG' in the search field for "subject" (or '!=DOG').

Best regards

Steve

PostPosted: Wed Jan 17, 2007 5:27 pm
by shiraz
Thanks Steve!