SOLIDWORKS PDM 中实现日期加序列号命名 —序列号每日更新初始

日期:2022-05-18 15:37:25 发布者: 智诚科技ICT 浏览次数:

SOLIDWORKS PDM 中提供了非常实用的工具——序列号,使得文件在顺序编码时非常的便捷。序列号使用的范围也可以非常广:使用序列号可以为文件和文件夹自动指派名称或者为卡控件添加唯一的运行值。可以在每个库中设定任意数量的序列号。

SOLIDWORKS PDM 中提供了非常实用的工具——序列号,使得文件在顺序编码时非常的便捷。序列号使用的范围也可以非常广:使用序列号可以为文件和文件夹自动指派名称或者为卡控件添加唯一的运行值。可以在每个库中设定任意数量的序列号。
注:序列号由静态文本与自动分派的运行值组合而成,运行值可以预定字符串位数,并且序列号不受该值的位数的限制。如果您使用四位数值,计数器的值达到 9999 后,下一个值将是 10000。默认情况下,序列号是顺序增加的。
在此案例中,碰见了一个特殊情况,客户需要创建变更单,变更单的名称命名结构为:变更单-年月日-三位序列号;例如:变更单-BG20181225-08、变更单-BG20181226-01。最特殊的情况是,当日期变化之后,末尾的序号需要重新从01开始。基于这个要求,以模板的形式为客户提供变更单的创建一个符合要求的功能。
提前准备:
① 管理中创建一个PDM模板
② 准备变更单模板,并存放在库中
 1) 接下来,从创建序列号开始,完成这个设定

    a) 打开管理,在管理中找到序列号并右键新建序列号

    b) 填写名称
    c) 格式字符串中填写需要的信息
    d) 需要的信息可以在格式字符串末尾的“>”按钮中找到
    e) 点击确定,创建完成

2) 创建模板
    a) 管理中找到模板并右键新建模板
    b) 填写模板名称——将显示在右键菜单中的名称
    c) 设置执行为用户——设置执行模板时的用户权限
    d) 编辑模板卡
    i. 模板卡在新建时会显示出来,变更单编号的变量“No”设置默认值为序列号,并选定变更单序列号
    ii. 组织模板变量页面中,添加“t_No”,并在模板卡页签中,在“为所选卡复制变量”中将数据卡中变量“No”的值传递给“t_No”(模板变量“t_No”设置为格式字符串)
 
    e)  文件和文件夹—为变更单设置生成位置和添加相关文件(指定模板位置)
    i. 文件夹——添加创建变更单的位置
    ii. 在‘当前文件夹’文件夹中的文件
    1. 双击文件设置文件属性
    2. 文件名称引用模板变量“t_No”(将模板卡中产生的序列号传递到文件名)
 
    iii. 设置图标和可执行此模板的用户和组即可完成模板创建

3) 完成模板创建之后,即可在文件库中测试,右键—新建—新建变更单,此时模板卡中会显示当前文件的编码,并会在文件产生的时候作为文件名的一部分
4) 在序列号中通过 “下一个计数器值”记录了下一个产生的序列号值,为了保证每一天序列号的起始值都将会从01开始,我们需要系统在每天开始的时候将这个值充值为1
  

5) 首先我们需要查询这个值在那里记录
    a) 在开始菜单中寻找SQL Management Studio 201X
    b) 连接好数据库之后执行以下操作
    i. 新建查询
    ii. 选择需要查询的库(目标PDM库的数据库)
    iii. 在查询页面输入如下语句,红框中的为数据库名
 
    c) 写好查询语句之后,我们得到记录序列号值的结果,总计三列:Name(名称)、LastGenerated(最后生成值)、Counter(计数=下一个计数器值)

6) 根据查询结果推断,当需要重置序列号值为1时,同样需要在SQL中执行更新的查询语句
USE [数据库名称]
GO

UPDATE [dbo].[SerialNumbers]
   SET [LastGenerated] = 0
,[counter] = 1
 WHERE [Name]='变更单编号'
GO

7) 已经确定好可以通过语句执行,那么需要将这个动作设为定期任务,由服务器自动执行即可,因此要在SQL中写如自动任务执行更新的任务:
    a) 打开SQL Management Studio 201X
    b) 在Management?Maintenance?右键?选择New Maintenance Plan…
 
    c) 填写任务名称
  
    d) 计划任务面板中会自动生成一个子计划,如图,设置子计划的执行排期,完成后点击OK,并保存任务(左上角点击保存图标)
 
    e) 在SQL Server Agent?Jobs 中找到刚刚创建的计划,并双击打开
    i. 选择Step 页签,双击打开修改存在的子计划的操作步骤
 
    ii. 在子计划步骤窗口中,更改步骤名称?更改类型为:T-SQL?选择要执行的数据库?在Command中输入要执行的语句?点击??保存
 
    f) 全部确定保存之后,自动更新数据的任务即创建完成;当指定执行任务的时间SQL正常开启中,则此任务会自动执行。

8) 特殊情况下:设定自动执行的时间节点,SQL未正常开启,则此变更单序列号的值不能初始化,为了确保系统正常运行,需要建立一个备用机制,手动重置此数值:结合PDM提供的Dispatch 和SQL 的查询语句来完成。
    a) 准备资料:
    i. 将查询语句保存为文件:更改序列号的初始值.sql,并将此文件保存到PDM 库中
    ii. 创建一个bat文件,内容如下(红色文字为注释,需要替换为对应信息),保证.bat和更改序列号的初始值.sql文件放在同一个文件夹,检入两个文件备用
@ECHO OFF?
SET dbhost=电脑主机名
SET dbuser=SQL用户名
SET dbpasswd=密码
set dbName=数据库名称
SET sqlpath=%~dp0
set sqlfile=执行的查询语句文件名(更改序列号的初始值.sql)
::执行SQL脚本
osql -S %dbhost% -U %dbuser% -P %dbpasswd% -d %dbName% -i %sqlpath%%sqlfile%
ECHO 完成!
@ECHO Done!?
    b) Dispatch 中增加一个操作调用 已经存档的.bat文件
    i. Dispatch中添加外壳执行,并选择动作为open,文件名索引至库中的路径即可
9) 至此,创建一个每日自动更新的文件编码暨完成。
注:在文章中提到将变量更新到文件名,同样这些信息也可以更新到Office的文档中去,具体做法可以参考另外一篇文章:PDM 在Microsoft Excel和Word文档中创建信息映射