2015-06-19 5 views
0

У меня проблема с моим построителем запросов. У меня есть datagridview, который я хочу фильтровать. Я хочу разрешить поиск по «ИМЯ, ФАМИЛИЯ, ДАТА». Вот мой SQL QUERYQuery Builder для типа DATE

SELECT exDate, exName, exSurname FROM examines 
WHERE (exDate = @Param1) AND (exName = @Param2) AND (exSurname = @Param3) 

И это мой C# код, где я называю 'в запросе

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     this.examinesTableAdapter.FillBy(this.dbSpinDataSet.examines, dateTimePicker1.Value, textBox2.Text, textBox3.Text); 
    } 
    catch (SystemException ex) 
    { 
     System.Windows.Forms.MessageBox.Show(ex.Message); 
    } 
} 

в VS я получаю 2 ОШИБКИ говоря:

»... Project1 .dbSpinDataSetTableAdapters.examinesTableAdapter, string, string, string) 'имеет некоторые недопустимые аргументы. " «... не может конвертировать из« System.Windows.Forms.DateTimePicker »в« string »."

Я понимаю, где ошибка, но я не знаю, как ее решить. Мой запрос был написан в «построителе запросов» в проектах DataSet. Я пошел в FILTER столбцов для exDate, exName и exSurname, и я написал ? (знак вопроса). Конструктор запросов автоматически переместил его в вышеупомянутую форму «= @ Param1», «= @ Param2» и «= @ Param3».

Я знаю, что я не могу рассматривать DateTime как строку, но не знаю, что написать в столбце FILTER моего построителя запросов, чтобы мой код работал.

+0

Какой тип столбца является столбцом 'exDate' в вашей базе данных? –

+0

exDate is 'Date' – user5028260

+0

Убедитесь, что определение exDate в QueryBuilder также определено как тип Date (или DateTime). Затем следует изменить FillBy TableAdapter на (tableadapter, datetime, string, string) –

ответ

0

Вы должны объявить строчную переменную, и она будет работать!

private void button1_Click(object sender, EventArgs e) 
    { 
     string your_string = dateTimePicker1.Value.ToString(); 
     try 
     { 
      this.examinesTableAdapter.FillBy(this.dbSpinDataSet.examines, your_string, textBox2.Text, textBox3.Text); 
     } 
     catch (SystemException ex) 
     { 
     System.Windows.Forms.MessageBox.Show(ex.Message); 
     } 
    }