Не удалось преобразовать значение параметра из DateTime в Byte [] - PullRequest
0 голосов
/ 20 февраля 2012

Я получаю сообщение об ошибке при преобразовании параметров из DateTime в Byte [].Идея состоит в том, чтобы отображать данные между двумя указанными датами, которые вводятся с помощью элементов управления и отображаются в GridView, и с использованием хранимой процедуры для доступа к данным.Я не понимаю ошибку, но я предполагаю, что все данные помещаются в массив и передаются в хранимую процедуру:

string sDateBegin = Request.Form["fromDate"];
DateTime dtDateBegin = Convert.ToDateTime(sDateBegin);
SqlParameter prmDateBegin = new SqlParameter("datebegin", SqlDbType.Timestamp);
prmDateBegin.Value = dtDateBegin;
cmdProc.Parameters.Add(prmDateBegin);

//same code for DateEnd

// data table
DataTable dataTable = new DataTable();

AGridView.DataSourceID = null;

// data adapter
SqlDataAdapter dataAdapter = new SqlDataAdapter(cmdProc);
AGridView.DataSource = dataTable;

//fill datatable
dataAdapter.Fill(dataTable);

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Вы определили SqlParameter как тип данных Timestamp (который является байтовым массивом), а не как DateTime. Учитывая, что вы представляете диапазон дат, звучит так, как будто вы должны изменить тип данных параметра на DateTime.

0 голосов
/ 21 февраля 2012

Произошла ошибка, поскольку Convert.ToDateTime пытается выполнить неявное преобразование любого объекта в DateTime.Объект, поступающий из элемента управления, является строкой, но не может быть приведен к объекту DateTime.Фактически это дата и время, представленные строкой.

Правильный способ создания объекта DateTime заключается в анализе строки с помощью

DateTime.Parse(string input)
...