Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
Select e.Col.name
Case "第一列"
e.Row("第二列") =Format(e.Table.Compute("Count(第一列)","[第一列] = '" & e.Row("第一列") & "'"),"000")
End Select
我用在AfterEdit设置上面的代码,虽然按重置不会重新计算,但当再次编辑第一列时第二列的内容还会计算,我想无论什么情况下第二列都只是显第一列出现的次序,用来编码,不知道有什么方法可以实现,以前在易表就用一个函数countif就搞定了。
早已试过了,不行的,或者再加上一个条件语句判断才可以吧
早已试过了,不行的,或者再加上一个条件语句判断才可以吧
DataColChanged事件,我测试没问题!!!
If e.DataCol.Name = "第一列" Then
e.dataRow("第二列") =Format(Tables("test").Compute("Count(第一列)","[第一列] = '" & e.dataRow("第一列") & "'"),"000")
end if
如果选择第一列,再点重置列那些数就会变了,或双击一下第一列相应的数值也会变的。变后就不是我所想要的数了。
这个方法是可以解决重置列的问题,但还有另一个问题不知如何解决,如果需要就第一列的内容进行修正,比如原来的值是张三,现在新的值是李四,那么按这个做法,第二列的内容还是原来的编号,不会自动更新。
如果数据量不大这样可以吧: DataColChanged 这样相当予每次编辑、修改第一列后都重置一次
If e.DataCol.Name = "第一列" Then
Dim dys As List(Of String) = DataTables("test").GetUniqueValues("","第一列")
For Each dy As String In dys
dim n as integer = 0
Dim drs As List(Of DataRow)
drs = DataTables("test").Select("[第一列] = '" & dy & "'")
For Each dr As Datarow In drs
n = n + 1
dr("第二列") =Format(n,"000")
Next
next
if e.dataRow.IsNull("第一列")
e.dataRow("第二列") = ""
end if
end if