Dear All, I reproduced my issue in bookstore example... I attach the files of bookstore example I changed (Adding a table in dbforms-config, hsqldb added tables and a script).
I don't know if this is a problem of mine in using dbforms, but I think this could be a bug because with the december release I haven't problems ------------- TO SEE THE BUG ----------------- REFER TO THE README.txt file enclosed ---------------------------------------------- file: test_ivansProblem25.jsp page with the bug file: dbforms-config.xml with new table added and with a change on book table file: bookstore.* properties, data for hsqldb I hope the list accepts attachments.... Regards Ivan ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.
test_ivansProblem25.jsp
Description: Binary data
Possible bug in release 2.5 This example uses 3 nested subforms. 1. the main form that extracts via searchCombo one author 2. the first subform gets the books for the selected author 3. the second subform gets the sections for the book selected in point 2 for the author in point 1 Try to change 2/3 time the first searchCombo switching from one author to the other and you will see the "bug", if it is really a bug.... Probably (but I'm a newbie) the bug is in DbFormTag.java lines 1590... where I found this snippet with that comment: // if we just habe a search request we do not need any other // constraints FieldValue[] searchFieldValues = initSearchFieldValues(); if (searchFieldValues != null) { mergedFieldValues = searchFieldValues; } I hadn't this issue with the 29 December 2004 release. Regards Ivan
<?xml version="1.0" encoding="ISO-8859-1" ?> <!-- ATTENTION: New tables only at the end otherwise the junit tests will not run!!!!! --> <dbforms-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../src/org/dbforms/resources/dbforms-config.xsd" > <table name="AUTHOR"> <field name="AUTHOR_ID" fieldType="int" isKey="true" autoInc="true"/> <field name="NAME" fieldType="varchar" sortable="true"/> <field name="ORGANISATION" fieldType="varchar" sortable="true"/> </table> <table name="BOOK" > <field name="BOOK_ID" fieldType="int" isKey="true" /> <field name="ISBN" fieldType="varchar" /> <field name="AUTHOR_ID" fieldType="int" isKey="true" /> <field name="TITLE" fieldType ="varchar" /> </table> <table name="BOOKSECTION"> <field name="BOOK_ID" fieldType="int" isKey="true" /> <field name="AUTHOR_ID" fieldType="int" isKey="true" /> <field name="SECTION_ID" fieldType="int" isKey="true" /> <field name="AUTHOR_INTRODUCTION" fieldType="varchar"/> </table> <query name="BOOKLISTPERAUTHOR" distinct="true" from="BOOK LEFT JOIN AUTHOR ON BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID" > <field name="BOOK_ID" fieldType="int" isKey="true" autoInc="true"/> <field name="ISBN" fieldType="varchar"/> <field name="TITLE" fieldType="varchar"/> <calc name="ISBN_TITLE" fieldType="varchar" /> <calc name="ROW_NUM" fieldType="int" /> <interceptor className = "interceptors.BookstoreCalcFieldAndSearchInterceptor"/> <search name="AUTHOR_ID" fieldType="int" /> </query> <query name="BOOK_QUERY" from="BOOK"> <field name="BOOK_ID" fieldType="int" isKey="true" autoInc="true"/> <field name="ISBN" fieldType="varchar" /> <field name="AUTHOR_ID" fieldType="int" isKey="true" /> <field name="TITLE" fieldType="varchar" isKey="true" /> </query> <query name="BOOKWITHINTERCEPTOR" from="BOOK"> <field name="BOOK_ID" fieldType="int" isKey="true"/> <field name="ISBN" fieldType="varchar" /> <field name="AUTHOR_ID" fieldType="int" isKey="true"/> <field name="TITLE" fieldType="varchar"/> <interceptor className = "interceptors.BookstoreWithInterceptorTest"/> </query> <query name="AUTHOR_VIEW" from="AUTHOR" > </query> <query name="BOOKSPERAUTHOR" from="AUTHOR, BOOK" where="BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID" > <field name="AUTHOR_ID" fieldType="int" isKey="true" autoInc="true"/> <field name="NAME" fieldType="varchar" /> <field name="ORGANISATION" fieldType="varchar" /> <field name="BOOK_ID" fieldType="int" isKey="true" autoInc="true"/> <field name="ISBN" fieldType="varchar"/> <field name="TITLE" fieldType="varchar"/> </query> <table name="XMLBOOKS" dataAccessClass="org.dbforms.event.datalist.dao.DataSourceXML" alias="file:///$(SERVLETCONTEXT_REALPATH)/WEB-INF/db_xml/books.xml?/books/book" > <field name="BOOK_ID" fieldType="int" isKey="true" expression="id" /> <field name="ISBN" fieldType="varchar" expression="isbn" /> <field name="AUTHOR_ID" fieldType="int" expression="author/authorid" isKey="true" /> <field name="TITLE" fieldType="varchar" expression="title" /> <field name="AUTHOR_NAME" fieldType="varchar" expression="author/name" /> <field name="AUTHOR_SURNAME" fieldType="varchar" expression="author/surname" /> </table> <table name="TIMEPLAN"> <field name="TIME" fieldType="DATE" isKey="true"/> <field name="D" fieldType="DOUBLE" /> <field name="I" fieldType="INTEGER" /> <field name="REMARK" fieldType="varchar" /> </table> <query name="TIMEPLAN1" from="TIMEPLAN" /> <table name="KEYTEST" defaultVisibleFields="key1,key2,key3,key4" > <field name="KEY_1" fieldType="varchar" size="10" isKey="true"/> <field name="KEY_2" fieldType="varchar" size="10" isKey="true"/> <field name="KEY_3" fieldType="varchar" size="10" isKey="true"/> <field name="KEY_4" fieldType="int" isKey="true"/> </table> <table name="BLOBTEST"> <field name="NAME" fieldType="varchar" isKey="true" /> <field name="FILE" fieldType="DISKBLOB" directory="c:/tmp" encoding="true" size="1200" /> <interceptor className = "interceptors.BLOBTESTEventInterceptor"/> </table> <query name="BOOK_QUERY_WHERE" from="BOOK" where="BOOK_ID=1" > <field name="BOOK_ID" fieldType="int" isKey="true" autoInc="true"/> <field name="ISBN" fieldType="varchar" /> <field name="AUTHOR_ID" fieldType="int" isKey="true" /> <field name="TITLE" fieldType="varchar" isKey="true" /> </query> <query name="AUTHOR_CLASSIC" from="AUTHOR" > <field name="AUTHOR_ID" fieldType="int" isKey="true" autoInc="true"/> <field name="NAME" fieldType="varchar" sortable="true"/> <field name="ORGANISATION" fieldType="varchar" sortable="true"/> <events> <event type="insert" id="insertClassic"/> <event type="update" id="updateClassic"/> <event type="delete" id="deleteClassic"/> <event type="navGoto" id="navGotoClassic"/> <event type="navPrev" id="navPrevClassic"/> <event type="navNext" id="navNextClassic"/> <event type="navFirst" id="navFirstClassic"/> <event type="navLast" id="navLastClassic"/> </events> </query> <table name="LIBRARY"> <field name="LIBRARY_ID" fieldType="int" isKey="true" autoInc="true"/> <field name="COMPANYNAME" fieldType="varchar" sortable="true"/> </table> <table name="CUSTOMER"> <field name="CUSTOMER_ID" fieldType="int" isKey="true" autoInc="true"/> <field name="NAME" fieldType="varchar" sortable="true"/> </table> <table name="CUSTOMER_LIBRARY"> <field name="LIBRARY_ID" fieldType="int" isKey="true" /> <field name="CUSTOMER_ID" fieldType="int" isKey="true" /> </table> <query name="BOOKCOUNT" from="AUTHOR, BOOK" where="BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID" groupBy="NAME" > <field name="NAME" fieldType="char" /> <field name="C" fieldType="integer" expression="count(ISBN)"/> </query> <query name="BLOBINTERCEPTORTEST" from="BLOBTEST" > <field name="NAME" fieldType="varchar" isKey="true" /> <field name="FILENAME" fieldType="varchar" /> <field name="FILEDATA" fieldType="BLOB" /> <interceptor className = "org.dbforms.event.BlobInterceptor"> <param name="blob-column" value="FILEDATA"/> <param name="name-column" value="FILENAME"/> </interceptor> </query> <!-- ========== event definition for classic data access =================================== --> <events> <database-events> <database-event id="insertClassic" type="insert" className="org.dbforms.event.classic.InsertEvent" /> <database-event id="updateClassic" type="update" className="org.dbforms.event.classic.UpdateEvent" /> <database-event id="deleteClassic" type="delete" className="org.dbforms.event.classic.DeleteEvent" /> </database-events> <navigation-events> <navigation-event id="navGotoClassic" type="navGoto" className="org.dbforms.event.classic.GotoEvent" /> <navigation-event id="navPrevClassic" type="navPrev" className="org.dbforms.event.classic.NavPrevEvent" /> <navigation-event id="navNextClassic" type="navNext" className="org.dbforms.event.classic.NavNextEvent" /> <navigation-event id="navFirstClassic" type="navFirst" className="org.dbforms.event.classic.NavFirstEvent" /> <navigation-event id="navLastClassic" type="navLast" className="org.dbforms.event.classic.NavLastEvent" /> </navigation-events> </events> <!-- ========== Connection =================================== --> <dbconnection isPow2 = "true" connectionProviderClass = "org.dbforms.conprovider.SingleConnectionProvider" name = "jdbc:hsqldb:$(SERVLETCONTEXT_REALPATH)/WEB-INF/db_hsqldb/bookstore" isJndi = "false" conClass = "org.hsqldb.jdbcDriver" username = "sa" password = "" /> <dbconnection id="asoexdb" isPow2 = "true" connectionProviderClass = "org.dbforms.conprovider.SingleConnectionProvider" name = "jdbc:hsqldb:$(SERVLETCONTEXT_REALPATH)/WEB-INF/db_hsqldb/bookstore" isJndi = "false" conClass = "org.hsqldb.jdbcDriver" username = "sa" password = "" /> </dbforms-config>
bookstore.properties
Description: Binary data
bookstore.script
Description: Binary data
drop table book; drop table author; -- ----------------------------------------------------------------------- -- author -- ----------------------------------------------------------------------- create table author ( author_id INTEGER NOT NULL IDENTITY , name VARCHAR (50) NOT NULL , organisation VARCHAR (50) ); -- ----------------------------------------------------------------------- -- book -- ----------------------------------------------------------------------- create table book ( book_id INTEGER NOT NULL IDENTITY, isbn VARCHAR (15) NOT NULL , author_id INTEGER NOT NULL , title VARCHAR (255) DEFAULT 'N/A' NOT NULL , FOREIGN KEY (author_id) REFERENCES author (author_id) ); CREATE INDEX book_isbn ON book (isbn); CREATE TABLE TIMEPLAN ( time TIMESTAMP PRIMARY KEY, REMARK VARCHAR(255) ); create table booksection ( book_id INTEGER NOT NULL, author_id INTEGER NOT NULL , section_id INTEGER NOT NULL, author_introduction VARCHAR (255) DEFAULT 'N/A' NOT NULL , FOREIGN KEY (author_id) REFERENCES author (author_id) ); -- ----------------------------------------------------------------------- -- insert some data -- ----------------------------------------------------------------------- INSERT INTO AUTHOR (author_id, name, organisation) VALUES(1, 'Eco, Umberto','organisation 1'); INSERT INTO AUTHOR (author_id, name, organisation) VALUES(2, 'uuuuuuDouglas, Adam','organisation 2'); INSERT INTO BOOK (book_id, isbn, author_id, title) VALUES(1, '3-423-12445-4',1,'Die Insel des vorigen Tages'); INSERT INTO BOOK (book_id, isbn, author_id, title) VALUES(2, '3-423-12445-5',1'Das Foucaltsche Pendel'); INSERT INTO BOOK (book_id, isbn, author_id, title) VALUES(3, '42-1',2,'uuuuuuHijacking through the Galaxy 1'); INSERT INTO BOOK (book_id, isbn, author_id, title) VALUES(4, '42-2',2,'Hijacking through the Galaxy 2'); INSERT INTO BOOK (book_id, isbn, author_id, title) VALUES(5, '42-3',2,'Hijacking through the Galaxy 3'); INSERT INTO BOOK (book_id, isbn, author_id, title) VALUES(6, '42-4',2,'Hijacking through the Galaxy 4'); INSERT INTO BOOK (book_id, isbn, author_id, title) VALUES(7, '42-5',2,'Hijacking through the Galaxy 5'); INSERT INTO TIMEPLAN (time, remark) values ('2001-10-10', '1. Testvalue'); INSERT INTO TIMEPLAN (time, remark) values ('2001-10-11', '2. Testvalue'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(1,1,1,'My first introduction by Umberto Eco - in book 1 by author 1'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(1,1,2,'My second introduction by Umberto Eco - in book 1 by author 1'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(1,1,3,'My third introduction by Umberto Eco - in book 1 by author 1'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(1,1,4,'My fourth introduction by Umberto Eco - in book 1 by author 1'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(2,1,1,'My first introduction by Umberto Eco - in book 2 by author 1'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(2,1,2,'My second introduction by Umberto Eco - in book 2 by author 1'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(2,1,3,'My third introduction by Umberto Eco - in book 2 by author 1'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(2,1,4,'My fourth introduction by Umberto Eco - in book 2 by author 1'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(2,1,4,'My fifth introduction by Umberto Eco - in book 2 by author 1'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(3,1,1,'My first introduction by Adam Douglas - in book 3 by author 2'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(3,1,2,'My second introduction by Adam Douglas - in book 3 by author 2'); INSERT INTO BOOKSECTION (book_id, authord_id, section_id, author_introduction) VALUES(3,1,3,'My third introduction by Adam Douglas - in book 3 by author 2');