2017-01-26 9 views
2

元々私はOracleの結果を表示するためにリストビューを使用していましたが、私は最近、リストビューが許すよりも少しだけ結果を扱うためにdatagridviewに切り替えなければなりませんでした。しかし、データグリッドに切り替えると、結果は少なくなります。私はコードをステップ実行していて、問題の発生場所を特定できませんでした。リストビューに4レコードが表示されます。 DataGridViewは3レコードを表示しますか?

これは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; 
} 

そして、これが4件の結果彼らでなければなりません

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; 
} 

私のクラスです。 DGVは3のみを表示します。リストビューには4が表示されます。

これは、Oracle SQL Developerの4つのスクリーンショットです。表示されていないものを強調表示しました。

3of4

+0

SetupDGV()コードを共有できますか? –

+0

@IkramTurgunbaev今すぐ追加しました。 – Lee

答えて

3

あなたが「レコードポインタ」を進め読者を、返す前にrsMPCS.Read();に電話を作っているので、あなたが最初の行が欠落しているライン1は、これだけ後続のレコードがロードされます。

この行を削除すると正常に動作します。

+0

私はそれを見逃したが、それは簡単な修正であったことを嬉しく思った。本当にありがとうstuartd。 – Lee

関連する問題