以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  查询最后3条记录后做判断  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=130194)

--  作者:cyrollin
--  发布时间:2019/1/15 16:55:00
--  查询最后3条记录后做判断
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
.............

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

--  作者:有点甜
--  发布时间: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
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间:2019/1/15 17:32:00
--  

 

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

 

 


--  作者:cyrollin
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间: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
--  发布时间: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

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

--  作者:有点甜
--  发布时间:2019/1/15 18:10:00
--  

是的。