2016-09-07 1 views
1

私のコードで何が問題なのか分かりません。このエラーは "テーブル0を見つけることができません"というasp.net C#で引き続きあります。私はデータセットを使用しています。テーブル0のエラーを解決できません

私は次のように私のC#コードは、以下のように

If @mode='INSERT' 
    Begin 
    if exists(select 1 from COD_BLU_OPENING_VOLUME where target_dt=convert(date,getdate(),101) and [email protected]) 
         Begin 
       If not exists(select 1 from COD_BLU_INVENTORY with(nolock) where ([email protected] and STATUS='A' and TargetDt = convert(date,@targetdt,101))) 
        Begin 
         insert into COD_BLU_INVENTORY(JOBID,TargetDt,CarryOver,FreshVol,TotalVol,Status,UpdatedBy,UpdateDt) 
         VALUES(@job,@targetdt,@CarryoverVol,@FreshVol,@TotalVol,'A',@Empcode,GETDATE()) 
         select '1' 
        End 
       else 
        Begin 
         select'0' 
        End 
      End  

     if not exists(select 1 from COD_BLU_OPENING_VOLUME where target_dt<=convert(date,getdate(),101) and [email protected]) 

      Begin 
       insert into COD_BLU_OPENING_VOLUME(target_dt,JobID,Opening_Count,Updated_by,Updated_Dt,Pre_AssignedCount) 
       values(@openTarDt,@openJob,@openCnt,@openEmpcode,GETDATE(),@preOpenCnt) 

       If not exists(select 1 from COD_BLU_INVENTORY with(nolock) where ([email protected] and STATUS='A' and TargetDt = convert(date,@targetdt,101))) 
        Begin 
         insert into COD_BLU_INVENTORY(JOBID,TargetDt,CarryOver,FreshVol,TotalVol,Status,UpdatedBy,UpdateDt) 
         VALUES(@job,@targetdt,@CarryoverVol,@FreshVol,@TotalVol,'A',@Empcode,GETDATE()) 
         select '0' 
        End 
       else 
        Begin 
         select'1' 
        End 
      End 

End 

をストアドプロシージャを書いた

if (btnSave.Text == "Save (F9)") 
      { 
       objBE.mode = "INSERT"; 
       objBE.carryoverVol = Convert.ToInt32(txtCarryOver.Text); 
       objBE.freshVol = Convert.ToInt32(txtFreshVol.Text); 
       objBE.totalVol = Convert.ToInt32(txtTotalVol.Text); 
       objBE.job = ddljob.SelectedValue; 
       DateTime temp = DateTime.ParseExact(txtTargetDate.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None); 
       objBE.targetDate = Convert.ToDateTime(temp); 
       objBE.empcode = Session["EMPCODE"].ToString(); 
       DateTime opentemp = DateTime.ParseExact(txtTargetDate.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None); 
       objBE.openTarDt = Convert.ToDateTime(opentemp); 
       objBE.openJob = ddljob.SelectedValue; 
       hdnPreOpenCnt.Value = txtCarryOver.Text; 
       objBE.preCnt = Convert.ToInt32(hdnPreOpenCnt.Value); 
       string curDate = DateTime.Now.ToString("MM'/'dd'/'yyyy"); 
       if (txtTargetDate.Text != curDate) 
       { 
        objBE.opneCount = 0; 
       } 
       else 
       { 
        objBE.opneCount = Convert.ToInt32(hdnOpenVol.Value); 
       } 
       objBE.openEmpcode = Session["EMPCODE"].ToString(); 
       ds = objBLL.FetchInventoryDetails(objBE); 
       if (ds.Tables[0].Rows[0][0].ToString() == "0") 
       { 
        ScriptManager.RegisterStartupScript(this, GetType(), "check", "alert('The JOB is already mapped. Please check');", true); 
       } 
       else 
       { 
        ScriptManager.RegisterStartupScript(this, GetType(), "saved", "alert('Saved Successfully');", true); 
        clearControls(); 
       } 

      } 

fetchinventorydetailsコード:

public DataSet FetchAssignmentDetails(BE objBE) 
    { 
     DataSet ds = new DataSet(); 
     SqlParameter[] paramValue = new SqlParameter[] 
     { 
     new SqlParameter("@mode",objBE.mode), 
     new SqlParameter("@job",objBE.job), 
     new SqlParameter("@qaname",objBE.qcName), 
     new SqlParameter("@targetdt",objBE.targetDate), 
     new SqlParameter("@targetvalue",objBE.targetcount), 
     new SqlParameter("@codername",objBE.coderName), 
     new SqlParameter("@ProjID",objBE.ProjectId), 
     new SqlParameter("@Empcode",objBE.empcode), 
     new SqlParameter("@id",objBE.id), 
     new SqlParameter("@startdt",objBE.startDate), 
     new SqlParameter("@enddt",objBE.endDate) 
     }; 
     SQLHelper.ExecuteDataSet(SQLHelper.CONN_STRING_NON_DTC, CommandType.StoredProcedure, "sp__Assignment", ds, "Assignment", paramValue); 
     return ds; 
    } 

私を助けてください。

+0

は 'FetchInventoryDe​​tails'は何も返していないように見えます。 – stuartd

+0

ありがとう、私のコードで間違いを見つけたのですか?@stuart – rohini

+0

'FetchInventoryDe​​tails'のコードを共有できます –

答えて

1

データベースからデータセットにデータが返されていないようです。

ヌル参照の例外を避けるためにアクセスする前に、テーブル存在の有無を確認するのが良い方法です。また、位置0のエラーで行を避けるために、テーブルにアクセスする前にテーブルの行数をチェックする必要があります。以下のような表にアクセスする前に

プット・チェック、

ds = objBLL.FetchInventoryDetails(objBE); 
if(ds.Tables.Count > 0) 
{     

if(ds.Tables[0].Rows.Count > 0) 
{ 
if (ds.Tables[0].Rows[0][0].ToString() == "0") 
      { 
       ScriptManager.RegisterStartupScript(this, GetType(),  "check", "alert('The JOB is already mapped. Please check');", true); 
      } 
      else 
      { 
       ScriptManager.RegisterStartupScript(this, GetType(), "saved", "alert('Saved Successfully');", true); 
       clearControls(); 
      } 
} 
} 
関連する問題