Foxtable(狐表)用户栏目专家坐堂 → 求助:文号自动增加代码


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

主题:求助:文号自动增加代码

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


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
求助:文号自动增加代码  发帖心情 Post By:2010/2/24 13:33:00 [只看该作者]


在业务表的“业务一”窗口的“业务类型”ComboBox2的SelectedIndexChanged 事件中写如下要求代码:
当在ComboBox2中选择不同的值后,文号自动根据历史数据增加一个新的文号,序号自动增加1?
数据源为内部表、Acess、Sql时分别怎么写?

文号的规律:

文号                     业务类型
梅价交鉴字  [  ] 号  交通事故
梅价鉴字     [  ] 号  刑事案件 非刑事案件 底价评估
梅价认字     [  ] 号  其它价格认证 调定价费可行性论证 二手车评估

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.table


 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2010/2/24 14:18:00 [只看该作者]

表事件:DataRowAdding 中,此为内部表
e.DataRow("ID") = e.DataTable.Compute("Count(序号)") + 1
Acess数据库,设序号为主键并自动编号类型
Sql数据库中,设为主键并将列属性中的:标识增量及标识种子均为1
可参看帮助中的 设置主键列  章节

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


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2010/2/24 14:36:00 [只看该作者]

文号里包含的数字序号不是唯一的,而是按文号前一部分文字来分组自动编号,每一组里包含的数字才是唯一的,而且我是在窗口中对控件进行设置代码,这段帮助不用不上,请指导

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


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2010/2/24 15:16:00 [只看该作者]

请帮忙

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/2/24 17:28:00 [只看该作者]

在你原代码后面加上这段试一试:
Dim dr As DataRow
dr = DataTables("业务").Find("文号 like '" & Forms("业务一").Controls("TextBox2").text & "*'","文号 Desc")
Forms("业务一").Controls("TextBox2").value = Forms("业务一").Controls("TextBox2").text & left(dr("文号").split("】")(1),1)+1 & "号"

说明:上面代码当文号小于10适用(因为文本型无法正确排序)。 最好将文号的数字部分单独增设一列(数字型)存放,需要时合并即可。

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/2/24 20:20:00 [只看该作者]

增加辅助列以后,参考max


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/2/24 21:33:00 [只看该作者]

5楼的代码不要了,在业务表里增加一列:号数 (数字型),并删除所有测试的行 。 SelectedIndexChanged 事件中原代码后面加上下面的代码:::
Tables("业务").current("号数") = Nothing
Dim dr As DataRow
dr = DataTables("业务").Find("文号 like '" & Forms("业务一").Controls("TextBox2").text & "*'","号数 Desc")
Forms("业务一").Controls("TextBox2").value = Forms("业务一").Controls("TextBox2").text & dr("号数")+1 & "号"
Tables("业务").current("文号") = Forms("业务一").Controls("TextBox2").value
Tables("业务").current("号数") = dr("号数")+1 

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


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2010/2/25 9:12:00 [只看该作者]

在mr725代码的启发下,我对代码作如下更改,终于解决了这个问题,谢谢大家的帮助:
1、在业务表里增加一列:号数
2、SelectedIndexChanged 事件中代码修改如下:
 Dim dr As DataRow
Dim s AS string
Select Case e.Form.Controls("ComboBox2").SelectedValue
    Case "交通事故"
        s ="梅价交鉴字【"& dt.Year & "】"
        dr = DataTables("业务").Find("文号 like '" & s & "*'","号数 Desc")
        Forms("业务一").Controls("TextBox2").value = s & dr("号数")+1 & "号"
        Tables("业务").current("号数") = dr("号数")+1
        tables("业务").current("文号")= s
[此贴子已经被作者于2010-2-25 9:24:16编辑过]

 回到顶部