Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL中的表中存在重复记录_C#_Asp.net_Sql_Sql Server 2008_Stored Procedures - Fatal编程技术网

C# SQL中的表中存在重复记录

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

我有一张表格,是主管、经理和主管的aspx表格。当任何用户上传文档时,该文档首先转到supervsior,然后是经理,然后是主管以进行批准/拒绝

用户“kat”上传文档,并将其文档提交给supervsior、经理、主管审批/拒绝,如表所示

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更正了它