2011-08-02 1 views
0

Я новичок в asp.net и создаю сайт для отеля. Мне нужно сравнить дату проверки с датой проверки, хранящейся в базе данных доступа. Результат отображается через сетку данных, но когда я его сравниваю, я получаю выражение критериев несоответствия типа данных. Я могу подключиться к базе данных доступа, и я использую календарь для передачи даты через текстовое поле.asp.net 2010 с C# и доступом 2003

Это мой код:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ds = new DataSet(); 
    st ="select * from abc where status = 'v'and checkout= '" + Convert.ToDateTime(TextBox1.Text) + "'"; 
    adp = new OleDbDataAdapter(st, cn); 
    int r = adp.Fill(ds, "app"); 
    GridView1.DataSource = ds; 
    GridView1.DataMember = "app"; 
    GridView1.DataBind(); 
    int intCount; 
    intCount = ds.Tables["app"].Rows.Count; 
    Label1.Text = intCount.ToString(); 

} 

protected void Calendar1_SelectionChanged(object sender, EventArgs e) 
{ 
    TextBox1.Text = Calendar1.SelectedDate.ToString("MM/dd/yy"); 
} 

ответ

0

запросов доступа нужен формат даты, чтобы быть '# YYYY-MM-DD #', в том числе символов # и в одинарные кавычки.

Вместо того, чтобы форматировать строку самостоятельно, рассмотрите возможность использования параметров в запросе и объект команды, поскольку он автоматически обрабатывает форматирование для вас.

Для простейшего изменения, изменить свою линию, которая создает SQL для следующих действий:

st ="select * from abc where status = 'v'and checkout= '#" + Convert.ToDateTime(TextBox1.Text).ToString("YYYY-MM-DD") + "#'"; 
+0

жаль, что я не могу понять. PLS подробно процедуры. –

+0

Изменен, чтобы показать ясный пример необходимых изменений. – DoctorMick

1

Не стройте запрос SQL самостоятельно использовать в параметризованных запросов вместо этого вы настраиваете себя для большого падения. Это должно позаботиться о форматировании для вас.

Например:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ds = new DataSet(); 

    // this has changed... 
    st ="select * from abc where status = 'v'and checkout= @date"; 

    adp = new OleDbDataAdapter(st, cn); 

    // this is new... 
    adp.Parameters.AddWithValue("@date", Convert.ToDateTime(TextBox1.Text)); 

    int r = adp.Fill(ds, "app"); 
    GridView1.DataSource = ds; 
    GridView1.DataMember = "app"; 
    GridView1.DataBind(); 
    int intCount; 
    intCount = ds.Tables["app"].Rows.Count; 
    Label1.Text = intCount.ToString(); 

} 

protected void Calendar1_SelectionChanged(object sender, EventArgs e) 
{ 
    TextBox1.Text = Calendar1.SelectedDate.ToString("MM/dd/yy"); 
} 
Смежные вопросы