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)修改第一個循環,不要查詢直接寫入,要注意不能覆蓋數據
时间: 2024-02-10 22:09:12 浏览: 82
PL-SQL用户指南与参考
好的,你的问题是修改第一个循环,直接写入而不是查询是否存在后再加上数量,但要注意不能覆盖已有数据。那么可以这样修改代码:
```
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)
```
这样修改后,如果在记录表中找到了对应的物料名称,就直接将数量加上去,不再进行添加行的操作。但是要注意不能覆盖已有数据,因此需要在找到对应行后直接退出函数。
阅读全文