以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  主题不见了  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=126939)

--  作者:www111998
--  发布时间:2018/11/1 12:08:00
--  主题不见了
昨天发的一个主题,怎么不见了

想追问个问题
    Dim bds1 As String = "付息日 <= \'" & td & "\'and 付息日 >= \'" & td1 & "\'And 销售员= \'" & name & "\'"
    Dim bds2 As String = "入金时间 <= \'" & td & "\'and 入金时间 >= \'" & td1 & "\'And 销售员= \'" & name & "\'"
    Dim bds As String = "身份证号 in(\'" & DataTables("合同信息表").GetComboListString("身份证号",bds1).Replace("|","\',\'") & "\') and " & bds2

这个代码是表示身份证号在这个集合里面的

想问下,如果要身份证号不在这个集合里面的怎么写代码?
in改成什么?

--  作者:www111998
--  发布时间:2018/11/1 12:11:00
--  
not in
--  作者:有点甜
--  发布时间:2018/11/1 12:16:00
--  

 

Dim bds As String = "身份证号 not in (\'" & DataTables("合同信息表").GetComboListString("身份证号",bds1).Replace("|","\',\'") & "\') and " & bds2

 


--  作者:www111998
--  发布时间:2018/11/1 13:30:00
--  
如有一张表A
  姓名  开始时间   结束时间    数量   新  到    非 
   张三   2018-4-10   2018-10-10   10  是       
   李四   2018-4-21   2018-10-21   20   是      
   王五   2018-5-13   2018-11-13   30   是      
   张三   2018-10-11   2019-4-11   20      是   
   李四   2018-10-20   2019-4-20   20      是   
   王五   2018-10-22   2019-4-22   20      
   是

这样一张表,列“新,到,非”为逻辑列
通过筛选表中第一次的记录,列新为是
条件二,10月中结束的人员,但是在10月又有开始任务的,列“到”为是
条件三,10月有开始时间的人员,但是没有结束时间的,但又不是第一次的人员,列“非”为是
请问老师代码应该怎么写?

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

1、得到唯一值,参考

 

Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "第一列"
For Each dr As DataRow In DataTables("表A").Select("", "第一列,第六列")
   
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c) <> dr(c) Then
                flag = True
                Exit For
            End If
        Next
    End If
    If flag OrElse pdr Is Nothing Then
        If count > 1 Then
            idx &= idx_temp
        End If
        count = 1
        idx_temp = ""
    Else
        count += 1
        idx_temp &= dr("_Identify") & ","
    End If
   
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

Tables("表A").filter = "_Identify not in (" & idx.trim(",") & ")"  \'显示唯一值


--  作者:有点甜
--  发布时间:2018/11/1 15:23:00
--  

2、

 

Dim d1 As Date = "2018-10-01"
Dim d2 As Date = d1.AddMonths(1)
Dim ry = DataTables("表A").GetComboListString("姓名", "结束时间 >= #" & d1 & "# and 结束时间 < #" & d2 & "#")
msgbox(ry)
ry = ry.replace("|", "\',\'")
Tables("表A").filter = "开始时间 >= #" & d1 & "# and 开始时间 < #" & d2 & "# and 姓名 in (\'" & ry & "\')"


--  作者:有点甜
--  发布时间:2018/11/1 15:26:00
--  

3、

 

Dim d1 As Date = "2018-10-01"
Dim d2 As Date = d1.AddMonths(1)
Tables("表A").filter = "开始时间 >= #" & d1 & "# and 开始时间 < #" & d2 & "# and 结束时间 >= #" & d2 & "# and _Identify in (" & idx.trim(",") & ")"  "


--  作者:www111998
--  发布时间:2018/11/2 13:10:00
--  
显示唯一性,有点复杂,看的不是很明白
可否这样
If e.DataCol.Name = "身份证号" Then
    Dim sfz As String = e.DataRow("身份证号")
    Dim kh = DataTables("表A").Select("身份证号 = \'" & sf & " \'","开始时间")
    If kh.count > 0 Then
        kh(0)("新") = True
    End If
End If

--  作者:www111998
--  发布时间:2018/11/2 13:16:00
--  
  姓名  开始时间   结束时间    数量   新  到    非 
   张三   2018-4-10   2018-10-10   10  是       
   李四   2018-4-21   2018-10-21   20   是      
   王五   2018-5-13   2018-11-13   30   是      
   张三   2018-10-11   2019-4-11   20      是   
   李四   2018-10-20   2019-4-20   20      是   
   王五   2018-10-22   2019-4-22   20      
   是
    王五                       2018-11-10                             2019-5-10                               20                                     是

如果不是用10月来计算,而是每月中有结束时间的人员,另一行的人员在开始时间和结束时间是在同一个月的情况,
条件2的代码怎么改?

--  作者:有点甜
--  发布时间:2018/11/2 15:44:00
--  
以下是引用www111998在2018/11/2 13:10:00的发言:
显示唯一性,有点复杂,看的不是很明白
可否这样
If e.DataCol.Name = "身份证号" Then
    Dim sfz As String = e.DataRow("身份证号")
    Dim kh = DataTables("表A").Select("身份证号 = \'" & sf & " \'","开始时间")
    If kh.count > 0 Then
        kh(0)("新") = True
    End If
End If

 

可以。