在sql中将数据复制到新年

在sql中将数据复制到新年,sql,asp-classic,Sql,Asp Classic,我正在开发一个旧的asp应用程序,并将假期数据复制到同一个表中的新年。下面的代码在我的表中插入Null。我认为我们应该使用临时表,但不知道如何使用-我是一个新的bie。 这是我的代码: <!-- #include file="../IncludeFile/phuongvh_vn.inc" --> <!-- #include file="../IncludeFile/connection.inc" --> <!-- #include file="../IncludeF

我正在开发一个旧的asp应用程序,并将假期数据复制到同一个表中的新年。下面的代码在我的表中插入Null。我认为我们应该使用临时表,但不知道如何使用-我是一个新的bie。 这是我的代码:

<!-- #include file="../IncludeFile/phuongvh_vn.inc" -->
<!-- #include file="../IncludeFile/connection.inc" -->
<!-- #include file="../IncludeFile/changeformat.txt" -->
<%
if session("Login")<>"YES" then
    Response.Redirect "../login.asp"
end if
%>
<html>
<head>
<title>Move Holiday Information</title>
</head>
<%

    MySql = "Select * From tblHolidayTF Where Year(Holdate)=YEAR(GETDATE())"
    rs.Open MySql, Conn, 2, 2

%>
<BODY bgcolor="#fef9f3" text=#8b0000 aLink=#dc143c link=#1e90ff vLink=#1e90ff>
<%  
 if not rs.eof then
rs.AddNew

  rs("OfficeCode")=rs("OfficeCode")
  rs("Descript")=rs("Descript") 
  rs("Days")=rs("Days")
  rs("WorkHour")=rs("WorkHour")
rs("HolDate")=dateadd("yyyy",1,GETDATE())
//rs("HolDate")=GETDATE()


  rs("EndDate")=rs("EndDate")               
  if request("chkMemoSent")="on" then
        rs("MemoSent")=true
    else
        rs("MemoSent")=false
    end if
rs("Significance")=rs("Significance")   
  rs.Update
end if
%>
<center>
Holiday
<% if HolID<>"" then %> added
<% else %> updated
<% end if %> successfully... <br>
If this window is not going to close automatically in 5 seconds, please <br>
<a href="javascript:window.opener.location.reload();window.close();">Click here</a> to return...
<script>
    window.opener.location.reload();
    window.close();
</script>
</center>
</body>
</html>
<!-- #include file="../IncludeFile/disconnection.inc" -->

移动假日信息
假日
补充
更新
成功地
如果此窗口不会在5秒内自动关闭,请
返回。。。 window.opener.location.reload(); window.close();
您不能为此使用相同的记录集(Rs)。通过执行.AddNew,新记录将成为记录集中的当前记录(如前面提到的SearchAndResQ)

创建第二个记录集以创建新记录:

MySql = "Select OfficeCode, Descript From tblHolidayTF Where Year(Holdate)=YEAR(GETDATE())"

Rs.Open MySql, Conn, 2, 2

If Not Rs.EOF Then
    Dim RsNew: Set RsNew = Server.CreateObject("ADODB.Recordset")

    RsNew.Open "tblHolidayTF", Conn, 2, 2
    RsNew.AddNew
    RsNew("OfficeCode") = Rs("OfficeCode")
    RsNew("Descript") = Rs("Descript")
    RsNew.Update
    RsNew.Close
End If
或者(更好?)将Rs的值复制到数组中,关闭记录集并创建新记录。在这种情况下,您需要在查询中指定列以了解序列

MySql = "Select OfficeCode, Descript From tblHolidayTF Where Year(Holdate)=YEAR(GETDATE())"

Rs.Open MySql, Conn, 2, 2

If Not Rs.EOF Then
   Dim OldData: OldData = Rs.GetRows()

   Rs.AddNew
   Rs("OfficeCode") = OldData(0,0)
   Rs("Descript") = OldData(1,0)
   Rs.Update
End If

没有太多关于实际出错的信息:是否将记录插入数据库?此记录是否为空(空)?请检查您的代码是否符合“if not rs.eof”部分。除此之外:我还希望有一个循环,或者每年只有一个假期?您将当前日期填入“HolDate”,因此,如果您今天运行此脚本,那么明年的圣诞节可能是12/23/2015:-)谢谢您的回答。是,除了第一个COLLAM-自动增加-这是关键COLLAM之外,插入任何COLLAM值的记录。因为空值uu我刚刚尝试像那样更改'Holdate',但是空值仍然存在(空值而不是2015年12月23日)。有很多假期,但我不知道如何逐个插入记录,可能是我们必须先使用rs。然后使用rs。但我们至少应该成功插入一条记录。当您使用
rs.AddNew
时,您正在添加新行(显然:))添加到记录集。作为新行,这些字段中没有任何一个将具有任何值。这就是为什么在执行
rs(“Descript”)=rs(“Descript”)
等操作时,这些字段会插入空值。对于
HolDate
字段,使用
date()
而不是
getdate()
,您应该插入当前日期。