以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]筛选问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63682) |
-- 作者:青鸟 -- 发布时间:2015/1/26 15:00:00 -- [求助]筛选问题 本表中有 项目代码 合同代码 签约日期 合同编号 4个字段 合同编号规则是:项目代码-合同代码-签约日期-(顺序号) 希望根据不同的合同编号前缀,自动生成递增的(顺序号) 参考http://www.foxtable.com/help/index.html?n=2403.htm的第四条,在DataColChanged事件中修改设置了如下代码,不能实现,提示是筛选语句flt应该是结束的。 请教修改: Select e.DataCol.Name Case "签约日期" If e.DataRow.IsNull("签约日期") Then e.DataRow("合同编号") = Nothing Else Dim d As Date = e.DataRow("签约日期") Dim y As Integer = d.Year Dim m As Integer = d.Month Dim Days As Integer = Date.DaysInMonth(y,m) Dim bh As String = e.DataRow("项目代码") & "-" & e.DataRow("合同代码") & "-" & Format(d,"yyyyMM") & "-" \'生成编号的前缀 If e.DataRow("合同编号").StartsWith(bh) = False \'如果合同编号前缀不符 Dim max As String Dim idx As Integer Dim flt As String flt = "项目代码 = \'"& e.DataRow("项目代码") & "\' And "合同代码 = \'"& e.DataRow("合同代码") & "\' And "签约日期 = \'" & e.DataRow("签约日期") & "\'And [_Identify] <> " & e.DataRow("_Identify") & " max = e.DataTable.Compute("Max(合同编号)",flt) \'相同合同代码的最大合同编号 If max > "" Then \'如果存在最大合同编号 Dim ma As Integer ma = max.LastIndexof("-") idx = CInt(max.SubString(ma,3)) + 1 Else idx = 1 End If e.DataRow("合同编号") = bh & Format(idx,"000") End If End If |
-- 作者:Bin -- 发布时间:2015/1/26 15:02:00 -- flt = "项目代码 = \'"& e.DataRow("项目代码") & "\' And 合同代码 = \'"& e.DataRow("合同代码") & "\' And 签约日期 = #" & e.DataRow("签约日期") & "# And [_Identify] <> " & e.DataRow("_Identify") |
-- 作者:青鸟 -- 发布时间:2015/1/26 16:23:00 -- 谢谢,代码不在报错,但始终只执行 If Else 的Else后面的 idx = 1 语句,在Max = 语句后面设了个:msgbox(max),显示出来的Box值是空的,什么原因?输入结果如图: |
-- 作者:有点甜 -- 发布时间:2015/1/26 16:27:00 -- 呃,你是用2楼的代码么?如果是,就不应该有问题。 |
-- 作者:青鸟 -- 发布时间:2015/1/26 17:11:00 -- 谢谢两位老师,问题解决了,我知道了设置msgbox()查问题,出在判断条件上,非常感谢。 |