2011-12-22 61 views
1

我有一個函數:錯誤有關獲取數據

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 

Giolam的類型是浮動... 和我寫在openerp ,我認爲錯誤行'tong + = kq [1]' 我該如何解決它? 謝謝!!

回答

1

使用我的魔法水晶球,我猜cr.execute是對標準數據庫API的調用。所以kr.fetchall()將返回一個行元組。但是,你的SQL似乎只返回一行。

您可能的意思是tong += kq[0][1],即結果第一行的第二列(giolam)。或者,使用kr.fetchone()只需獲得一行,然後您可以將其保留爲kq[1]。無論哪種方式,你應該檢查你的db調用實際返回結果。

+0

對不起,你可以幫助我多一次...在表x_giolam這麼多行,我想總結所有關鍵is'name = ma_luong'我不能這樣做 謝謝! – 2011-12-22 18:58:24