と表示されます。データグリッドビューにデータを設定しています。列の1つは時間(hh:mm:ss)で表示する必要があります。フォーマットDatagridviewの列の時間は、hh:mm:ss
データはAccessデータベースから抽出され、データグラムビューに正常に入力されます。時間として表示する列は、アクセスデータベースに「番号」として設定されます。ご覧のとおり、選択クエリ内で/ 86400を使用して秒数に変換します。
DefaultCellStyle.Format = "hh:mm:ss tt"を使用して列を変換しようとすると、データの列全体が各セルの「hh:mm:ss tt」に置き換えられます。つまり、すべてのセルでhh:mm:ss ttという単なる数字です。
以下は私のコードです - 誰でも私が間違っていることをアドバイスできますか?
string strProvider =
"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = P:\\JC_StockFile\\Mitel\\Mitel.accdb";
string strSql =
"SELECT [MidnightStartDate], [Agent Name], [LoginTime], [LogoutTime], [ShiftDuration]/86400 as ShiftDuration " +
"FROM login_data " +
"WHERE [MidnightStartDate] > @LeDate";
OleDbConnection con = new OleDbConnection(strProvider);
OleDbCommand cmd = new OleDbCommand(strSql, con);
con.Open();
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@LeDate", DateTime.Today.AddDays(-3));
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable scores = new DataTable();
da.Fill(scores);
dataGridView1.DataSource = scores;
dataGridView1.Columns["ShiftDuration"].DefaultCellStyle.Format = "hh:mm:ss tt";
あなたを使用することをお勧め
はこれを試してみてくださいコードはうまくいくはずです。何か他のことが起こっているに違いありません。あなたのデータは本当にDateTimesではないでしょう。 – TaW
私はTaWがここに何かあると思います。 SELECTステートメントの一部としてShiftDuration列をDateTimeにキャストし、その行為があるかどうかを確認してください。 – Overhed