1

C# でプロジェクトに取り組んでおり、site_id 8 で作業しているすべてのワーカーの emp_id を取得し、それをフォームに表示したいと考えています。私がやったことは

SqlCommand cmd3 = new SqlCommand("Select emp_id from employee_attendance where site_id=8",conn); 
SqlDataReader reader = cmd3.ExecuteReader();
while(reader.Read())
{
int emp_id =Convert.ToString(reader[0]));
label7.Text = Convert.ToString(emp_id);
}

結果は 1 つしか表示されていませんが、クエリに一致する従業員が 2 人いることはわかっています。

4

5 に答える 5

4

毎回ラベルを上書きするので、常に最後のものを表示することになります。次のようなことができます。

StringBuilder builder = new StringBuilder();
while(reader.Read())
{
    builder.Append(reader[0]);
    builder.Append(" ");
}
label7.Text = builder.ToString();

これにより、すべての ID が互いに追加された 1 つの長い文字列が作成されます (末尾にスペースが追加されます)。末尾のスペースを削除する必要がある場合は、結果の文字列をトリムすることもできます。

builder.Remove(builder.Length-1, 1);
label7.Text = builder.ToString();
于 2012-06-14T16:20:36.380 に答える
2

常にラベル値を上書きしているため、1 つの ID のみが表示されます。

label7.Text = Convert.ToString(emp_id);

それを連結する必要があります:

SqlCommand cmd3 = new SqlCommand("Select emp_id from employee_attendance where site_id=8",conn); 
SqlDataReader reader = cmd3.ExecuteReader();
StringBuilder sb = new StringBuilder();

while(reader.Read())
{
    int emp_id =Convert.ToString(reader[0]));
    sb.Append(Convert.ToString(emp_id) + ", ");
}

label7.Text = sb.ToString();
于 2012-06-14T16:20:31.560 に答える
2

これは、次の結果が前の結果を上書きするためです。クラスのようなものを使用StringBuilderして連結できますemp_id

var cmd3 = new SqlCommand(
    "Select emp_id from employee_attendance where site_id=8",conn); 
var reader = cmd3.ExecuteReader();
var sb = new StringBuilder();
while(reader.Read())
{
    int emp_id =Convert.ToString(reader[0]));
    sb.Append(emp_id + ", ");   
}
label7.Text = sb.ToString();
于 2012-06-14T16:20:38.360 に答える
1

ループの繰り返しごとに label7.Text の値を置き換えているため、最後のアイテムのみが表示されます。必要に応じてループの一部として文字列を連結するか、ラベル テキスト以外で表現する別の方法を見つけることができます。

于 2012-06-14T16:21:29.403 に答える
1

このコードは、id と label7 テキストの両方を上書きします。

while(reader.Read())
{
    int emp_id =Convert.ToString(reader[0]));
    label7.Text = Convert.ToString(emp_id);
}

両方を表示するには、以下のように値をどちらか一方に追加します。

label7.Text = "";
while(reader.Read())
{
    label7.Text += reader[0] += " ";
}
于 2012-06-14T16:21:14.450 に答える