自定义编码问题

hbgywangxin 2004-09-14 10:16:01
样品的身份对于样品来说是唯一确认自己的标记,一些LIMS设计在样品登录的时候就赋予样品的一个特定的名称,而有些LIMS则需要实验室技术人员在样品登录时
具体输入样品的名称。由技术员输入ID时通常需要输入的名称必须包括是一对一的,通常样品ID由以下方面组成:
(1) 样品的类型;
(2) 日期、时间与轮换;
(3) 生产线;
(4) 样品采集地点;
(5) 分配的序列号;
(6) 统一的产品密码;
比如一个样品代表样品各方面的信息“P20030609A2P1001”,其中“P”代表样品类型,“2003”代表年份,“0609”代表日期,“A”表示轮换位置,“2”:表示类型;“P1”代表样品采集地点。“001”序列号。
上面只是一个单位使用的编码规则,而不同的单位所采用的编码规则不尽相同,例如另外一个单位的样品编号为:
“ST20030908A10001”:
其中 “ST”:所有的样品编号前两位为ST。
“20030908”:年月日。
“A”: 科室代码
“1”: A科下面的第1个小组
“0001”:流水号。

应用单位可能采取的编码原则及编码顺序不尽相同:
例如有些单位还可以有样品编号规则:
(1) 年月+科室编号+组别编号+流水号;
(2) 固定字符+科室编号+组别编号+流水号;
(3) 年+科室编号+组别编号+流水号;
(4) 样品类别+年+月+日+流水号;
(5) 年月日+样品条形码+流水号;等等。
我现在想在我的系统中,做一个定义样品编号的一个模块:要求灵活定制,及系统中自动生成编号。
总结了一下一个编号可以由5个部分组成:固定字段、独立可变字段、受控固定字段、受控可变字段、 顺序码字段五类。
但是如何实现这个功能呢?请各位大虾提出宝贵意见。
...全文
295 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbgywangxin 2004-09-15
  • 打赏
  • 举报
回复
我的意思就是做一个自定义编号规则的功能。它可以根据用户定义出不限个数的编码规则。程序中使用模个编码规则自动生成编号。如PDM系统中的编码定义功能。
nyf1220 2004-09-15
  • 打赏
  • 举报
回复
看的晕
hbgywangxin 2004-09-14
  • 打赏
  • 举报
回复
难道没有人做过这样的功能模块吗?困惑!
hbgywangxin 2004-09-14
  • 打赏
  • 举报
回复
多谢这位兄弟的帮忙,不过这个算法怎对行太强,只针对我提出的一种可能的情况,如果我在加入其他的信息,那么又需要该程序了。

针对上面的问题中5个部分我在些详细一些:

一个编码规则定制出的编号如下:
TYCDC 2004-09-02 A 1 0001 8768902164543321
独立固定区:指定长度的固定字符,不受外界环境影响。如:TYCDC
独立可变区:一般受系统环境影响,不与其他信息发生关联,1…….1的关系。如:
系统时间。如:2004-09-02
受控固定区:受外界信息影响,在生成编号时,由操作者指定的信息。如:条形码,或指定的标记等。如:8768902164543321
受控可变区:这部分信息受外界信息影响,动态获取数据,需要与具体的信息有管理关系。如:关联的 科室、小组、当前操作的人员编号等。
顺序码区:统一编码规则的流水号。如:0001
要求:以上五部分,可以由客户自由指定,以适应不同单位。编码规则这五部分,先后顺序可以自由调整。

上面的也只是一种情况。我的意思是如何设计 编码规则使这5个部分随意组合,生成一个编码规则供系统使用。我看过PDM(产品数据管理)中的一些资料有这个编码系统,但没有办法下载。

希望大侠们多多指点。!!
IwantFlay 2004-09-14
  • 打赏
  • 举报
回复
“ST”:所有的样品编号前两位为ST。
“20030908”:年月日。
“A”: 科室代码
“1”: A科下面的第1个小组
“0001”:流水号。
function getList(stStr,dateStr,aStr,groupStr):string;
begin
//这里先根据传入的 stStr, dateStr, aStr, groupStr 从数据库中取得你当前流水最
//大值的样品编号
//strsql如:
//'select listNo from table where listNo
// like'''+strStr+dateStr+aStr+groupStr+'%''

然后取得到字段的后五位, 加一后, 再用转成格式化的字符串listStr

返回 stStr+dateStr+aStr+groupStr+listStr
end;
IwantFlay 2004-09-14
  • 打赏
  • 举报
回复
function getList(stStr,dateStr,aStr,groupStr:string;lstLen: integer):string;
begin
//这里先根据传入的 stStr, dateStr, aStr, groupStr 从数据库中取得你当前流水最
//大值的样品编号
//strsql如:
//'select listNo from table where listNo
// like'''+strStr+dateStr+aStr+groupStr+'%''

然后取得到字段的后lstLen五位, 加1后, 再用转成格式化成lstLen位长的字符串listStr

返回 stStr+dateStr+aStr+groupStr+listStr
end;
gechaosa 2004-09-14
  • 打赏
  • 举报
回复
function getList(stStr,dateStr,aStr,groupStr,var=''):string;
在五个以外增加一个默认值的参数,可以解决扩充问题

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧