2012-09-17 25 views
0

當我步執行代碼被添加的參數,其被執行的SQL命令只是時,引發此錯誤最多標量變量@AssetNumber

public static DataTable GetPostings2(string AssetNumberV, string PeriodFromV, string PeriodToV) 
    { 
     DataTable dtGetPostings2; 
     try 
     { 
      dtGetPostings2 = new DataTable("GetPostings"); 

      SqlParameter AssetNumber = new SqlParameter("@AssetNumber", SqlDbType.VarChar, 6); 
      AssetNumber.Value = AssetNumberV; 

      SqlParameter PeriodFrom = new SqlParameter("@PeriodFrom", SqlDbType.VarChar, 6); 
      PeriodFrom.Value = PeriodFromV; 

      SqlParameter PeriodTo = new SqlParameter("@PeriodTo", SqlDbType.VarChar, 6); 
      PeriodTo.Value = PeriodToV; 

      SqlCommand scGetPostings2 = new SqlCommand("SELECT * FROM [POSTING] WHERE [ASSET_NO] = @AssetNumber And PERIOD >= @PeriodFrom AND PERIOD <= @PeriodTo ORDER by PERIOD, JOUR_REF, JOUR_LINE", DataAccess.AssetConnection); 

      SqlDataAdapter sdaGetPostings2 = new SqlDataAdapter(); 
      sdaGetPostings2.SelectCommand = scGetPostings2; 
      sdaGetPostings2.Fill(dtGetPostings2); 

      return dtGetPostings2; 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error Retriving Posting Details: Processed with this error:" + ex.Message); 
      return null; 
     } 
    } 
+3

拋出什麼錯誤到底是什麼?你能發佈完整的例外(w/stacktrace)嗎? –

+2

您不要將參數添加到任何位置的命令對象。 –

+0

「必須聲明標量變量」「@AssetNumber」。 –

回答

3

列出不將參數添加到該代碼SqlCommand.Parameters collection。例如:

SqlCommand scGetPostings2 = new SqlCommand("SELECT * FROM [POSTING] WHERE [ASSET_NO] = @AssetNumber And PERIOD >= @PeriodFrom AND PERIOD <= @PeriodTo ORDER by PERIOD, JOUR_REF, JOUR_LINE", DataAccess.AssetConnection); 
scGetPostings2.Parameters.Add(AssetNumber); 
scGetPostings2.Parameters.Add(PeriodFrom); 
scGetPostings2.Parameters.Add(PeriodTo); 

// Code continues as above 
SqlDataAdapter sdaGetPostings2 = new SqlDataAdapter(); 
// And so on 
+0

哦,非常感謝,我不是我現在出錯了 –