だから私は、私たちの労働者の何人かをランダムに監査するプログラムを作っています。そして、Access DB をスキャンして注文の一部を取得するプログラムを作成しようとしています。しかし、注文をランダムに選択したいのですが、上位 5% か何かだけは必要ありません。
static DataTable RandomSelect(double errPercentage,string User)
{
OleDbConnection conn = new OleDbConnection(strAccessConn);
string query = "SELECT ControlNumber FROM Log WHERE User ='" + User + "' AND Log.EndStatus in ('Needs Review', 'Check Search', 'Vision Delivery', 'CA Review', '1TSI To Be Delivered');";
OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);
DataTable dt = new DataTable();
DataTable dtRandomRows = new DataTable();
try
{
adapter.Fill(dt);
//dtRandomRows = dt.Clone();
Random rDom = new Random();
int i = 0;
for (int ctr = 1; ctr <= dt.Rows.Count; ctr++)
{
i = rDom.Next(1, dt.Rows.Count);
//dtRandomRows.Rows.Add(dt.Rows[i]);
dtRandomRows.ImportRow(dt.Rows[i]);
}
dtRandomRows.AcceptChanges();
}
catch (OleDbException ex)
{
}
return dtRandomRows;
}
上記のコードは機能しますが、ControlNumbers (orders) のテーブル全体からランダムに行を選択し、それらすべてを dtRandomRows に入れます。ただし、これで「errPercentage」または行をランダムに選択したいだけです...何か考えはありますか?