-2

助けてください。asp.net Web ページ構文でビット データ型を更新する際に問題があります。これが私のコードです

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 UserId=@0";

        db.Execute(updateCommand1, idAdmin2);

        var updateCommand2 = "UPDATE UserProfile  SET onDuty= 1 WHERE UserId=@0";
        db.Execute(updateCommand2, idAdmin);
        Response.Redirect("~/SuperAdmin/diklat"); 


        }

モジュールはこれを行うことを想定しています: 管理者のステータス (勤務中かどうか) をビット データ型で編集します。私が抱えている状況は、管理者が新しいものに更新されると、古いもののビットデータ型である onDuty は 0 (1 から) に更新されませんが、新しいものは 1 (0 から) に正常に更新されます。長いコードで申し訳ありません。問題は単純ですが、この問題が私のコードの他の場所から発生していないことを確認したいだけです。それが十分に明確であることを願っています

注意 : エラーのアナウンスは一切ありません! ページは引き続き機能しますが、データベース内のデータのみが更新されません

4

1 に答える 1

1

フォームが投稿されるとき、の値はidAdmin2デフォルトの空の文字列です。それ以外には設定されていません。そのため、UserId 値を持たない行のみが最初の UPDATE コマンドで更新されます (おそらく意図したものではありません)。idAdmin2セクションに値を割り当てて、if(IsPost)影響を与える行と一致するようにします。

于 2013-10-14T04:59:45.443 に答える