Mohan Raj K
Mohan Raj K

Reputation: 65

"No Value given for one or more parameters" with c#

when I want to retrieve date from access , I get an exception error "No Value given for one or more parameters" at cmd1.ExecuteReader. This is my code

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";
        }

These are the properties of open date and close date

required:no, indexed:yes(no duplicates), ime_mode:no_control, text_align:center, show_date_picker:for_dates

since I am new to c#, please help me

Upvotes: 2

Views: 2190

Answers (2)

Steve
Steve

Reputation: 216293

You don't have any parameters in your query.
This means that one or more of your field names
Open Date or Close Date
didn't exist in your table event

Upvotes: 1

Boomer
Boomer

Reputation: 1478

Seems that you haven't opened the connection:

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";
    }

And I made some modifications, I executed one reader ,closed it, before executing the second one.

Upvotes: 0

Related Questions