结账时提示:不能在对象 't_Balance' 中插入重复键

    用户在使用金蝶专业版财务期末结账时提示:


    错误代码:3631(E2FH)


    Source :Microsoft OLE DB Provider for SQL ServerDetail :违反了 PRIMARY KEY 约束 'pk_Balance'。


    不能在对象 't_Balance' 中插入重复键。


    能继续反结帐到以前期间,反结后也能继续结帐到本期,但从本期向下一期结账时系统仍然报以上的错误。


    问题分析:


    1、从提示的Detail可以看出,这是因为账套中存在错误的数据,从而导致如果结账的话将在数据库中产生重复的记录。


    2、这种情况基本上都发生在余额表中保存了当前期间以后的数据。造成产生这样的数据的可能原因是曾经进行过期末结账,但是在结账过程中遇到意外错误造成程序无法将数据还原。


    3、账套结账的原理:根据当期期末数据,形成下期的期初数据。那么在进行期末结账之前,在余额表中不应该存在当前期间以后的数据。


    问题处理:


    这种情况下的错误,一般需要使用SQL语句来处理。建议在备份账套的情况下,在查询分析器中选择正确的账套数据库实体后,执行以下SQL再结账。


    go


    declare @Fyear int,@Fperiod int


    select @Fyear=fvalue from t_systemprofile where fkey='currentyear' and fcategory='gl'


    select @Fperiod=fvalue from t_systemprofile where fkey='currentperiod' and fcategory='gl'


    delete from t_balance where fyear*100+fperiod>@Fyear*100+@Fperioddelete from t_profitandloss where fyear*100+fperiod>@Fyear*100+@Fperioddelete from t_quantitybalance where fyear*100+fperiod>@Fyear*100+@Fperiodgo


    注:这种错误的处理,同样适用于KIS商贸版、K/3账套。


    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的结账服务的代码示例: ```python class CheckoutService: def __init__(self, menu): self.menu = menu def checkout(self, order): # 遍历订单的每个菜品,计算总价 total_price = 0 for item in order.items: menu_item = self.menu.get_item(item.name) total_price += menu_item.price * item.quantity # 显示菜单和总价,等待顾客确认并结账 print("本次订单菜单如下:") for item in order.items: print(f"{item.name} x {item.quantity} = {menu_item.price * item.quantity}") print(f"总价:{total_price}") # 等待顾客确认并结账 confirmed = False while not confirmed: input_str = input("请确认订单并输入支付金额(输入q取消结账):") if input_str == 'q': print("结账已取消") return try: payment = float(input_str) if payment < total_price: print("支付金额不足,请重新输入") else: confirmed = True change = payment - total_price print(f"找零:{change}") except ValueError: print("输入无效,请重新输入") # 更新订单状态为已付款 order.status = "paid" print("结账成功!") ``` 这个结账服务包含一个 `CheckoutService` 类,它的 `checkout` 方法接收一个订单参数,并根据菜单和订单计算出总价,并显示菜单和总价等待顾客确认并结账。如果顾客输入的支付金额不足,则要求重新输入;如果支付金额足够,则更新订单状态为已付款,并显示找零金额。如果顾客取消结账,则直接退出结账流程。 需要注意的是,这个代码示例并没有考虑到并发情况和异常处理等问题,仅供参考。在实际开发,您需要根据具体需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值