2013-10-14 2 views
-2

도와주세요. asp.net 웹 페이지 구문을 사용하여 비트 데이터 유형을 업데이트하는 데 문제가 있습니다. 여기에 모듈이 작업을 수행하기 위해 가정 내 코드Bit 데이터 유형 SQL Server 웹 페이지를 업데이트 할 수 없습니다.

var db = Database.Open("StarterSite"); 
var idAdmin = ""; // Here's the ID of the new Admin 
var idAdmin2 = ""; // Here's The ID of the old Admin 




if(!IsPost){ 
    if(!Request.QueryString["id"].IsEmpty() && Request.QueryString["id"].IsInt()) { 
     diklatid = Request.QueryString["id"]; 
     var dbCommand = "SELECT * FROM diklat WHERE ID_diklat = @0"; 
     var row = db.QuerySingle(dbCommand, diklatid); 

     if(row != null) { 
      string rowidadmin = row.ID_Admin.ToString(); 


     idAdmin2 = rowidadmin; // Inserted the ID value of old admin to this variable 

    } 
     else{ 
      Validation.AddFormError("No data choosen"); 

     } 
    } 
    else{ 
     Validation.AddFormError("No data choosen"); 

    } 
} 

if(IsPost){ 
    idAdmin = Request.Form["idAdmin"]; //The ID value of new admin comes from the Form 

    if (idAdmin == idAdmin2){ 

    //Check if the new admin equals to old admin 
    -------------------//do something------ 
     Response.Redirect("~/SuperAdmin/diklat"); 
     } 
     else 
     { 
     //-----------------------------The Main Problem------------------------ 

     // If different it suppose to change "onDuty" variable of the new one to 1 (true) and the old one to 0 (false) 

     var updateCommand1 = "UPDATE UserProfile SET onDuty= 0 WHERE [email protected]"; 

     db.Execute(updateCommand1, idAdmin2); 

     var updateCommand2 = "UPDATE UserProfile SET onDuty= 1 WHERE [email protected]"; 
     db.Execute(updateCommand2, idAdmin); 
     Response.Redirect("~/SuperAdmin/diklat"); 


     } 

입니다 : 비트 데이터 타입에서 (근무 여부) 관리자의 상태를 편집. 내가 가진 상황은 관리자가 새 노드로 업데이트되면 이전 노드의 비트 데이터 유형 인 onDuty가 0 (1에서)로 업데이트되지 않지만 새 값이 1 (0에서)으로 업데이트됩니다. 죄송합니다 긴 코드, 문제는 간단하지만 난이 문제가 내 코드에서 다른 곳에서 오지 않는지 확인하고 싶습니다. 충분히 명확 할 것입니다.

참고 : 오류 공고는 전혀 없습니다! 페이지가 여전히 작동하고 데이터베이스의 데이터 만 업데이트되지 않습니다.

+0

-1 너무 많은 코드를 게시하는 경우. 문제를 좁히고 관련 코드 만 게시 할 수 있습니까? –

+0

좋아, 나는 그것이 친구 @JohnSaunders 나는 당신의 제안에 따라 편집 한 –

답변

1

양식이 게시되면 idAdmin2의 값이 기본 빈 문자열입니다. 다른 것으로 설정되지 않았습니다. 따라서 UserId 값이없는 행만 첫 번째 UPDATE 명령에서 업데이트됩니다 (의도 한 것과 다를 수 있음). if(IsPost) 섹션의 값을 idAdmin2으로 지정하여 영향을주고 자하는 행과 일치 시키십시오.

+0

을 범위를 좁힐, 그것을 희망 편집했지만 여전히 작동하지 않습니다 '경우 (IsPost) { idAdmin =으로 Request.Form [ "idAdmin"]; if (idAdmin! = idAdmin2) { var updateCommand1 = "UPDATE UserProfile SET onDuty = 0 WHERE UserId = @ 0"; db.Execute (updateCommand1, idAdmin2); }' –

+0

admin2 값을 아직 설정하지 않았습니다. 여전히 빈 문자열입니다. –

+0

하지만 행에 할당했다고 생각했습니다. if (! isPost) 조건의 Id_Admin 값 –