随着机械制造企业信息化的推广和普及,不少企业都遇到了零部件图.doc

随着机械制造企业信息化的推广和普及,不少企业都遇到了零部件图.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  随着机械制造企业信息化的推广和普及,不少企业都遇到了零部件图号排序的问题。熟悉数据库的读者可能会提出疑问,字符型字段排序有什么难的,只要在数据库SQL查询中使用“Order by 字段名”,不就可以按字段来进行记录排序吗?由于字符型字段是按照字符的ASCⅡ码值来进行排序的,而在实际工作中经常会遇到按ASCⅡ码值排序不能满足实际需要的情况,零部件图号的排序要求就是如此。如表1所示,国标零部件图号的编制规则是用点杠分隔的,如果按ASCⅡ码值大小对它进行排序,可以发现表1中“X.1.10”排到了“X.1.2”和“X.1.3”之前,这是由于“X.1.10”的第5个字符为1,而“X.1.2”和“X.1.3”的第5个字符为2和3。同样,由于“X. 10”的第3个字符为1,“X.2.1”和“X.2.2” 第3个字符为2,所以“X.10”排在了“X.2.1”和“X.2.2”之前。另外,图号采用点杠编号规则,点表示部件,杠表示零件,要求部件排在零件之前,但由于“.”和“-”的ASCⅡ码值分别为“42”和“45”。所以,计算机把“.”放在“-”前面。很明显这样的排序结果不能符合工作习惯(见表2),给工作带来意想不到的麻烦。   发现这个问题后,我们曾经试过改变图号编制规则,这是个笨办法,由于存在大量的老产品、老图号,老习惯的改变也不是一时能实现的;并且,由于系统对数据的统一性要求严格,在新旧交替时容易产生严重的混乱。   在多次的实践过程中,我们发现字符型字段按一定规则代换后,可以根据实际操作的需要,进行灵活巧妙的排序,这样可解决按常规排序不能满足需求,给工作带来不便的问题。也省去了重新变更图号编制标准,再进行人工转换的巨大工作量。根据它的工作原理,我们称它为代换排序法。 1 代换排序法的思路   代换排序法的思路是:在直接按照字段排序行不通的情况下,通过对字段进行处理,将它们代换成可以按工作习惯进行排序的字段,然后再按ASCⅡ码进行排序,问题就迎刃而解了。以表1为例,如果将所有字段中的一位数字变为两位(即“1”代换为“01”;“2”代换为“02”等),代换成表3,再按转换字段进行排序,即可得出表2所示的结果。   但在实际操作中应注意,由于计算机并不能区分一位数字和两位数字,在将“1”代换成“01”时,不仅会将“X.1”代换成“X.01”,也会把“X.10”代换成“X.010”,把“X.1.11”代换成“X.01.0101”,这些代换的错误,将造成排序上出现误差。因此,在编程时必须采用隔断法进行数据识别,如“.1.”代换为“.01.”;“.2.”代换为“.02.”,用符号“.”来分割数字,使计算机能准确地区分一位数字和两位数字。同时我们还必须预先在字段的尾部加上符号“.”,以保持字段最后数字的可转换性,否则,“X.1.1”只能变成“X.01.1”。   同样,在上述代码中增加更多的嵌套代换,以解决图号中有“3、4……”的情况,这里不再赘述。另外我们可以把“-”转变成“*”,来解决零件排在部件之前的情况。 2 代换排序方法的实现   接下来的问题,就是如何实现字符的代换了,代换排序法的原理十分简单,但实际操作并不是很容易的。主要原因是一般制造企业生产的产品零件非常多,例如我们企业的零件总数大约两万多种,每年还有大量的新品增加。所以要求排序的数据表中常有上千条的记录(一个零件一条记录),开始我们用C语言的循环结构,对要求进行排序的数据逐条记录进行转换,程序速度非常慢,一次排序要等上几分钟,才能得到结果。而工作中经常需要进行排序操作,这样低的效率不可能有实用价值。为了解决这个问题,我们经过多次试验,发现造成程序慢的主要原因,在于它要逐条记录循环,如果采用高效的SQL命令,一次面向整个数据表直接操作,实现快速排序是可能的。   现以笔者所在企业选用的数据库SQL SEVET 7.0为例进行示范说明。SQL SEVET 7.0中有非常灵活强大的SQL函数库,其中有一个“REPLACE”函数,利用它能够实现指定字符的代换。我们可以不断地对该函数进行嵌套运用,实现字符的代换。需要注意的是,嵌套使用该函数时,符号不能被重复使用,“X.1.1”只能被代换成“X.01. 1.”。所以在代换前,要先将“.”变成“..”。也就是说,代换次序是先将“.”变成“..”,再在字段的尾部加上符号“.”,最后再代换“1”、“2”。利用如下SQL生成视图进行代换,代换结果在代换生成的转换字段中: SELECT*, {REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPLACE({REPL

文档评论(0)

559997799 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档