[Zope] sqlgroup problems

Dario Lopez-Kästen dario@ita.chalmers.se
Thu, 4 Jan 2001 12:29:59 +0100


Hello!

I need help with the following SQL-method, which I don't know if it is a
bug, or if it is my mistake.

I am building a search interface to a database (Zope 2.2.4 w all HF's,
Oracle 8.1.7, Solaris), and I want to use the following sqlmethod, to let
the user enter any combination of search parameters, including none:

select * from ladok.kurs
<dtml-sqlgroup where>
  <dtml-sqltest kurs_kod column="kod"
   op="like" type="string" optional>
<dtml-and>
  <dtml-sqltest kurs_namn column="benamns"
   op="like" type="string" optional>
</dtml-sqlgroup>

From the Zope Book, Chapter 10, I got the impression that the "optional"
part of the sqltest tag would render the parts that where not null; i.e. if
I only specify the kurs_namn variable (first sqltest), the method would
render the following SQL:

  select * from ladok.kurs
  where
  (kod like 'XX')

or, if no search parameters where specified, it would render the following
SQL:

  select * from ladok.kurs

However this is not the case, what I get if I enter XX for kurs_kod is the
following SQL:

select * from ladok.kurs
where
(kod like 'XX'
 and benamns like ''
)

Is this expected behaviour or have I misunderstood the docs? I can get
around this problem by doing something like this (notice the op tag and the
extra ",'%')" string at the end of each sqltest line) :

  <dtml-sqltest kurs_kod column="kod"
   op="like nvl(" type="string" optional>, '%')

which renders the following SQL (the "%" is the Oracle wildcard operator):

select * from ladok.kurs
where
(kod like nvl( 'XX', '%')
 and benamns like nvl( '', '%')
)

however, i'd much rather that it didn't render the null variables at all.

If this is known behaviour then the examples in Chapter 10

Any help appreciated. I searched the archives but didn't find any answers,

TIA,

/dario

- --------------------------------------------------------------------
Dario Lopez-Kästen     Systems Developer  Chalmers Univ. of Technology
dario@ita.chalmers.se  ICQ will yield no hits    IT Systems & Services