2014-12-23 3 views
-1

나는 오래된 ASP 응용 프로그램에서 일하고 있으며, 같은 테이블에서 새해에 puplic 휴가 데이터를 복사하려고합니다. 아래의 코드는 Null을 테이블에 삽입합니다. 나는 임시 테이블을 사용해야한다고 생각하지만 어떻게해야할지 모르겠다. 나는 새로운 바이다. 여기 내 코드 :SQL에서 새해 데이터 복사

<!-- #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" --> 
+0

실제로 실제로 잘못되었는지에 대한 정보는 많지 않습니다. 데이터베이스에 삽입 된 레코드인지 아닌지에 대한 정보가 충분하지 않습니까? 이 레코드가 비어 있습니까 (null)? 코드가 'if not rs.eof'부분에 도달하는지 확인하십시오. 그 외에 : 나는 또한 루프를 기대하거나 일년에 단 하나의 휴일이 있습니까? 그리고 "HolDate"를 현재 날짜로 채우십시오. 오늘이 스크립트를 실행하면 내년 12 월 23 일 12시 23 분에 크리스마스가 될 수 있습니다 :-) – kloarubeek

+0

답변 해 주셔서 감사합니다. 예 레코드 첫 번째 collum -auto 증가를 제외한 모든 collum에 대해 값이 삽입되었습니다. 이것은 키 콜 럼입니다. null 값 때문에 _ 나는 'Holdate'와 같은 변경을 시도해 보았습니다. - 그러나 여전히 null 값 (2015 년 12 월 23 일 대신 NULL)이 있습니다. 휴일이 많지만 하나씩 삽입하는 방법을 알아 내지 못합니다 , 우리는 rs.First와 rs를 사용해야 할 수도 있습니다. 다음에 우리는 하나의 레코드를 성공적으로 삽입해야합니다. – HUNG

+0

'rs.AddNew'를 사용하면 레코드 세트에 새로운 행 (분명히 :)을 추가하고 있습니다., being 'rs ("Descript") = rs ("Descript")'등을 할 때 null을 삽입하는 이유입니다. 그리고'HolDate' 필드의 경우' 'getdate()'대신에 date()'를 쓰면 현재 날짜가 삽입되어야합니다. – SearchAndResQ

답변

0

이 경우 동일한 레코드 세트 (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