[Zope] How does dtml-sqlgroup really work?
Jorge O. Martinez
jmartinez@eMediaMillWorks.com
Fri, 07 Jun 2002 10:40:34 -0400
Hi:
Not sure if this is a DB question, or DTML question, so I'm sending it to the
general Zope list.
I've been banging my head over this relatively simple query, which (if my
understanding of the dtml-sqltest tag is correct), should be fine. The idea is
simple, get 3 columns from company_index, and display the results, if there's
further constrains set (like ticker, company_name, etc.), taylor the query
accordingly:
select company_name,ticker,primary_exchange
from
company_index
<dtml-sqlgroup where>
<dtml-sqltest ticker op=eq type=nb>
<dtml-sqltest company_name op=like type=nb>
<dtml-sqltest industry_group op=eq type=nb>
<dtml-sqltest industry_subgroup op=eq type=nb>
<dtml-sqltest market_cap op=eq type=nb>
<dtml-sqltest market_sector op=eq type=nb>
<dtml-sqltest primary_exchange op=eq type=nb>
</dtml-sqlgroup>
but it's not happy. It keeps displaying errors like this:
*************
Zope has encountered an error while publishing this resource.
Error Type: KeyError
Error Value: industry_group
Troubleshooting Suggestions
* This resource may be trying to reference a nonexistent object or
variable industry_group.
* The URL may be incorrect.
* The parameters passed to this resource may be incorrect.
* A resource that this resource relies on may be encountering an error.
For more detailed information about the error, please refer to the HTML source
for this page.
If the error persists please contact the site maintainer. Thank you for your
patience.
**************
Which in my opinion does not make sense. I intedended for only one var to be
set, and leave the others non-existing alone. I get this error when I only set
the company_name, and I expect my query to be:
select company_name,ticker,primary_exchange
from
company_index
where company_index like 'Value I passed%'
Shouldn't sqltest should recognize that, and not raise an error?
-------------------------
I used a variation, which I don't think should be used because supposedly
sqltest's job is to test if a var is set, and include it in my 'where' if it
is. As you can see, I check with a <dtml-if ..> if the var is set, but I think
I should not have to do it since, I think based on docs I've read, that
<dtml-sqltest...> should do that.
select company_name,ticker,primary_exchange
from
company_index
<dtml-sqlgroup where>
<dtml-if ticker>
<dtml-sqltest ticker op=eq type=nb>
</dtml-if>
<dtml-if company_name>
<dtml-sqltest company_name op=like type=nb>
</dtml-if>
<dtml-if industry_group>
<dtml-sqltest industry_group op=eq type=nb>
</dtml-if>
<dtml-if industry_subgroup>
<dtml-sqltest industry_subgroup op=eq type=nb>
</dtml-if>
<dtml-if market_cap>
<dtml-sqltest market_cap op=eq type=nb>
</dtml-if>
<dtml-if market_sector>
<dtml-sqltest market_sector op=eq type=nb>
</dtml-if>
<dtml-if primary_exchange>
<dtml-sqltest primary_exchange op=eq type=nb>
</dtml-if>
</dtml-sqlgroup>
By the way, this way does not work either, I also get an error using the above
syntax:
****************
Zope Error
Zope has encountered an error while publishing this resource.
Error Type: DatabaseError
Error Value: (933, 'ORA-00933: SQL command not properly ended')
Troubleshooting Suggestions
* The URL may be incorrect.
* The parameters passed to this resource may be incorrect.
* A resource that this resource relies on may be encountering an error.
For more detailed information about the error, please refer to the HTML source
for this page.
If the error persists please contact the site maintainer. Thank you for your
patience.
****************
Any hints are gretly appreciated.
Regards,
Jorge M.
--
Jorge O. Martinez
MIS Senior Associate
eMediaMillWorks
1100 Mercantile Lane, Suite 119
Largo, MD 20774
E-mail => jmartinez@eMediaMillWorks.com
Phone => (301)883-2482 ext. 105
Fax => (301)883-9754