以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于编号问题的请教 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=144935) |
||||
-- 作者:weipeng6999 -- 发布时间:2020/1/3 14:15:00 -- 关于编号问题的请教 老师好!
我想根据“日期”和“是否开票”列自动生成清单号,“是否开票”为true时,生成202001001(九位),“是否开票”为false时,生成2020010001(十位)。代码如下:
If e.DataCol.Name = "日期" Then
运行后不能自动填入清单号,请教老师问题出在哪里?
|
||||
-- 作者:有点蓝 -- 发布时间:2020/1/3 14:29:00 -- If e.DataCol.Name = "日期" Then 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 fd As Date = New Date(y,m,1) \'获得该月的第一天 Dim ld As Date = New Date(y,m,Days) \'获得该月的最后一天 Dim bh As String = Format(d,"yyyyMM") \'生成清单号的前6位,4位年,2位月. If e.DataRow("清单号").StartsWith(bh) = False \'如果清单号的前6位不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(清单号)","日期 >= #" & fd & "# And 日期 <= #" & ld & "# and 是否开票=" & e.DataRow("是否开票") & " And [_Identify] <> " & e.DataRow("_Identify")) \'取得该月的最大清单号 If max > "" Then \'如果存在最大清单号 idx = CInt(max.Substring(7)) + 1 \'获得最大清单号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If If e.DataRow("是否开票")=True Then e.DataRow("清单号") = bh & Format(idx,"000") End If If e.DataRow("是否开票")=False Then e.DataRow("清单号") = bh & Format(idx,"0000") End If End If End If End If |
||||
-- 作者:weipeng6999 -- 发布时间:2020/1/3 15:00:00 -- 老师好!
现在清单号可以自动写入十位,不过我想要的效果是
“是否开票”为true时,生成202001001(九位),“是否开票”为false时,生成2020010001(十位)。
请问要如何修改?
If e.DataRow("是否开票")=True Then
|
||||
-- 作者:有点蓝 -- 发布时间:2020/1/3 15:22:00 -- If e.DataRow("是否开票")=True Then e.DataRow("清单号") = bh & Format(idx,"000") else e.DataRow("清单号") = bh & Format(idx,"0000") End If |
||||
-- 作者:weipeng6999 -- 发布时间:2020/1/4 10:34:00 -- 老师好!
为了避免误操作逻辑值,我把“是否开票”改为字符型,代码如下:
If e.DataCol.Name = "日期" Then If e.DataRow("是否开票")="不开票" Then
清单号出不来,请教是哪里的问题?谢谢,改为如下代码也是一样出不来 If e.DataRow("是否开票")="开票" Then e.DataRow("清单号") = bh & Format(idx,"0000")
|
||||
-- 作者:有点蓝 -- 发布时间:2020/1/4 10:46:00 -- 字符型条件要加单引号 max = e.DataTable.Compute("Max(清单号)","日期 >= #" & fd & "# And 日期 <= #" & ld & "# and 是否开票=\'" & e.DataRow("是否开票") & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该月的最大清单号
|
||||
-- 作者:weipeng6999 -- 发布时间:2020/1/4 10:53:00 -- 老师,加了单引号还是一样,清单号没出来 |
||||
-- 作者:有点蓝 -- 发布时间:2020/1/4 11:17:00 -- 我测试没有问题
|
||||
-- 作者:weipeng6999 -- 发布时间:2020/1/6 10:58:00 -- 老师好!
这里还有一个小问题求助,经蓝老师测试是可以用了,不过必须要先在“是否开票”中进行选择,再填日期后清单号才能自动填入。先填日期,再选择“是否开票”后清单号出不来。
If e.DataRow.IsNull("是否开票") Or e.DataRow.IsNull("日期") Then |
||||
-- 作者:有点蓝 -- 发布时间:2020/1/6 11:18:00 -- If e.DataCol.Name = "日期" OrElse e.DataCol.Name = "是否开票" Then If e.DataRow.IsNull("日期") OrElse e.DataRow.IsNull("是否开票") Then e.DataRow("清单号") = Nothing Else
|