C# SQL中的表中存在重复记录
我有一张表格,是主管、经理和主管的aspx表格。当任何用户上传文档时,该文档首先转到supervsior,然后是经理,然后是主管以进行批准/拒绝 用户“kat”上传文档,并将其文档提交给supervsior、经理、主管审批/拒绝,如表所示C# SQL中的表中存在重复记录,c#,asp.net,sql,sql-server-2008,stored-procedures,C#,Asp.net,Sql,Sql Server 2008,Stored Procedures,我有一张表格,是主管、经理和主管的aspx表格。当任何用户上传文档时,该文档首先转到supervsior,然后是经理,然后是主管以进行批准/拒绝 用户“kat”上传文档,并将其文档提交给supervsior、经理、主管审批/拒绝,如表所示 Seqno DocID ApproveID ApproveBy DesigID ApproveDate 1 16 1 abc 1 10/11/2013 2
Seqno DocID ApproveID ApproveBy DesigID ApproveDate
1 16 1 abc 1 10/11/2013
2 16 1 def 2 11/12/2013
3 16 1 xyzz 3 14/12/2013
当用户“kat”查看文档时,其文档是否批准/拒绝,如下所示
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance approve
docid docname filename department email uploadedby uploadedate
16 finad fina.docx fiance sadas@gmail.com kat 04/11/2013 (this is old document)
17 hrrr hrr.docs finance abc@gmail.com john 15/11/2013 (this is new document)
Seqno DocID ApproveID ApproveBy DesigID ApproveDate
1 16 1 abc 1 10/11/2013
2 16 1 def 2 11/12/2013
3 16 1 xyzz 3 14/12/2013
4 16 1 ssd 1 15/11 2013
5 17 3 dfsdf 1 15/11/2013
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance reject
ALTER procedure [dbo].[approveddd]
@DocID int,
@ApproveID int,
@ApproveBy nvarchar(50),
@DesigID int
as
IF EXISTS(Select DocID from Approval where DocID=@DocID and AppoveBy=@ApproveBy)
Update Approval set ApproveID=@ApproveID where DocID=@DocID and AppoveBy=@ApproveBy
ELSE
insert Approval (DocID,ApproveID,AppoveBy,DesigID,ApproveDate)
values(@DocID,@ApproveID,@ApproveBy,@DesigID,GETDATE())
当其他用户上载文档时,以及当此文档提交给supervsior、经理、主管审批时
然后在supervsior形式中,它看起来是这样的
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance approve
docid docname filename department email uploadedby uploadedate
16 finad fina.docx fiance sadas@gmail.com kat 04/11/2013 (this is old document)
17 hrrr hrr.docs finance abc@gmail.com john 15/11/2013 (this is new document)
Seqno DocID ApproveID ApproveBy DesigID ApproveDate
1 16 1 abc 1 10/11/2013
2 16 1 def 2 11/12/2013
3 16 1 xyzz 3 14/12/2013
4 16 1 ssd 1 15/11 2013
5 17 3 dfsdf 1 15/11/2013
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance reject
ALTER procedure [dbo].[approveddd]
@DocID int,
@ApproveID int,
@ApproveBy nvarchar(50),
@DesigID int
as
IF EXISTS(Select DocID from Approval where DocID=@DocID and AppoveBy=@ApproveBy)
Update Approval set ApproveID=@ApproveID where DocID=@DocID and AppoveBy=@ApproveBy
ELSE
insert Approval (DocID,ApproveID,AppoveBy,DesigID,ApproveDate)
values(@DocID,@ApproveID,@ApproveBy,@DesigID,GETDATE())
所以,当supervsior批准文档(DOCID17)时,已经批准/拒绝的旧文档也保存在数据库中,之后保存在表中
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance approve
docid docname filename department email uploadedby uploadedate
16 finad fina.docx fiance sadas@gmail.com kat 04/11/2013 (this is old document)
17 hrrr hrr.docs finance abc@gmail.com john 15/11/2013 (this is new document)
Seqno DocID ApproveID ApproveBy DesigID ApproveDate
1 16 1 abc 1 10/11/2013
2 16 1 def 2 11/12/2013
3 16 1 xyzz 3 14/12/2013
4 16 1 ssd 1 15/11 2013
5 17 3 dfsdf 1 15/11/2013
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance reject
ALTER procedure [dbo].[approveddd]
@DocID int,
@ApproveID int,
@ApproveBy nvarchar(50),
@DesigID int
as
IF EXISTS(Select DocID from Approval where DocID=@DocID and AppoveBy=@ApproveBy)
Update Approval set ApproveID=@ApproveID where DocID=@DocID and AppoveBy=@ApproveBy
ELSE
insert Approval (DocID,ApproveID,AppoveBy,DesigID,ApproveDate)
values(@DocID,@ApproveID,@ApproveBy,@DesigID,GETDATE())
此处1为批准,3为待定
我使用下拉列表,在下拉列表中,我填写下拉列表“批准、拒绝、待定”中的所有值
所以当“kat”再次看到他/她的文档时,它会这样看我
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance approve
docid docname filename department email uploadedby uploadedate
16 finad fina.docx fiance sadas@gmail.com kat 04/11/2013 (this is old document)
17 hrrr hrr.docs finance abc@gmail.com john 15/11/2013 (this is new document)
Seqno DocID ApproveID ApproveBy DesigID ApproveDate
1 16 1 abc 1 10/11/2013
2 16 1 def 2 11/12/2013
3 16 1 xyzz 3 14/12/2013
4 16 1 ssd 1 15/11 2013
5 17 3 dfsdf 1 15/11/2013
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance reject
ALTER procedure [dbo].[approveddd]
@DocID int,
@ApproveID int,
@ApproveBy nvarchar(50),
@DesigID int
as
IF EXISTS(Select DocID from Approval where DocID=@DocID and AppoveBy=@ApproveBy)
Update Approval set ApproveID=@ApproveID where DocID=@DocID and AppoveBy=@ApproveBy
ELSE
insert Approval (DocID,ApproveID,AppoveBy,DesigID,ApproveDate)
values(@DocID,@ApproveID,@ApproveBy,@DesigID,GETDATE())
我像这样使用sp
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance approve
docid docname filename department email uploadedby uploadedate
16 finad fina.docx fiance sadas@gmail.com kat 04/11/2013 (this is old document)
17 hrrr hrr.docs finance abc@gmail.com john 15/11/2013 (this is new document)
Seqno DocID ApproveID ApproveBy DesigID ApproveDate
1 16 1 abc 1 10/11/2013
2 16 1 def 2 11/12/2013
3 16 1 xyzz 3 14/12/2013
4 16 1 ssd 1 15/11 2013
5 17 3 dfsdf 1 15/11/2013
docname fileuploaded uploadedate deptype status
finad fina.docx 04/11/2013 finance reject
ALTER procedure [dbo].[approveddd]
@DocID int,
@ApproveID int,
@ApproveBy nvarchar(50),
@DesigID int
as
IF EXISTS(Select DocID from Approval where DocID=@DocID and AppoveBy=@ApproveBy)
Update Approval set ApproveID=@ApproveID where DocID=@DocID and AppoveBy=@ApproveBy
ELSE
insert Approval (DocID,ApproveID,AppoveBy,DesigID,ApproveDate)
values(@DocID,@ApproveID,@ApproveBy,@DesigID,GETDATE())
我不太了解您的数据集,但是使用 唯一序列号(
seqno
),而不是
DocID
和ApproveBy
?节省了我几次时间。由于
seqno
是独一无二的。我想你必须考虑如何处理
一个DocID
和ApproveBy
生成>1个序号的情况
所以不是
IF EXISTS(Select DocID from Approval where DocID=@DocID and AppoveBy=@ApproveBy)
Update Approval set ApproveID=@ApproveID where DocID=@DocID and AppoveBy=@ApproveBy
ELSE
insert Approval (DocID,ApproveID,AppoveBy,DesigID,ApproveDate)
values(@DocID,@ApproveID,@ApproveBy,@DesigID,GETDATE())
;
试一试
你的问题是…?恐怕我搞不清楚问题是什么。有没有办法停止保存表中已经存在的记录表中的记录像上面一样一旦supervsior批准/拒绝16个文档,那么当任何supervsior批准/拒绝文档时,16个文档记录就不会保存在表中,因为这是aleardy批准/拒绝在我看来,它已经这样做了。我看到“如果存在(…)更新。。。否则插入。。。“但是根据你上面说的,没有重复数据,因为文档没有使用ApprovedBy重复。您应该只更新挂起的文档,因此将此条件添加到您的更新语句确定我在上载新文档和supervsior时尝试此操作批准/拒绝此新文档,然后记录不转到数据库检查此pic是否确定sql存在问题而不是使用asp代码?insert/update查询是否向您提供任何错误消息?过程是否选择了正确的
seqno
etc?seqno是在sql中自动生成的。因此,它是如何插入和添加到代码中的。因此,您可以在seqno
上进行匹配,而不是在DocID
上进行匹配,并且ApproveBy
是唯一的。再仔细看一看,代码中有可怕的拼写错误。看看这个:从批准中选择DocID,其中DocID=@DocID和AppoveBy=@ApproveBy
。没有名为AppoveBy的列不带“r”。我原以为这个专栏叫这个,但它没有任何意义啊,appoveby是一个专栏,我通过approveby更正了它