自定义设置提交情况

FR提交sql数据库有三个字段 项目id 上报时间 版本号 当输入的项目id和上报时间相同时,版本号最大值+1。这种该如何设置,如果触发器可以实现,那么该如何设置种类型的触发器。求助各路大神答疑

用户pTRe39255 发布于 2020-5-13 17:48
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
snrtuemcLv8专家互助
发布于2020-5-14 08:06(编辑于 2020-5-14 10:23)

填报单元格使用sql函数,填报版本号的单元格用下面函数

sql("DBNAme","select max(版本号)+1 from 表 where 项目ID='"+项目ID单元格+"'",1,1)


sql("DBNAme","select max(版本号)+1 from 表 where 项目ID='"+项目ID单元格+"' 日期='"+日期单元格+"' and 版本号='"+版本号单元格+"'",1,1)


sql函数用法

SQL(connectionName,sql,columnIndex,rowIndex):返回的数据是从 connectionName 数据库中获取的 SQL 语句的表中的第 columnIndex 列第 rowIndex 行所对应的元素。

connectionName:数据库名,字符串形式,需要用引号如"FRDemo";

sql:SQL 语句或者数据库存储过程,字符串形式,传参数、条件等可以在此拼接实现;

columnIndex:列序号,整型;

rowIndex:行序号,整型。

注:行序号可以不写,这样返回值为数据列。


  • 用户pTRe39255 用户pTRe39255(提问者) 请问,再次输入相同项目ID报错提示:违反了primarykey约束,不能在对象“dbo.testbanbenhao\"中插入重复建,重复键值为(1)。我这个想要的效果是 项目ID+日期+版本号 查询的是唯一值。当项目ID+日期相同时 版本号自动+1。麻烦您了!!!
    2020-05-14 10:19 
  • snrtuemc snrtuemc 回复 用户pTRe39255(提问者) sql(\"DBNAme\",\"select max(版本号)+1 from 表 where 项目ID=\'\"+项目ID单元格+\"\' 日期=\'\"+日期单元格+\"\' and 版本号=\'\"+版本号单元格+\"\'\",1,1)
    2020-05-14 10:23 
  • snrtuemc snrtuemc 回复 用户pTRe39255(提问者) 你的估计醒目ID已经是不能重复了,需要修改数据库表结构了
    2020-05-14 10:23 
  • 用户pTRe39255 用户pTRe39255(提问者) 非常感谢大神指导。
    2020-05-14 14:49 
最佳回答
1
L大大Lv7高级互助
发布于2020-5-13 19:08

写个存储过程,加载执行返回版本号,这样会保证多人打开不会重复

ALTER proc Log_Scan_Djbh

as

set NOCOUNT ON

declare @y as varchar(2);

declare @m as varchar(2);

declare @d as varchar(2);

declare @num as int; 

set nocount on

set @y=right(year(getdate()),2)

set @m=datename(MM,getdate())

set @d=substring(convert(varchar(10),getdate(),23),9,2)

select @num=cast(max(right(djbh,4)) as int)+1 from Log_scan_smd where convert(varchar(10),Create_time,23)=convert(varchar(10),getdate(),23)

begin

-- print @y+@m+@d;

if @num is null

begin 

insert into Log_scan_smd(Djbh,Create_time) values('SCBH'+@y+@m+@d+'0000',getdate())

select max(djbh) from Log_Scan_SMD

end

else 

begin 

insert into Log_scan_smd(Djbh,Create_time) values('SCBH'+@y+@m+@d+right('0000'+cast(@num as varchar),4),getdate())

-- print right('0000'+cast(@num as varchar),4)

select max(djbh) from Log_Scan_SMD

end 

end


  • 4关注人数
  • 491浏览人数
  • 最后回答于:2020-5-14 10:23
    请选择关闭问题的原因
    确定 取消
    返回顶部