Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
29416 Lượt xem

Following is my code chunks that aims to get the sum of fields/columns from a certain table:


        ...
atc_code = nature = ''
_logger.info("\n\t\t\tI was called. My method name is %s"%(str('generate_student_resource_report')))
base = amount = percent = 0.00
for ewt in self.browse(cr,uid,ids,context):
old_history = stud_re_report_line_obj.search(cr, uid, [('parent_id','=',ewt.id)],context=context)
if old_history:
stud_re_report_line_obj.unlink(cr, uid, old_history,context=context)
_logger.info("\n\t\t\tDATE FROM %s\n\t\t\tDATE TO %s"%(str(date_from),str(date_to)))
cr.execute("insert into student_resource_report_line(partner_id,seq,base_amt,\
tax_amt,percent,atc_code,parent_id,\
nature,create_date,write_date)\
select es.partner_id as partner_id,\
(case when es.name like '%WC158%' then 1\
when es.name like '%WC160%' then 2\
when es.name like '%WC010%' then 3\
when es.name like '%WC140%' then 4\
else 0 end) as seq,\
sum(es.base_amount) as base_amt,\
sum(es.tax_amount) as tax_amt,\
(case when es.name like '%EWT 1%%' then '1.00'\
when es.name like '%EWT 2%%' then '2.00'\
when es.name like '%EWT 3%%' then '3.00'\
when es.name like '%EWT 4%%' then '4.00'\
when es.name like '%EWT 5%%' then '5.00'\
when es.name like '%EWT 6%%' then '6.00'\
when es.name like '%EWT 7%%' then '7.00'\
when es.name like '%EWT 8%%' then '8.00'\
when es.name like '%EWT 9%%' then '9.00'\
when es.name like '%EWT 10%%' then '10.00'\
else null end) as percen,\
(case when es.name like '%WC158%' then 'WC158'\
when es.name like '%WC160%' then 'WC160'\
when es.name like '%WC010%' then 'WC010'\
when es.name like '%WC140%' then 'WC140'\
else null end) as atc_code,\
(case when es.name like '%WC158%' then 'NOTEBOOK'\
when es.name like '%WC160%' then 'BACKPACK'\
when es.name like '%WC010%' then 'COLOR'\
when es.name like '%WC140%' then 'BOOKS' else null end) as nature,\
(now()) as create_date,(now()) as write_date,? as parent_id\
from student_resource es where es.date between ? and ? \
group by es.partner_id,es.name",(ewt.id,ewt.date_from,ewt.date_to))
line_list = cr.fetchall()
_logger.info("\n\t\t\tSource ... %s"%(str(line_list)))
list = stud_re_report_line_obj.search(cr,uid,[('parent_id','=',ewt.id)])
lines = [line.id if line.id else False for line in stud_re_report_line_obj.browse(cr,uid,list,context=context)]
value = {
"value" : {
'name' : 'Student Resource Report',
"ewt_line" : lines
}
}
return value

My problem now is that when this method is called, It produce an error. It says:

  File "/opt/openerp/server-7/openerp/sql_db.py", line 226, in execute
res = self._obj.execute(query, params)
IndexError: tuple index out of range


and it also says that my query is bad, I dont know why? Everytime i tried it directly into PgAdmin, it works fine:


2015-08-20 01:00:10,780 5697 ERROR sample_another openerp.sql_db: bad query: insert into student_resource_report_line(partner_id,seq,base_amt, tax_at,percen,atc_code, ...

Any help/suggestion/comments is highly appreciated

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Anirudh,

Sql Insert command's syntax is:
"insert into [your_table_name](optional_your_fields) values([values_to enter in the fields])"

Here 'insert' and 'values' are the keywords and must be there, but i can t see and "values" keyword the in your statement.

Please check out your statement...

Hope it helps you....    

Ảnh đại diện
Huỷ bỏ
Tác giả

Thank you for the reply. But as you see I am copying data from another table so I think it is not necessary to put "values" since its values will be equal to my select statement provided it meet its parameter in "insert into" statement.

ops.... i missed that, ..... thanks for it...can u pls provide your error in detail....

Bài viết liên quan Trả lời Lượt xem Hoạt động
2
thg 12 19
4018
3
thg 8 15
22323
1
thg 3 15
5977
0
thg 3 15
3310
0
thg 2 16
2660