-1

次の関数は私にエラーを与えます:

FillFields("select Housemcode,Name, HP,Rateperhour ,Resource_H_Code FROM House_Machinery where Housemcode like '" + sSearch + "'");


public void FillFields(string sSQL)
    {
        sCommands.setSqldbCommand(sVariables.sDataSet, sVariables.sSqlDbDataAdapter, sSQL, "House_Machinery");
        DataRow sDataRow = sVariables.sDataSet.Tables["House_Machinery"].Rows[0];
        txtItemName.Text = sDataRow["Name"].ToString();
        txtrate.Text = sDataRow["HP"].ToString();
        txtrate.Text = sDataRow["Rateperhour"].ToString();
        Variables.StrResourceHeaderCode = sDataRow["Resource_H_Code"].ToString();

    }

エラー: 位置 0 に行がありません。

誰でもこれについて洞察を与えることができますか?

4

2 に答える 2

1

クエリは単に行を返していません。SQL Management StudioでSQLクエリを直接実行して、データが返されることを確認してください。

ちなみに、返された行を数えることで、実行時にデータが返されるかどうかを確認できます。

sCommands.setSqldbCommand(sVariables.sDataSet, sVariables.sSqlDbDataAdapter, sSQL, "House_Machinery");
if(sVariables.sDataSet.Tables["House_Machinery"].Rows.Count == 0)
   throw new Exception("No matching rows found");
DataRow sDataRow = sVariables.sDataSet.Tables["House_Machinery"].Rows[0];
于 2013-01-18T06:47:22.323 に答える
0
1.Just check with Breakpoints if it works well,
2.Does your Sql query working in sql server ? check that it may circle it out.
3.Check your wildcard "%like%",this may have issues.


 void somewhereelse()
{
  string qry = "select Housemcode,Name, HP,Rateperhour ,Resource_H_Code FROM House_Machinery    where Housemcode like '" + sSearch + "'";
  filldetails(qry);
}


protected void filldetails(string someqry)
{
  Sqlconnection conn = new SqlConnection("Connectionstring");      
  Datatable dt = new Datatable();
  try
   { 
    conn.Open();
    SqlDataAdapter dap = new SqlDataAdapter(someqry,conn);
    dap.fill(dt);
    if(dt.rows.count >0)
      {
       txtItemName.Text = dt.rows.[0]["Name"].ToString();
       txtrate.Text = dt.rows.[0]["HP"].ToString();
       txtrate.Text = dt.rows.[0]["Rateperhour"].ToString();
      }

   }
 catch
   {
     throw;
   }
 finally
   {
     if(conn!= null)
      {
        conn.close();
       }
   }
于 2013-01-18T06:57:12.967 に答える