最初我使用Listview来显示oracle结果,但是我最近不得不切换到datagridview来处理比Listview允许的结果更多的结果。自从切换到数据网格以来,我的结果越来越少。我已经逐步完成了代码,并且无法确定问题发生的位置。
这是我显示结果的frmMain。
private void button1_Click(object sender, EventArgs e)
{
dtpicker.Format = DateTimePickerFormat.Custom;
dtpicker.CustomFormat = "dd-MMM-yy";
string VoidDate = dtpicker.Text.Trim().ToUpper();
DataTable resultnew = new DataTable();
resultnew.Load(oracleConnection.GetVoidDGV(VoidDate));
if (resultnew != null)
{
dataGridView1.DataSource = DBNull.Value;
dataGridView1.Columns.Clear();
dataGridView1.DataSource = resultnew;
SetupDGV();
}
else
{
MessageBox.Show("No History Found");
}
}
private void SetupDGV()
{
dataGridView1.Columns[0].HeaderText = "Heat Run";
dataGridView1.Columns[1].HeaderText = "Lot Number";
dataGridView1.Columns[2].HeaderText = "Serial Number";
dataGridView1.Columns[3].HeaderText = "Date";
dataGridView1.Columns[4].HeaderText = "Void Location";
dataGridView1.Columns[5].HeaderText = "Void Length";
dataGridView1.Columns[6].HeaderText = "Employee ID";
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
这是我的班级
public OleDbDataReader GetVoidDGV(string VoidDate)
{
var conn = new OleDbConnection(oracleConnectionString);
conn.Open();
string query = "SELECT HEAT_RUN_NO, LOT_NO, SERIAL_NO, TO_CHAR(DATE_TIME, 'DD-MON-YYYY') as DATE_NO_TIME, VOID_LOC, cast(VOID_LENGTH as int) as VOID_LENGTH, EMPL_ID ";
query += "FROM MPCS.BRAZE_VOIDS ";
query += "WHERE TRUNC(DATE_TIME) = TO_DATE(?, 'dd-MON-yy')";
var cmd = new OleDbCommand(query, conn);
cmd.Parameters.AddWithValue("DATE_TIME", VoidDate);
rsMPCS = cmd.ExecuteReader();
rsMPCS.Read();
return rsMPCS;
}
他们应该是4个结果。 DGV仅显示3. Listview显示4。
这只是Oracle SQL Developer中4的截图。我突出显示了没有显示的那个。第1行。
答案 0 :(得分:3)
您错过了第一行,因为您在返回阅读器之前正在调用rsMPCS.Read();
,这会使“记录指针”前进,因此只会加载后续记录。
删除该行,它将起作用。