我有一个功能:

def tong_thoigian (self,cr,uid,ids,context={}):
                obj=self.browse(cr,uid,ids,context=context)[0]
                cr.execute('''select name,giolam from x_giolam where name=%s'''%(obj.ma_luong))
                kq=cr.fetchall()
                tong=0.00000
                for i in kq:
                      tong+=kq[1]
                self.write(cr,uid,ids,{'tonggiolam':tong},context=context)


这是表x_giolam:

class x_giolam(osv.osv):
    _name = 'x_giolam'
    _description = 'Gio Lam'
    _columns = {
                        'name': fields.integer('Lọai',size=64,required="true"),
                        'giolam' : fields.float('Gio lam',size=64,required="True"),
                        'time_in': fields.char('Gio vào',size=20),
                        'time_out' :fields.char('Gio về',size=20),
                        'congviec' :fields.char('Cong viec',size=50),
    }
x_giolam()


而“自我”是表x_salary,我认为这并不重要,因为当表x_salary的名称= Ma_luong时,我想编写一个用于职员总薪水的函数
错误是

IndexError: list index out of range


乔拉姆的类型是浮动的...
我在openerp中写
而且我认为'tong + = kq [1]'行中有错误
我该如何解决?
谢谢!!

最佳答案

使用我的魔幻水晶球,我猜测cr.execute是对标准数据库API的调用。因此,kr.fetchall()将返回一个行的元组。但是,看来您的SQL仅返回单行。

您可能指的是tong += kq[0][1],即结果第一行的第二列(giolam)。或者,使用kr.fetchone()仅获得一行,然后可以将其保留为kq[1]。无论哪种方式,都应检查数据库调用是否确实返回了结果。

08-20 03:35