次のコードはIndexOutOfRange
というエラーを表示します。 'Baujahr'はアクセスデータベースの整数列です。ここでコンボボックス(Accessデータベース)のC#文字列にSQL Integerを変換します
cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString());
リーダー:
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString());
}
そして、この手順の全体のコード:
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = "SELECT DISTINCT Typ FROM Autos WHERE Hersteller = @FahrzeugHersteller AND Modell = @FahrzeugModell AND Typ = @FahrzeugTyp;";
command.CommandText = query;
command.Parameters.Add("@FahrzeugHersteller", SqlDbType.Text);
command.Parameters["@FahrzeugHersteller"].Value = cbFahrzeugHersteller.Text;
command.Parameters.Add("@FahrzeugModell", SqlDbType.Text);
command.Parameters["@FahrzeugModell"].Value = cbFahrzeugModell.Text;
command.Parameters.Add("@FahrzeugTyp", SqlDbType.Text);
command.Parameters["@FahrzeugTyp"].Value = cbFahrzeugTyp.Text;
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
cbFahrzeugBJ.Items.Add(reader.GetInt32("Baujahr").ToString());
}
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex);
}
これはcbFahrzeugTyp'はあなたがコードをステップ実行するためにデバッガを使用している '定義されているすべての関連のコードを..示してください..? – MethodMan
コードを変更してwhileループを追加する前に ifブロック内でループコードを実行する場合 – MethodMan
@MethodManは無意味です。行がない場合、Readはfalseを返します。 – stuartd