Foxtable(狐表)用户栏目专家坐堂 → 查询最后3条记录后做判断


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

主题:查询最后3条记录后做判断

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
查询最后3条记录后做判断  发帖心情 Post By:2019/1/15 16:55:00 [只看该作者]

Dim r As dataRow
drn = Tables("表A").addnew(1)
........
Dim drs As List(of DataRow) = DataTables("表A").SQLSelect("编号 =" & r("编号"), top 3, order by 日期 Desc, "数据源")
dim dr As DataRow In drs
if dr("工作状态") = "工作"
drn("工作状态") = "休息"
else
drn("工作状态") = "工作"
end if
.............

想要达到的效果: 查询此编号人员最后三次的工作状态,如果都是 工作,新增的一条记录的工作状态就是 休息, 否则还是要 工作。
请问写法是这样吗?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 17:18:00 [只看该作者]

Dim drs As List(of DataRow) = DataTables("表A").SQLSelect("编号 =" & r("编号"), 3, "日期 Desc")

 

http://www.foxtable.com/webhelp/scr/2900.htm

 


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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2019/1/15 17:27:00 [只看该作者]

甜,我之前也是看的这页帮助, 只有修改,累计的方法, 没有判断的方法。。。

Dim drs As List(of DataRow) = DataTables("表A").SQLSelect("编号 =" & r("编号"), 3, "日期 Desc")

if drs("工作状态") = "工作"
drn("工作状态") = "休息"
else
drn("工作状态") = "工作"
end if

这样写可能是错的吧,我还没试。
[此贴子已经被作者于2019/1/15 17:32:41编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 17:32:00 [只看该作者]

 

没看懂你的意思,做个例子发上来,说明要做什么。

 

 


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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2019/1/15 17:38:00 [只看该作者]

比如编号为001的某个人, 他的最后3次工作状态是:
编号(列)        工作状态(列)
001                 工作
001                 工作
001                 工作
Dim drs As List(of DataRow) = DataTables("表A").SQLSelect("编号 =" & r("编号"), 3, "日期 Desc")
‘ 通过这个查询, 查出上面的工作状态都是 工作
然后新增一行 drn = Tables("表A").addnew(1),此人员的工作状态就要显示 休息
drn("工作状态") = "休息"
else
drn("工作状态") = "工作"
’ 按照工作三次后,休息一次 这个规律。


如果查出来是这样: 
编号(列)        工作状态(列)
001                 工作
001                 休息
001                 工作
最后这三次中有一次是休息,就说明还要继续工作。’ 按照工作三次后,休息一次 这个规律。



[此贴子已经被作者于2019/1/15 17:40:24编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 17:43:00 [只看该作者]

Dim flag As Boolean = True
For Each dr As DataRow In drs
    If dr("工作状态") = "休息" Then
        flag = False
        Exit For
    End If
Next
If flag = True Then
    dm("工作状态") = "休息"
Else
    dm("工作状态") = "工作"
End If

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2019/1/15 18:08:00 [只看该作者]

PERFECT, it solved my problem, thanks, tian :


Dim flag As Boolean = True    ‘ 定义flag为逻辑型,值为真
For Each dr As DataRow In drs
    If dr("工作状态") = "休息" Then   ’查询的记录行有 休息的
        flag = False  ' flag就是假
        Exit For  ‘然后退出
    End If
Next  
If flag = True Then ‘如果是真,下面操作就。。
    dm("工作状态") = "休息"  
Else  ’如果是假,下面操作就。。
    dm("工作状态") = "工作"
End If

是这样吧, 第一次接触逻辑型数值,谢谢甜。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 18:10:00 [只看该作者]

是的。


 回到顶部