0

VS 2012 C# を使用しています。データセットをループして、Access データベースから情報を取得しようとしています。アイテムが選択されたときに、その特定のシナリオのすべてのデータを出力するコンボボックスがあります。コンボボックスの一部の値について、「'Fill' を呼び出す前に SelectCommand プロパティが初期化されていません。」というエラーが表示されます。しかし、私が持っていない他の値のいくつかについては、情報は問題なく取得されます。必要なコードはすべてここにあります。

con2.Open();
ad2 = new OleDbDataAdapter(query, con2);
ad2.Fill(ds2, "AC_SCENARIO");
con2.Close()

try
{
    string end = "ENDDATE";
    string start = "START";

    foreach (DataRow drRow in ds2.Tables[0].Rows)
    {
        for (int i = 0; i <= ds2.Tables[0].Columns.Count; i++)
        {
            string qual0 = ds2.Tables["AC_SCENARIO"].Rows[i]["QUAL0"].ToString();
            string qual1 = ds2.Tables["AC_SCENARIO"].Rows[i]["QUAL1"].ToString();
            string qual2 = ds2.Tables["AC_SCENARIO"].Rows[i]["QUAL2"].ToString();
            string qual3 = ds2.Tables["AC_SCENARIO"].Rows[i]["QUAL3"].ToString();
            string qual4 = ds2.Tables["AC_SCENARIO"].Rows[i]["QUAL4"].ToString();

            //HERE IS A SAMPLE QUERY 
            if (qual0 != null && (string)comboBox1.SelectedItem == qual0)
            {
                ad.SelectCommand = new OleDbCommand("SELECT b.RSV_CAT, b.SEQNUM, b.LEASE,  b.WELL_ID, a.QUALIFIER, a.KEYWORD, a.EXPRESSION FROM [AC_ECONOMIC] a INNER JOIN [AC_PROPERTY] b on a.PROPNUM=b.PROPNUM WHERE a.KEYWORD = '" 
                + end + "' AND (a.QUALIFIER = '" + qual0 + "' OR a.QUALIFIER IS NULL) AND NOT a.EXPRESSION Like '%[/@]%'", con);
            }

            ds.Clear();
            ad.Fill(ds); //The SelectCommand property has not been initialized before calling 'Fill'. 
            //ERROR OCCURS HERE

            con.Open();
            ad.SelectCommand.ExecuteNonQuery();
            con.Close();

編集:ここにconコードがあります

        String filePath = textBox1.Text;

        con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath);

別のデータセットにリストされているようなクエリがさらにあり、2 つのデータセットをマージして datagridview に出力します。エラーは行 ad.Fill(ds); で発生します。誰かがこの問題を私に説明できるか、何か助けがあれば助かります。

4

3 に答える 3