以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于自动造成顺序号的求助 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28763) |
-- 作者:hrw68529 -- 发布时间:2013/2/18 9:22:00 -- [求助]关于自动造成顺序号的求助 下列代码,只取制单日期的年,不取月,日,生成的自动编号为工程代码-年-三位顺序号(如工程代码-2013-001),如何修改. Select e.DataCol.Name |
-- 作者:hrw68529 -- 发布时间:2013/2/18 10:22:00 -- 基本成功,但如果在同一天,输入相同的工程代码,不能生成编号,是什么原因,我的目的上,如:QWAY-2013-001,接下来应该是QWAY-2013-002,但上述代码不能生成,怎么办 |
-- 作者:lin_hailun -- 发布时间:2013/2/18 10:34:00 -- 以下是引用hrw68529在2013-2-18 10:22:00的发言: 基本成功,但如果在同一天,输入相同的工程代码,不能生成编号,是什么原因,我的目的上,如:QWAY-2013-001,接下来应该是QWAY-2013-002,但上述代码不能生成,怎么办 代码不会有错的,不会重复的,会累加下去的。请用例子说明你的问题。 |
-- 作者:hrw68529 -- 发布时间:2013/2/18 11:26:00 -- 上述问题,我再想想,另外,我做了个共有窗口,用任务栏,页面下边有任务,如何将任务链接到指定的表,代码怎么写,谢谢 |
-- 作者:lin_hailun -- 发布时间:2013/2/18 11:33:00 -- 编写任务栏对应的事件 TopicLinkClick Select Case e.Link.Text Case "表A" maintable = Tables("表A") Case "表B" maintable = Tables("表B") End Select http://www.foxtable.com/help/topics/0869.htm |
-- 作者:hrw68529 -- 发布时间:2013/2/18 11:46:00 -- 谢谢你,真好, |
-- 作者:hrw68529 -- 发布时间:2013/2/18 11:58:00 -- 第一问题的症结是,请看图,当我选择同一个县区时,出现以下错误: 此主题相关图片如下:截图00.png 此主题相关图片如下:截图01.png |
-- 作者:lin_hailun -- 发布时间:2013/2/18 12:00:00 -- 把你的这个数据表上传上来。或者单独做一个小例子。 |
-- 作者:hrw68529 -- 发布时间:2013/2/18 12:30:00 -- 代码如下,请审查 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 fd As Date = New Date(y,m,1) \'获得该月的第一天 Dim ld As Date = New Date(y,m,Days) \'获得该月的最后一天 Dim bh As String = e.DataRow("县区") & "-" & Format(d,"yyyy") & "-" \'生成编号的前缀 If e.DataRow("审签序号").StartsWith(bh) = False \'如果单据编号前缀不符 Dim max As String Dim idx As Integer Dim flt As String flt = "县区 = \'"& e.DataRow("县区") & "\' And 录入时间 >= #" & fd & "# And 录入时间 <= #" & ld & "#" max = e.DataTable.Compute("Max(审签序号)",flt) \'取得该月的相同工程代码的最大单据编号 If max > "" Then \'如果存在最大单据编号 idx = CInt(max.Substring(10,3)) + 1 \'获得最大单据编号的后四位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("审签序号") = bh & Format(idx,"000") End If End If End Select |
-- 作者:lin_hailun -- 发布时间:2013/2/18 12:50:00 -- 改一下这句代码。 idx = max.LastIndexOf("-") + 1 msgbox(idx) idx = CInt(max.Substring(idx,3)) + 1 \'获得最大单据编号的后四位顺序号,并加1 |