以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQL外部数据源查找时,当[_sortkey]存在相同重复值时 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90511) |
-- 作者:L88919138 -- 发布时间:2016/9/14 17:13:00 -- SQL外部数据源查找时,当[_sortkey]存在相同重复值时 下面代码在SQL外部数据源查找时,当[_sortkey]存在相同重复值时([_sortkey]在局域网络使用时,有一定概率是相同值),往来是取第一个值,但我想用的是最后一个值,代码应如何改进? Dim cmd As new SQLCommand cmd.cfont-family: 宋体; font-size: 12px;">鲜迪数据库" For Each dr As DataRow In DataTables("存货档案").DataRows cmd.CommandText = "Select top 1 余额 Fro m {存货账} Where 商品名称 = \'" & dr("存货名称") & "\' and 余额 is not null order by [_sortkey] desc " If cmd.CommandText IsNot Nothing dr("账面数量") = cmd.executescalar Else dr("账面数量") = 0 End If Next |
-- 作者:狐狸爸爸 -- 发布时间:2016/9/14 17:37:00 -- Dim cmd As new SQLCommand cmd.cfont-family: 宋体; font-size: 12px;">鲜迪数据库" For Each dr As DataRow In DataTables("存货档案").DataRows cmd.CommandText = "Select top 1 余额 Fro m {存货账} Where 商品名称 = \'" & dr("存货名称") & "\' and 余额 is not null order by [_Identify] desc " If cmd.CommandText IsNot Nothing dr("账面数量") = cmd.executescalar Else dr("账面数量") = 0 End If Next |
-- 作者:L88919138 -- 发布时间:2016/9/14 17:57:00 -- 老大, cmd.CommandText = "Select top 1 余额 Fro m {存货账} Where 商品名称 = \'" & dr("存货名称") & "\' and 余额 is not null order by [_Identify] desc ",以前有用过;但在流水账实际应用中,发现有时要在流水账中间插入一条记录(假设这是最后一次操作),此时中间 插入这一条记录[_Identify]却是最后一条,不是流水账中我想要最后计算结果,因此后来才改用 [_sortkey] 来判断流水账最后一条记录。但在采用SQL外部数据源时,当两台以上电脑同时打开数据库,同时输入同一个商品时(这种概率很低,但有可能会发生),就有可能发生[_sortkey] 值重得,且是同一商品名称,虽说用重置[_sortkey] 值可以一定程度上避开这个错误,但这个操作也不可能太经常操作,这时我想要用SQL语句来判定取值在同一商品名称当[_sortkey] 值重复时最后一个值。 |
-- 作者:有点蓝 -- 发布时间:2016/9/14 18:03:00 -- 增加一个日期列咯 cmd.CommandText = "Select top 1 余额 Fro m {存货账} Where 商品名称 = \'" & dr("存货名称") & "\' and 余额 is not null order by [_sortkey] desc,日期 desc "
|
-- 作者:L88919138 -- 发布时间:2016/9/14 18:06:00 -- 非常感谢大师们指点,回家去试试 |
-- 作者:L88919138 -- 发布时间:2016/9/15 6:20:00 -- 最终实验是用下面代码效果最好,因为当两台以上电脑同时打开数据库,同时输入同一个商品时,他们日期往往也是一样的,但相同sortkey值最后面一条记录的[_Identify] 值往往是最大的,因此用这个判定相对较科学些。谢谢两位大师指点
cmd.CommandText = "Select top 1 余额 Fro m {存货账} Where 商品名称 = \'" & dr("存货名称") & "\' and 余额 is not null order by [_sortkey] desc,[_Identify] desc "
|