Hi group
running Version 2.20.4-stable+timestamp.2020.05.03.05.18.50
with SQL Server 2012 on Win 8.1
I am getting the following error when I try to sum a decimal field in a table:
Traceback (most recent call last):
File "C:\w2p\web2py22004py3\gluon\restricted.py", line 219, in restricted
exec(ccode, environment)
File "C:/w2p/web2py22004py3/applications/scanpak/controllers/default.py", line 1948, in <module>
File "C:\w2p\web2py22004py3\gluon\globals.py", line 430, in <lambda>
self._caller = lambda f: f()
File "C:/w2p/web2py22004py3/applications/scanpak/controllers/default.py", line 1941, in scanvsdoc
ss = db(ti.DocNum == doc).select(ti.ItemCode, scnqtysum, groupby = ti.ItemCode)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\objects.py", line 2634, in select
return adapter.select(self.query, fields, attributes)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\adapters\base.py", line 874, in select
colnames, sql = self._select_wcols(query, fields, **attributes)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\adapters\base.py", line 768, in _select_wcols
query = self.expand(query, query_env=query_env)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\adapters\base.py", line 487, in _expand
rv = op(first, second, **optional_args)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\dialects\base.py", line 406, in eq
self.expand(second, first.type, query_env=query_env),
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\dialects\__init__.py", line 97, in expand
return self.adapter.expand(*args, **kwargs)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\adapters\base.py", line 497, in _expand
rv = self.represent(expression, field_type)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\adapters\base.py", line 430, in represent
return super(SQLAdapter, self).represent(obj, field_type)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\adapters\base.py", line 384, in represent
return self.representer.represent(obj, field_type)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\representers\__init__.py", line 246, in represent
rv = self.get_representer_for_type(field_type)(rv, field_type)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\representers\__init__.py", line 138, in __call__
return self.adapt(self.call(value, field_type))
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\representers\__init__.py", line 135, in _call
return self.inner_call(value)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\representers\__init__.py", line 123, in _inner_call
return self.obj.f(self.representer, value, **kwargs)
File "C:\w2p\web2py22004py3\gluon\packages\dal\pydal\representers\base.py", line 29, in _integer
return str(long(value))
TypeError: __int__ returned non-int (type NoneType)
the code looks like this:
ti = db.itmscan
scnqtysum = ti.scanqty.sum()
ss = db(ti.DocNum == doc).select(ti.ItemCode, scnqtysum, groupby = ti.ItemCode)
and the table definition:
db.define_table('itmscan',
Field('DocNum', 'integer'),
Field('ItemCode', 'string', 20),
Field('Dscription', 'string', 100),
Field('box', 'integer', default=1),
Field('scanqty', 'decimal(19,6)', default=0.0),
Field('scanid', 'string'),
Field('empid', 'string'),
Field('status', 'string'),
Field('spcins', 'string', default=''),
Field('tstamp', 'datetime'),
)I tried adding a represent to the field but it made no difference.
In the code I have a sum on another decimal field from a different table just a few lines before the failing one that works just fine. That field is also decimal(19,6).
Thanks for any help, if I have made a mistake I can't see it.
Denes