when you use checkboxes with the same name or for that matter similar names <input name="..."> in a form, the item in the REQUEST variable is a list or in case of Zope a list-string of the form "['a','b','c']". Write a python script to convert it to a list. If you need one I can give it to you altho I must confess I am not an expert in Python. AM J.H.Whalley wrote:
Hi,
Please excuse a dumb newbie question. I've been trawling mailing list archives and documentation for clues and am getting nowhere. So far I've done most of what I need to do with DTML and relying on Znolk for working out basic code for handling external databases, so I'm probably missing something really obvious here.
I'm using Zope 2.4.3 on NT4 connecting to Access databases via ZODBC DA.
I'm having trouble updating a set of records in an external DB, selecting the records using checkboxes on a form. Code is below.
The form appears to be producing the expected list of integers which are the record ids which need updating: if I get the results page to just display action_list it comes out as [15, 18] etc.
ActionUpdateMethod works fine when I test it with a single record number.
The results page should iterate over the list of record ids and update each record in turn.
What actually happens is I get an error message:
Error Type: sql.error Error Value: ('22005', -3030, '[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.')
Which looks like it isn't an integer which is getting passed via the SQL. Yet as far as I can see, the list is a list of integers, the ZSQL argument tells it it's an integer and the sqlvar tag tells it it's an integer.
What am I doing wrong?
Relevant code:
Form (DTML document - extraneous stuff cut):
<form action="ActionUpdateResult" method="post">
<dtml-in ActionListMethod> <strong>Action:</strong> <input type="checkbox" name="action_list:int:list" value="<dtml-var ejournal_id>" checked> </dtml-in>
<input type="submit" value="Action selected items"> </form> --------------------------------------------------------
ActionUpdateResult (DTML-document - results page):
<dtml-in action_list> <dtml-call "ActionUpdateMethod(ejournal_id=_['sequence-item'])"> </dtml-in> --------------------------------------------------------
ActionUpdateMethod (ZSQL method):
Arguments: ejournal_id:int actioned_date="<dtml-var ZopeTime fmt=%d/%m/%Y>"
update new_ejournals set actioned_date=<dtml-sqlvar actioned_date type=string > where ejournal_id=<dtml-sqlvar ejournal_id type=int> --------------------------------------------------------
TIA for any light you can shed, John Whalley
-- * John Whalley, Crewe Site Library, Manchester Metropolitan University * email: J.H.Whalley@mmu.ac.uk * Phone: (+44) 161 247 5220 (UK) * Usual disclaimer applies...........
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
-- ================================================================== Aseem Mohanty Neurobehavioral Systems Inc, 828 San Pablo Ave, Albany, CA 94706 (R) 510 7696011 (M) 510 3014871 (O) 510 5279231 ================================================================== "I saw `cout' being shifted "Hello world" times to the left and stopped right there!!" -- Steve Gonedes ==================================================================