asp.net三层架构商城购买商品后数量减少的疑惑

漓唐 2019-01-21 09:14:56
DataSet dk = bll4.GetData1(" a.*,quan,lname", " a.pid=b.pid and lname='"+Session["name"].ToString()+"'");



if (dk != null && dk.Tables.Count > 0 && dk.Tables[0].Rows.Count >0)
{

foreach (DataRow dr in dk.Tables[0].Rows)
{
bll4.ExecuteUpdate1(" kc=kc-" + dr["quan"].ToString(), " stores.pid=shopcar.pid and lname='"+Session["name"].ToString()+"'" );
}
}
这是实现的代码。 思路是从库存减去购物车中某商品数量。 购物车只有一件产品的时候,购买后库存减少正常,但当购物车是两件的时候,每件产品减少的库存等于两件产品购买的综合,相当于执行了两遍,有没有大哥告诉一下解决办法或者思路》
...全文
1053 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
還是 2019-01-25
  • 打赏
  • 举报
回复
引用 17 楼 漓唐 的回复:
[quote=引用 15 楼 還是 的回复:] 购物车有三件产品时会执行三次吗, foreach这里面不需要匹配到对应的产品吗?
不晓得 这样没法找到指定产品减相应的库存 每件产品的库存都减去了购物车所有产品数量总和 算是执行三遍吧?[/quote] 减去“购物车所有产品数量总和”, 比如库存10个苹果,购物车,苹果、香蕉、梨子,执行后还剩7个苹果? 各减各的吧,遍历购物车(每种品种肯定有自己的唯一标识),根据购物车各品种,计算各品种库存量。
SinGooCMS 2019-01-25
  • 打赏
  • 举报
回复
我在写asp的时候才这样写
wanghui0380 2019-01-25
  • 打赏
  • 举报
回复
居然还在讨论,我们的建议是停止讨论

楼主是学生,那么立刻到图书馆借本“会计学原理”----------略掉前面会计学历史,什么四柱记账,意大利文艺复兴这些章节
直接看基本公式,然后再查查什么叫“永续盘存制”

这类系统基本准则就是,人类先人的智慧无穷。看看人类先人的智慧,然后再考虑计算机怎么仿造人类智慧

你这个东西加加减减不郁闷么?我反悔了,你在加上去么?2000个人一起提交,怎么加加减减?基数是200,2个一起来一个人20,你真能保证他是200-2*20=160

luj_1768 2019-01-25
  • 打赏
  • 举报
回复
能否解释一下核心查询句法!就是最后那段bll4.开始的长句。代码写得狗屁不通!
漓唐 2019-01-25
  • 打赏
  • 举报
回复
苹果 香蕉 梨子都是1个的话 执行完 苹果库存就是七个 我这个sql语句应该是一对一关联了啊?
漓唐 2019-01-24
  • 打赏
  • 举报
回复
引用 15 楼 還是 的回复:
物车有三件产品时会执行三次吗, foreach这里面不需要匹配到对应的产品吗?
不晓得 这样没法找到指定产品减相应的库存 每件产品的库存都减去了购物车所有产品数量总和 算是执行三遍吧?
漓唐 2019-01-24
  • 打赏
  • 举报
回复
引用 14 楼 大然然 的回复:
也就是说你最后的语句是: update stores set kc=kc-xxx from stores,shopcar where stores.pid=shopcar.pid and lname=xxxxxxx 咯?
是 但这样没法找到指定产品减相应的库存
還是 2019-01-24
  • 打赏
  • 举报
回复
物车有三件产品时会执行三次吗, foreach这里面不需要匹配到对应的产品吗?
大然然 2019-01-24
  • 打赏
  • 举报
回复
也就是说你最后的语句是: update stores set kc=kc-xxx from stores,shopcar where stores.pid=shopcar.pid and lname=xxxxxxx 咯?
漓唐 2019-01-24
  • 打赏
  • 举报
回复
漓唐 2019-01-24
  • 打赏
  • 举报
回复
这是业务逻辑层 public int ExecuteUpdate1(string updatefield, string wheres) { return dal.ExecuteUpdate1(updatefield, wheres); } 这是sql 访问 public int ExecuteUpdate1(string updatefield, string wheres) { string sql = "update stores set " + updatefield +"from stores,shopcar" +" where " + wheres; return SqlHelper.ExecuteNonQuery(sql); } 这是shopcar表 这是stores表
大然然 2019-01-23
  • 打赏
  • 举报
回复
你把 bll4.ExecuteUpdate1(" kc=kc-" + dr["quan"].ToString(), " stores.pid=shopcar.pid and lname='"+Session["name"].ToString()+"'" ); 最后生成的sql语言完整的贴出来
  • 打赏
  • 举报
回复
一般的“学生作业”无法专业要求。先把最基本的低级编程调试搞懂就不错了啦! 对于业务编程人员,涉及资金的业务管理,自然就是动不动就“update、delete”了。而专业的商业管理软件产品,你会看到他们打死也不胡乱执行 update、delete 操作的。
  • 打赏
  • 举报
回复
可能我没说清楚,再重新说明一下。 所谓现代会计处理的概念其实非常不俗,它据说在2000多年前由印度的黑人奴隶发明的,它具有现代大数据、甚至区块链处理的基本特征。类似与“库存”这种数据的日账数据从来不减,也不加,从来不修改。而是每天夜间将前一天的日结数据与当天的发生数据进行合并,产生当天的日结数据。再加上会计凭证复式记账法,任何一笔复杂凭证的资金都是借贷平衡的,可以双向自相核对数字准确性。 许多业务处理底层其实是基于会计记账系统核心架构,只不过上层用业务凭单对象作为会计凭证的备注而已。这类处理系统坚固、稳定,在进行日常成本等等资金核算和查询时又异常快速。所以懂会计系统的人设计涉及金钱交易的软件,有着先天的优势。有复式记账思路的人设计基本的业务资金管理软件,才专业。 当然啦,对于只知道一点增删改查或者 html/css 的只是做作业的实习生,领域知识太少,还需要至少学习5年业务和财务管理知识,再设计零售业软件。
  • 打赏
  • 举报
回复
会计账是基于日记总账和(复式)凭证过账流程来记录的。例如前一天的某某商品库存剩余数量是10,一笔凭证上此商品库存数量发生数量为 -2,那么整个凭证过账之后,此商品库存数量就变为 8 了。 如果只是简单地普通人记个类似流水账,不搞会计凭证复式记账架构设计,那么就不用这类概念。
wanghui0380 2019-01-22
  • 打赏
  • 举报
回复
楼上已经说了,库存怎么处理

我只说购物车别管,你产生订单/付款的时候在说

如果京东购物车里常年放70多种单品(我相信很多人也都这样),如果你要年购物车都算,那京东库存量到底要多少
  • 打赏
  • 举报
回复
贴出你的所谓 ExecuteUpdate1 向数据库发送的 sql 语句。
丰云 2019-01-22
  • 打赏
  • 举报
回复
还是先学学专业的商品库存管理规则,再写代码吧,否则亏到死。。。
漓唐 2019-01-22
  • 打赏
  • 举报
回复
引用 2 楼 丰云 的回复:
还是先学学专业的商品库存管理规则,再写代码吧,否则亏到死。。。
学生作品,处于学习学习
漓唐 2019-01-22
  • 打赏
  • 举报
回复
引用 4 楼 wanghui0380 的回复:
楼上已经说了,库存怎么处理

我只说购物车别管,你产生订单/付款的时候在说

如果京东购物车里常年放70多种单品(我相信很多人也都这样),如果你要年购物车都算,那京东库存量到底要多少
我这个是当他点击购买之后 再让库存减去购物车的量
加载更多回复(2)

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧