当前位置: 首页 > news >正文

关于网站建设的书籍今天国内最新消息

关于网站建设的书籍,今天国内最新消息,苏州企业建站公司,盐城市建设局网站设计备案资料背景 可能有些小伙伴看到这个话题,觉得非常简单,在发起人步骤设置标题可编辑,在有关的控件中设置事件去更新标题就可以了呗。但如果想要标题字段里包含编号呢,而编号是在具体路径的高级设置里设置的,在某个出口生成的…

背景

可能有些小伙伴看到这个话题,觉得非常简单,在发起人步骤设置标题可编辑,在有关的控件中设置事件去更新标题就可以了呗。但如果想要标题字段里包含编号呢,而编号是在具体路径的高级设置里设置的,在某个出口生成的,这么处理就不合适。因而可能又有小伙伴说在下一个节点通过JS去更新标题不就可以了嘛。这同样会存在问题,一个是第二个节点的经办人,在待办里看到的流程标题和打开表单时,看到的标题是不一致的,这么处理看起来不太合适;另一个是我们的环境中有这样的设置,流转异常时,自动跳转到下一节点,以实现当前部门部门经理空缺时,发起人发起流程时自动流转到部门所对应的总监。总监步骤也有同样的设置,因此,找一个必经节点去更新流程名称显然也不太合适。那看来最好的办法是在流程发起步骤就把流程编号和流程名称处理好。

处理

编号是在出口生成的,受这思路的引导,首先想到去尝试的是在生成编号的出口,去添加附加操作去更新标题。结果失败了。

出口的附加操作行不通,然后又试了下一个节点的节点前附加操作,结果同样没有实现我想要的效果。

尝试了以上方法之后,我决定用触发器来实现我的功能。其实我是比较抵触写触发器的,毕竟它隐蔽性强,测试不方便 ,而且并不常用。

我是这么设计的。给流程的表写一个触发器,负责在更新编号后,去更新流程的标题,更新锁定标题的字段。锁定标题字段是在workflow_requestbase里新加的一个字段。

流程表的触发器

USE [ecology]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[tri_formtable_main_123_upd]
   ON  [dbo].[formtable_main_123]
   AFTER UPDATE
AS 

declare @requestId int;

select    @requestId = requestId from deleted;

-- 取workflow_requestbase表的requestname和requestnamenew
declare    @requestname nvarchar(1000),
        @requestnamenew nvarchar(4000),
        @requestnamesplit nvarchar(4000),
        @requestfinish nvarchar(1000),
        @BH nvarchar(20)

BEGIN
    SET NOCOUNT ON;

    select    @BH =  Ltrim(Rtrim(isnull(BH, '')))
    from    inserted


    if update(BH)
    begin
        -- 取当前流程原有的流程名
        select    @requestname = ltrim(rtrim(isnull(requestname, ''))),
                @requestnamenew = ltrim(rtrim(isnull(@requestnamenew, '')))
        from    workflow_requestbase
        where    requestid = @requestId
        
        select  @requestnamesplit = replace(@requestname, @requestnamenew, '')
        if isnull(@BH, '') <> ''
        begin
            update  a 
            set     a.requestname = b.BH + '-' + b.KHMC + '-' + b.RQ ,
                    a.requestnamenew = b.BH + '-' + b.KHMC + '-' + b.RQ + ltrim(rtrim(isnull(@requestnamesplit, ''))),
                    a.lockname = 'Y'
            from    workflow_requestbase a 
                    inner join 
                    inserted b 
                    on a.requestid = b.requestid
        end
    end
END

看似这么简单就完事儿了,但实际创建流程的时候发现标题并没有改过来。通过Sql Server Profiler跟踪提交流程时候所执行的操作中发现,在生成了编号之后,还有一次对workflow_requestbase的更新,其中包括了更新标题。我猜这里泛微一定没有再去数据表里取一次标题,还是使用的从表单提交过来的标题。那么,还要给workflow_requestbase表写一个触发器。作用是控制在发起流程时,第二次更新标题时,根据lockname字段的值去判断当前的标题是不是由流程表里的触发器所更新的,如果是,把标题再更新回去。

workflow_requestbase的触发器
USE [ecology]
GO
/****** Object:  Trigger [dbo].[tri_workflow_requestbase_upd]    Script Date: 02/13/2023 09:09:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
ALTER TRIGGER [dbo].[tri_workflow_requestbase_upd]
   ON  [dbo].[workflow_requestbase] 
   after update
AS 
BEGIN
    SET NOCOUNT ON;
    
    -- 检查lockname标识,如果是Y,说明是生成的标识,不允许更改,办法是从deleted表里拿旧的requestname放到insert表里去。
    declare @requestnameold nvarchar(1000),
            @requestnamenew nvarchar(1000),
            @requestid int,
            @lockname nvarchar(1),
            @locknamenew nvarchar(1)
            
    select    @requestnameold = isnull(requestname,''),
            @requestid = isnull(requestid, ''),
            @lockname = isnull(lockname, '')
    from    deleted
    
    select    @requestnamenew = requestname,
            @locknamenew = isnull(lockname, '')
    from    inserted
    
    if update(requestname)
    begin
        if @lockname = 'Y' and @locknamenew = 'Y'
        begin
            update    a
            set        a.requestname = b.requestname,
                    a.requestnamenew = b.requestnamenew,
                    a.lockname = 'F'
            from    workflow_requestbase    a
                    inner    join
                    deleted    b
                    on    a.requestid = b.requestid
        end
    end
END

总结

这个问题前前后后折腾了好几天,当功能实现了的时候,心里回想了一句话“只要思想不滑坡,方法总比困难多。”

说几个走过的弯路。

1、路径设置里,设置了编号的流水号的长度,就生成不出流水号了。这时候要去检查你所给的字段的长度是不是不够长。

2、别试图更新触发器里的deleted表和inserted表,Sql Server不允许你这么干。

3、以上只是我想到的解决办法,不代表最优办法,也不代表标准办法。

http://www.zhongyajixie.com/news/3188.html

相关文章:

  • 云端网站建设站长工具站长之家官网
  • 合山网站建设网络营销推广平台有哪些
  • 魏县网站制作天津疫情最新消息
  • 重庆市住房和城乡建设厅网站口碑营销的好处
  • 公司网站做么做百度排名草莓永久地域网名入2022
  • 牛商的网站后台国际新闻 军事
  • wordpress无法缩进seo是什么东西
  • 做网站封面要怎么做seo网站优化课程
  • 贵阳经济技术开发区网站百度推广怎么优化
  • 青岛黄页电话查询徐州seo顾问
  • 网页版传奇3baidu优化
  • 做零食的网站有哪些深圳网站设计公司哪家好
  • wordpress仿微信底部菜单cssseo百度快速排名软件
  • 网站建设docseo行业岗位有哪些
  • 网站建设策划自动化测试培训机构哪个好
  • 长治个人做网站seo好学吗
  • 分类信息网站建设企业网站建设模板
  • 企业网站内页设计seo视频网页入口网站推广
  • 手机网站推荐几个seo实战密码第三版pdf
  • 公众号运营工作内容抖音seo关键词优化排名
  • 视频嵌入网站网络优化工程师吃香吗
  • 深圳招聘一般在哪个网站网络平台营销
  • 辽宁建设工程信息网报名步骤郑州百度seo网站优化
  • 日本文创产品设计seo最强
  • 直播网站如何做怎么建免费网站
  • 万网免费建企业网站app开发费用一般多少钱
  • 抖音代运营招商广西seo
  • 刚做的网站多久能被搜索到新冠不易感染三种人
  • 淘宝联盟建微网站seo免费
  • 免费企业营销网站制作营销网站定制