IErrorInfo.GetDescriptionがE_FAIL(0x80004005)で失敗しました。 そして、どういう意味でこの問題を解決するのか分かりません。私はcoppyと私のAcces - dbに貼り付けるクエリを貼り付けると、それは魅力のように動作しますが、私はしようとするときにC#で私はこのエラーが発生します。IErrorInfo.GetDescriptionがE_FAIL(0x80004005)で失敗しました。C#
パラメータはすべて適切な値で埋められます。
@aankomst = 15-11-2017, @vertrek = 20-11-2017, @grootte = "large"
try
{
standplaatslijst.Clear();
verbinding = new OleDbConnection(
@"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=..\..\..\La_Rustique.accdb;
Persist Security Info=False;");
verbinding.Open();
OleDbCommand query = new OleDbCommand();
OleDbDataReader lezer = null;
query.CommandText = @"SELECT *
FROM standplaats
WHERE id not in (SELECT standplaats_id
FROM reservering
WHERE @aankomst BETWEEN aankomst AND vertrek
AND @vertrek BETWEEN aankomst AND vertrek)
AND size = @grootte";
query.Connection = verbinding;
query.Parameters.Add(new OleDbParameter("@aankomst", OleDbType.DBDate));
query.Parameters["@aankomst"].Value = aankomst;
query.Parameters.Add(new OleDbParameter("@vertrek", OleDbType.DBDate));
query.Parameters["@vertrek"].Value = vertrek;
query.Parameters.Add(new OleDbParameter("@grootte", OleDbType.VarChar));
query.Parameters["@grootte"].Value = grootte;
lezer = query.ExecuteReader();
while (lezer.Read())
{
standplaatslijst.Add(new standplaats(lezer));
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
verbinding.Close();
}
私はstandplaatsがWICHと呼ばれる新しいクラスにリーダーを追加しているが、次のようになります
public standplaats(OleDbDataReader lezer)
{
_id = lezer.GetInt32(0);
Grootte = lezer.GetString(1);
Name = lezer.GetString(2);
}
最初は「SQL.standplaatslijst.Clear();」です。後で 'standplaatslijst.Add(新しいstandplaats(lezer));'です。最初は 'SQL'で始まります。もう1つはありません。それは奇妙に見える。それが何を意味するかわからない。あなたは翻訳できますか?私は「ランクリスト」を取得しますが、多分もっと良い言葉があります。 – wazz
@wazz standplaatsenlijstはsqlクラスのリストで、sqlは現在作業しているクラスです。 SQLを削除します。それをより明確にするための部分。フィードバックに感謝します –
問題は 'standplaatslijst.Add(new standplaats(lezer));'にあります。新しいリストアイテムが必要ですが、リーダーからのデータではなく、リーダー全体を提供しています。 – wazz