ビジュアル C# のデータ ソースから変数に変数を渡そうとしていますが、コードは値を返しません。
値を取得するために使用しているコードは次のとおりです。
object o = rateTableDBDataSet1.Tables["RateTable"].Rows[1][0];
位置 1 に行がないという結果が返ってきました。何かアイデアはありますか?
私はあなたが何を望んでいるかについて少し混乱しています。
データテーブルの構造とデータを一方の側からもう一方の側にコピーする場合は、Copyメソッドを試してください。
System.Data.DataTable tb = new System.Data.DataTable();
System.Data.DataTable tb2 = new System.Data.DataTable();
object obj = new object();
obj = tb.Copy();//adding to obj if you want....
tb2 = tb.Copy();// of to another table without carrying the reference
編集:
あなたのコメントによると、これはあなたが望むものの例です:
DataSet rateTableDBDataSet1 = new DataSet();
//ds = whatever your data is comming from
bool doesItHaveData = rateTableDBDataSet1.Tables["RateTable"].Rows.Count > 0;
if (doesItHaveData)
{
object col1row1 = rateTableDBDataSet1.Tables["RateTable"].Rows[0][0];
object col2row1 = rateTableDBDataSet1.Tables["RateTable"].Rows[0][1];
object col1row2 = rateTableDBDataSet1.Tables["RateTable"].Rows[1][0];
}
現在のエラーは、おそらく2レコードではないデータのデータがないためです(行1にアクセスしていて、インデックスは0で始まります)
public static decimal opcomm { get; set; }
public static decimal opcommPercentage { get; set; }
public static void SetOpCommission()
{
using (DataBaseClass dataclass = new DataBaseClass())
{
dataclass.Connect();
string sql = @"SELECT EmployeeComission, EmployeeComissionPercentage,MobileKindId,Id,StartDate FROM EmployeeCommission";
opcomm = (decimal)dataclass.ExecuteScalar(sql);
opcommPercentage = (decimal)dataclass.ExecuteScalar(sql);
}
}
まず、「RateTable」に 2 番目の行がない理由を理解する必要があります。
一般に、列の値を取得するコードは正しいです。ただし、通常は名前で列にアクセスする方が適切です。これは読みやすく、列の順序が変更された場合にエラーが発生しにくくなります。
object o = rateTableDBDataSet1.Tables["RateTable"].Rows[0]["Column"]
「列」は実際の列名です。