2

access から日付を取得したい場合、cmd1.ExecuteReaderで「1 つ以上のパラメーターに値が指定されていません」という例外エラーが発生します。これは私のコードです

void checking_fields()
    {

        OleDbCommand cmd = new OleDbCommand("select movie_id from event", oc);
        OleDbDataReader ol = cmd.ExecuteReader();
        OleDbCommand cmd1 = new OleDbCommand("select [open date],[close date] from event", oc);
        OleDbDataReader ol1 = cmd1.ExecuteReader();
        while (ol1.Read())
        {
            if (ol1.GetValue(0).ToString() == dateTimePicker1.Value.ToString("MM/dd/yyyy") || 
                ol1.GetValue(1).ToString() == dateTimePicker2.Value.ToString("MM/dd/yyyy"))
                goto abc;
        }
        ol.Read();

        if (textBox1.Text.Equals(ol.GetString(0)))
            label8.Text = "ID already exists";
        else
        {
            insert_database();
            clear();
            this.Close();
        }
        abc:  label8.Text = "Open date or Close date already assigned";
        }

これらは、開始日と終了日のプロパティです

必須:いいえ、インデックス:はい(重複なし)、ime_mode:no_control、text_align:center、show_date_picker:for_dates

私はC#が初めてなので、助けてください

4

2 に答える 2

1

クエリにパラメータがありません。
これは、1つ以上のフィールド名が
Open Date、またはClose Date
テーブルイベントに存在しなかったことを意味します

于 2012-06-27T19:29:52.610 に答える
0

接続を開いていないようです:

void checking_fields()
{

    OleDbCommand cmd = new OleDbCommand("select movie_id from event", oc);
oc.open();

    OleDbDataReader ol1 = cmd1.ExecuteReader();
    while (ol1.Read())
    {
        if (ol1.GetValue(0).ToString() == dateTimePicker1.Value.ToString("MM/dd/yyyy") || 
            ol1.GetValue(1).ToString() == dateTimePicker2.Value.ToString("MM/dd/yyyy"))
            goto abc;
    }
oc.close();

    OleDbCommand cmd1 = new OleDbCommand("select [open date],[close date] from event", oc);
    oc.open();
    OleDbDataReader ol = cmd.ExecuteReader();
    ol.Read(); // consider revising that section

    if (textBox1.Text.Equals(ol.GetString(0)))
        label8.Text = "ID already exists";
    else
    {
        insert_database();
        clear();
        this.Close();
    }
    abc:  label8.Text = "Open date or Close date already assigned";
    }

そして、いくつかの変更を加え、2番目のリーダーを実行する前に、1つのリーダーを実行して閉じました。

于 2012-06-27T11:55:19.033 に答える