-1

当我尝试执行下面显示的 SQL 查询时,我得到一个 IndexOutOfRangeException。我不知道为什么会这样,在其他 SO 页面上它说这可能是因为您尝试从不存在的字段中获取数据,但我确定它存在并且当我将两个请求的字段都从“ ADRES" 和 "TAAL" 到 "LEV" 就像它们上面的一样,只有底部的 2 个会拒绝工作,而对 "LEV" 的最高请求仍然有效。“ADRES”是一个 8 长的 varchar,“TAAL”是一个 1 长的 varchar 字段

try
{
  //BESTEL,[PLAN],LEV,ADRES,TAAL
  SqlCommand getlist = new SqlCommand("select * from BESW where BEST=@best", Connectie.connMEVO);
  getlist.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr;
  DRorder = getlist.ExecuteReader();
  while (DRorder.Read())
  {
    dateTimePicker1.Value = Convert.ToDateTime(DRorder["BESTEL"]);
    dateTimePicker2.Value = Convert.ToDateTime(DRorder["PLAN"]);
    comboBox1.Text = DRorder["LEV"].ToString();
    comboBox2.Text = DRorder["ADRES"].ToString();
    textBox8.Text = DRorder["TAAL"].ToString();
  }
}
catch (Exception er) { MessageBox.Show("" + er); }

编辑:似乎如果我像下面显示的那样拆分查询,它会起作用,我真的不明白为什么会这样。

try
{
  //BESTEL,[PLAN],LEV,ADRES,TAAL
  SqlCommand getlist = new SqlCommand("select BESTEL,[PLAN],ADRES from BESW where BEST=@best", Connectie.connMEVO);
  getlist.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr;
  DRorder = getlist.ExecuteReader();
  while (DRorder.Read())
  {
    dateTimePicker1.Value = Convert.ToDateTime(DRorder["BESTEL"]);
    dateTimePicker2.Value = Convert.ToDateTime(DRorder["PLAN"]);
    comboBox2.Text = DRorder["ADRES"].ToString();
  }
  SqlCommand getlist2 = new SqlCommand("select LEV from BESW where BEST=@best", Connectie.connMEVO);
  getlist2.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr;
  DRorder = getlist2.ExecuteReader();
  while (DRorder.Read())
  {
    comboBox1.Text = DRorder["LEV"].ToString();
  }
  SqlCommand getlist3 = new SqlCommand("select TAAL from BESW where BEST=@best", Connectie.connMEVO);
  getlist3.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr;
  DRorder = getlist3.ExecuteReader();
  while (DRorder.Read())
  {
    textBox8.Text = DRorder["TAAL"].ToString();
  }
}
catch (Exception er) { MessageBox.Show("" + er); }
4

2 回答 2

1

可能有两个可能的错误 1. 任何列都可能丢失或拼写错误。2. 您尝试将属性设置为组合框,该组合框可能没有查询的数据作为其项。

希望能帮助到你。

编辑:说,组合框有两个项目“是”和“否”,您可能试图将“两者都不是”设置为其当前项目。

于 2015-03-13T13:27:04.193 回答
-2

看来,当我将字段拆分为单独的查询时,它们只是起作用,查询没有改变,它只是没有在 1 个查询中包含所有行。我仍然不知道它为什么这样做,但使用单独的查询至少可以解决这个问题。

于 2015-03-13T13:51:08.293 回答