# 在数据表中查找物料名称 for row in self.data_sheet.iter_rows(min_row=2): if row[0].value == material_name: # 如果找到了,将数量减去 if row[1].value >= material_qty: row[1].value -= material_qty break else: tk.messagebox.showerror("错误", "库存不足") break修改這段代碼如果找到了就將數量減去,在添加一個如果減去后數量等於0,就將整行刪除
时间: 2024-02-10 17:13:38 浏览: 89
修改后的代码如下:
```
for row in self.data_sheet.iter_rows(min_row=2):
if row[0].value == material_name:
# 如果找到了,将数量减去
if row[1].value >= material_qty:
row[1].value -= material_qty
# 如果减去后数量为0,删除整行
if row[1].value == 0:
self.data_sheet.delete_rows(row[0].row)
break
else:
tk.messagebox.showerror("错误", "库存不足")
break
```
在这里,我们在判断如果减去后数量为0的情况下,使用`delete_rows`函数将整行删除。
相关问题
def in_stock(self): # 获取物料名称和数量 material_name = self.material_name.get() material_qty = int(self.material_qty.get()) # 在记录表中查找物料名称 for row in self.record_sheet.iter_rows(min_row=2): if row[0].value == material_name: # 如果找到了,将数量加上去 row[1].value += material_qty break else: # 如果没有找到,就在记录表中添加一行 row = (material_name, material_qty) self.record_sheet.append(row) # 在数据表中查找物料名称 for row in self.data_sheet.iter_rows(min_row=2): if row[0].value == material_name: # 如果找到了,将数量加上去 row[1].value += material_qty break else: # 如果没有找到,就在数据表中添加一行 row = (material_name, material_qty) self.data_sheet.append(row) # 保存Excel文件 self.wb.save(r"C:\Users\bing3_chen\Desktop\1.xlsx") # 清空文本框 self.material_name.delete(0, tk.END) self.material_qty.delete(0, tk.END)修改第一個循環,不要查詢直接寫入,要注意不能覆蓋數據
好的,你的问题是修改第一个循环,直接写入而不是查询是否存在后再加上数量,但要注意不能覆盖已有数据。那么可以这样修改代码:
```
def in_stock(self):
# 获取物料名称和数量
material_name = self.material_name.get()
material_qty = int(self.material_qty.get())
# 在记录表中查找物料名称
for row in self.record_sheet.iter_rows(min_row=2):
if row[0].value == material_name:
# 如果找到了,将数量加上去
row[1].value += material_qty
# 注意不能覆盖已有数据,直接退出函数
return
# 如果没有找到,就在记录表中添加一行
row = (material_name, material_qty)
self.record_sheet.append(row)
# 在数据表中查找物料名称
for row in self.data_sheet.iter_rows(min_row=2):
if row[0].value == material_name:
# 如果找到了,将数量加上去
row[1].value += material_qty
break
else:
# 如果没有找到,就在数据表中添加一行
row = (material_name, material_qty)
self.data_sheet.append(row)
# 保存Excel文件
self.wb.save(r"C:\Users\bing3_chen\Desktop\1.xlsx")
# 清空文本框
self.material_name.delete(0, tk.END)
self.material_qty.delete(0, tk.END)
```
这样修改后,如果在记录表中找到了对应的物料名称,就直接将数量加上去,不再进行添加行的操作。但是要注意不能覆盖已有数据,因此需要在找到对应行后直接退出函数。
def out_stock(self):#出庫函數 # 获取物料名称和数量 material_name = self.material_name.get() material_qty = int(self.material_qty.get()) be = "出庫" material_qty3 = (self.material_qty3.get()) material_qty4 = (self.material_qty4.get()) material_qty5 = (self.material_qty5.get()) material_qty6 = (self.material_qty6.get()) material_qty7 = (self.material_qty7.get()) material_qty8 = (self.material_qty8.get()) material_qty9 = (self.material_qty9.get()) # 在数据表中查找物料名称 for row in self.data_sheet.iter_rows(min_row=2): if row[0].value == material_name: # 在记录表中添加一行 row = (material_name, material_qty,material_qty3,material_qty4,material_qty5,material_qty6,material_qty7,material_qty8,material_qty9, be) self.record_sheet.append(row) # 在数据表中查找物料名称 for row in self.data_sheet.iter_rows(min_row=2): if row[0].value == material_name: # 如果找到了,将数量减去 if row[1].value >= material_qty: row[1].value -= material_qty break else: tk.messagebox.showerror("错误", "库存不足") break else: # 如果没有找到,就在数据表中添加一行 tk.messagebox.showerror("错误", "库存不足") # 保存Excel文件 self.wb.save(r"C:\Users\bing3_chen\Desktop\1.xlsx")將這段代碼中獲取的值分別寫入指定的列中
这段代码实现了从excel表格中获取物料名称和数量,然后将数量减少,并将减少的记录添加到记录表中。在这个过程中,将获取到的值写入到指定的列中。
具体来说,self.material_name.get()获取物料名称,int(self.material_qty.get())获取物料数量,self.material_qty3.get()~self.material_qty9.get()获取其他需要记录的信息。然后通过在数据表中查找物料名称,确定需要修改的行,将数量减去,并将这些信息写入到记录表中。最后将Excel文件保存。
在代码中,通过修改row的值,将获取到的值分别写入到指定的列中。例如:row = (material_name, material_qty,material_qty3,material_qty4,material_qty5,material_qty6,material_qty7,material_qty8,material_qty9, be),将物料名称写入到第1列,物料数量写入到第2列,material_qty3~material_qty9依次写入到第3~9列。
阅读全文