魔方网表 让信息化更简单

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

查看: 13657|回复: 13

[求助] 编码字段的编码规则能否自定义?

[复制链接]
方老四 发表于 2010-9-5 14:52:21 | 显示全部楼层 |阅读模式
本帖最后由 方老四 于 2010-9-6 16:03 编辑

系统提供的编码字段的编码规则都是与日历相关的。还有一种编码情况,编码规则比如是:字段1值+顺序号,顺序号的值是根据“字段1值”在表单中找出最大号,然后加1,也就是说顺序号是随着编码字段前面部分内容的变化而不同。比如,卫生部规定的居民健康档案的档案号是由16位编码构成,县编号(6位)+乡编号(3位)+村编号(2位)+顺序号(5位),编码规则是根据“县编号(6位)+乡编号(3位)+村编号(2位)”的值在表单中找出最大码,然后加1。这种编码规则能不能用编码字段实现?
 楼主| 方老四 发表于 2010-9-5 16:17:16 | 显示全部楼层
用回写公式能解决吧,字段值的内容改变能不能触发执行回写公式,如果县编码、乡编码和村编码内容输入后能触发回写公式的话,也能利用回写公式解决这个问题。请问,能不能利用"修改记录"触发回写公式来解决这个问题?
回复

使用道具 举报

yangjiacheng520 发表于 2010-9-5 17:34:58 | 显示全部楼层
第一种方法1.可以编写另外一个表单,县对应其县编号,乡对应乡编号。镇对应镇编号。然后在你这个编号表单的县字段下面建一个县字段编号字段,其值在回写公式中编辑,通过过滤出你那个县,然后它的值就等于县对应的县编号,同样的方法也在乡和镇上面使用,最后顺序号就用你自己说的方法,整个编码就是:
"县编号"&"乡编号"&"镇编号"&"顺序号"
说明下,县编号和乡编号还有镇编号用一个表单做对应关系就可以了
但是你的县、乡和镇在原表单不能用一个树形字段表示。
互相学习探讨啊,不对的请批评指正
回复

使用道具 举报

yangjiacheng520 发表于 2010-9-5 17:41:40 | 显示全部楼层
第二种方法2。基本同上面一样,如果你是用树形字段表示你的县/乡/镇的话,那你的地址对应的表单就需要多劳累下了,
比如,A县/B乡/C镇对应00000100101注意看数字颜色。
这样的结果是如果你有10个县,每个县下面对应了10个乡,每个乡下面对应了10个镇,你就需要编写1000条记录。
回复

使用道具 举报

yangjiacheng520 发表于 2010-9-5 17:43:44 | 显示全部楼层
我想了想,第一种方法好像也不比第二种少写记录,那第一个我就不推荐使用了,因为计算多了几次,又影响速度又不带来方便
看来我自己要加强啊
回复

使用道具 举报

 楼主| 方老四 发表于 2010-9-6 09:00:14 | 显示全部楼层
谢谢赐教。
      我是这样来考虑的,不知道能不能实现。建两个表单:行政区划编码对照表,居民健康档案记录表。
行政区划编码对照表包括:县名称、县编码、乡名称、乡编码、村名称、村编码、全名称、全编码,全名称就是用公式把县乡村名称用“/”联结起来,全编码就是用公式把县乡村编码联接起来,并把“全名称”字段设成唯一;数据包括全县的所有村和社区,记录在400条左右。在居民健康档案记录表增加一个树字段比如叫“行政村”,手动建立县乡村名称树结构,行政村的内容应该和行政区划编码对照表中的“全名称”一样的,建立引用关系,在居民健康档案记录表中输入“行政村”后就能自动带入行政区划编码对照表中的“全编码”字段值。在居民健康档案记录的新增记录的操作前触发时机设置回写公式,依据全编码找出当前表单中最大的档案号,然后加1写入当前记录的档案号字段中。
回复

使用道具 举报

yangjiacheng520 发表于 2010-9-6 21:16:26 | 显示全部楼层
既然想到了,就赶紧试试呗。实践出真理,大家一起进步
回复

使用道具 举报

 楼主| 方老四 发表于 2010-9-7 09:03:29 | 显示全部楼层
我记得有个软件工具提供了一个“取自动编码()”函数来解决这个问题,用户使用起来很简单,并且很灵活,希望魔方网表能借鉴一下。函数结构:取自动编号(文本型字段名称,前缀字符,顺序号位数),其中“前缀字符”可以是字符串常量,也可以是返回字符串的表达式,表达式可以用函数、字段值等连接而成。“前缀字符”和“顺序号位数”都是可选项,当省略这两项时相当于从1开始的正整数序号。
回复

使用道具 举报

 楼主| 方老四 发表于 2010-9-8 22:13:04 | 显示全部楼层
我把模板附件传上来,请高手帮我看一下,是哪里的问题?
自动编号.mft (87.28 KB, 下载次数: 2520)
回复

使用道具 举报

admin 发表于 2010-9-8 22:26:03 | 显示全部楼层
编码本身的公式只能是行间的公式,取最大值之类的操作是不行的
但是可以通过变通的办法,比如加一个引用字段去引另一个表中的最大值,然后每次增加记录就增加那个值
引用过来就是一行的了,就可以用行间公式参与编码的生成

从设计角度我是不赞成这么编码的

既然提出了这个问题,我就提示一下,抛个砖
回复

使用道具 举报

 楼主| 方老四 发表于 2010-9-9 13:59:56 | 显示全部楼层
本帖最后由 方老四 于 2010-9-9 14:11 编辑

在增加记录的操作前时机用回写公式,基本把问题解决了。就是有一个问题,档案号是文本型字段,档案号最大值用VALUE()函数转换后加1,始终显示的是“5.108211000500002E15”格式,如何显示为“5108211000500002”格式,我偿试T()转换和""&连接都不行,请高手指导。
自动编号.mft (87.03 KB, 下载次数: 2495)
回复

使用道具 举报

 楼主| 方老四 发表于 2010-9-12 22:04:11 | 显示全部楼层
本帖最后由 方老四 于 2010-9-12 22:06 编辑

用10楼的办法,在行政区划编码对照表增加一个“顺序号”字段记录该编号的最大值,成功解决问题。
自动编号2.mft (89.34 KB, 下载次数: 2510)
回复

使用道具 举报

 楼主| 方老四 发表于 2010-10-27 16:58:07 | 显示全部楼层
11# 方老四
有了text()函数,问题迎刃而解。
回复

使用道具 举报

 楼主| 方老四 发表于 2011-8-7 10:16:09 | 显示全部楼层
5.5.2版终于实现按字段文本编码功能了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则


Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2025-7-10 19:16 , Processed in 0.072949 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表