Foxtable(狐表)用户栏目专家坐堂 → SQL外部数据源查找时,当[_sortkey]存在相同重复值时


  共有2482人关注过本帖树形打印复制链接

主题:SQL外部数据源查找时,当[_sortkey]存在相同重复值时

帅哥哟,离线,有人找我吗?
L88919138
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:714 积分:6811 威望:0 精华:0 注册:2012/3/1 7:20:00
SQL外部数据源查找时,当[_sortkey]存在相同重复值时  发帖心情 Post By:2016/9/14 17:13:00 [只看该作者]

下面代码在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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:714 积分:6811 威望:0 精华:0 注册:2012/3/1 7:20:00
  发帖心情 Post By: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] 值重复时最后一个值。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106566 积分:541995 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:714 积分:6811 威望:0 精华:0 注册:2012/3/1 7:20:00
  发帖心情 Post By:2016/9/14 18:06:00 [只看该作者]

非常感谢大师们指点,回家去试试


 回到顶部
帅哥哟,离线,有人找我吗?
L88919138
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:714 积分:6811 威望:0 精华:0 注册:2012/3/1 7:20:00
  发帖心情 Post By: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 "

 回到顶部