0

特定の列フォーム データ セットを読み取る方法について質問があります。

私はこのコードを持っています:

cmd_line.CommandText = "SELECT IDOC_NUM, SEG_NUM FROM AGR3PL_LINE WHERE IDOC_NUM = '" + Lidoc_num + "'";

OracleDataAdapter ora_adapter_li = new OracleDataAdapter(cmd_line);
DataSet ds_idoc_li = new DataSet("AGR3PL_LINE");
ora_adapter_li.Fill(ds_idoc_li, "AGR3PL_LINE");

if (ds_idoc_li.Tables[0].Rows.Count == 0)
{
   SEG_NUM_L = 1;
}
else
{
   int var = Convert.ToInt32(ds_idoc_li.Tables["AGR3PL_LINE"]["SEG_NUM"]);
   SEG_NUM_L = var;
   SEG_NUM_L++;
}

最初にSEG_NUM変数を抽出するために選択を行い、次にデータセットに行があるかどうかを確認し、設定されていない場合はSEG_NUM = 1抽出SEG_NUMし、それを読み取り、1 だけインクリメントします。

この部分に問題があります:

int var = Convert.ToInt32(ds_idoc_li.Tables["AGR3PL_LINE"].Rows[0]["SEG_NUM"]);

エントリが 2 つある場合は問題なく動作しますが、エントリが 2 つを超える場合は 3 のエラーが発生します。

この部分は正しくありません

 Convert.ToInt32(ds_idoc_li.Tables["AGR3PL_LINE"].Rows[0]["SEG_NUM"]);
4

1 に答える 1

2

次のようにRows コレクションからの値にアクセスできます。DataTable

Convert.ToInt32(ds_idoc_li.Tables["AGR3PL_LINE"].Rows[indexofRow][columnName or Index]);

これを試して:

if (ds_idoc_li.Tables[0].Rows.Count == 0)
{
   SEG_NUM_L = 1;
}
else
{
  foreach(DataRow row in ds_idoc_li.Tables["AGR3PL_LINE"].Rows)
  {
   int var = Convert.ToInt32(row["SEG_NUM"]);
   SEG_NUM_L = var;
   }
   SEG_NUM_L++;  
}
于 2012-05-31T13:21:30.757 に答える