Foxtable(狐表)用户栏目专家坐堂 → [求助]流水号自动生成问题


  共有11956人关注过本帖树形打印复制链接

主题:[求助]流水号自动生成问题

帅哥哟,离线,有人找我吗?
云淡风轻
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:409 积分:3022 威望:0 精华:0 注册:2012/1/19 10:11:00
[求助]流水号自动生成问题  发帖心情 Post By:2012/10/30 16:48:00 [只看该作者]

情况说明:

数据库中“全宗号”列的数值从1,2,3,4,5中取,分类号的值从0,1,2,3,4,5,6中取值,“年度”列的值是4位数,如2005,2006等,那么对于分类号是0,2,3的行,如何自动生成流水号列“存址号”列,其形式为“全宗号-年度-10001开始的递增数”,即形式为1-2005-10001,1-2005-10002,...,1-2005-10554,...,如果输入的年度以前没有输过的,比如新的年度2006,那么流水号又从10001开始,即1-2006-10001,1-2006-10002,...以此递增。

 

如何代码实现自动生成流水号?谢谢!

 

附数据:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.foxdb

[此贴子已经被作者于2012-10-30 16:48:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/30 22:21:00 [只看该作者]

 打不开你的开发版项目。做了个小例子。

 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table



 

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/31 10:51:00 [只看该作者]


 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.foxdb



 回到顶部
帅哥哟,离线,有人找我吗?
云淡风轻
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:409 积分:3022 威望:0 精华:0 注册:2012/1/19 10:11:00
  发帖心情 Post By:2012/10/31 16:18:00 [只看该作者]

谢谢指点!还想请教下,如果全宗号是X01,X02,X03,X04,X05时,流水号如X01-2005-10004形式的,怎么修改呢?因为此时e.DataTable.Compute("Max(存址号)", "全宗号 = " & e.DataRow("全宗号") & " And 年度 = " & e.DataRow("年度") & " And 分类号 in (0,2,3) And _Identify <> " & e.DataRow("_Identify"))代码,运行弹出调用的目标异常的错误,如何修改?谢谢!不同的全宗号,分类号是0,2,3,如果年度相同的话,流水号是重新编的,又从10001开始。所以在筛选里把全宗号 = " & e.DataRow("全宗号") 这个加上了

[此贴子已经被作者于2012-10-31 16:38:55编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/31 16:30:00 [只看该作者]

 嗯嗯,是的,要改成这句

Dim idx As String = e.DataTable.Compute("Max(存址号)", "全宗号 = '" & e.DataRow("全宗号") & "' And 年度 = " & e.DataRow("年度") & " And 分类号 in (0,2,3) And _Identify <> " & e.DataRow("_Identify"))

 回到顶部
帅哥哟,离线,有人找我吗?
云淡风轻
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:409 积分:3022 威望:0 精华:0 注册:2012/1/19 10:11:00
  发帖心情 Post By:2012/10/31 16:40:00 [只看该作者]

嗯,我也这样想,可是增加行的时候报错了。怎么办?

Dim idx As String = e.DataTable.Compute("Max(存址号)", "全宗号 = '" & e.DataRow("全宗号") & "' And 年度 = " & e.DataRow("年度") & " And 分类号 in (0,2,3) And _Identify <> " & e.DataRow("_Identify"))

 

 

这个语句对于X01-2005-10001,X01-2005-10002,...,...

好像没有办法判断最大值,因为其中有X字母,不知是不是这样?

[此贴子已经被作者于2012-10-31 16:41:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/31 16:51:00 [只看该作者]

 比较大小是肯定能比较的。可能是在最后生成的时候出了差错。

这句
idx = idx.SubString(9) + 1

改成这句
idx = idx.SubString(e.DataRow("全宗号").length + e.DataRow("分类号").Length + e.DataRow("年度").length + 1) + 1

 回到顶部
帅哥哟,离线,有人找我吗?
云淡风轻
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:409 积分:3022 威望:0 精华:0 注册:2012/1/19 10:11:00
  发帖心情 Post By:2012/10/31 16:57:00 [只看该作者]

还是不行。

 

我测试时改成

 

Select Case e.DataCol.Name
    Case "全宗号", "年度", "分类号"
        If e.DataRow.IsNull("全宗号") = False AndAlso e.DataRow.IsNull("分类号") = False AndAlso e.DataRow.IsNull("年度") = False  Then
            If e.DataRow("分类号") = 0 OrElse e.DataRow("分类号") = 2 OrElse e.DataRow("分类号") = 3 Then
                Dim idx As String = e.DataTable.Compute("Max(存址号)", "全宗号 = " & e.DataRow("全宗号") & " And 年度 = " & e.DataRow("年度") & " And 分类号 in (0,2,3) And _Identify <> " & e.DataRow("_Identify"))
                messagebox.show(idx)
            End If
        End If
End Select

弹出“调用的目标发生异常”错误。

说明idx值有问题

[此贴子已经被作者于2012-10-31 17:00:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/31 17:02:00 [只看该作者]

 如果列是字符类型,记得在左右加单引号 '

 "全宗号 = '" & e.DataRow("全宗号") & "'"
 

 回到顶部
帅哥哟,离线,有人找我吗?
云淡风轻
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:409 积分:3022 威望:0 精华:0 注册:2012/1/19 10:11:00
  发帖心情 Post By:2012/10/31 17:05:00 [只看该作者]

谢谢!!!一语中的,大侠!!

 回到顶部
总数 23 1 2 3 下一页