Tom G/mariam Ответов: 1

Как передать значение datetime в качестве параметра для выбора строк из таблицы datatable?


Привет всем, у меня есть datatable с именем shifttable. Я хочу узнать строки, передавая параметры datetime, но он генерирует ту же ошибку, что и раньше, то есть преобразование не удалось . что мне нужно, так это как передать параметр для datatable. могу ли я помочь вратам, пожалуйста?
вот мой код:
Периода датавремя= Датавремя.сейчас
DataRow[] found = shifttable.Выберите("EMPLOYEEID ='" + empid.ToString() + "' и STARTDATE<='" + daterange + "' и ENDDATE>='" + daterange + "'");

в этом случае значение daterange равно 2017-11-23 8:06:34 nm. вот почему мой код генерирует ошибку. поэтому я должен параметризовать свой код. любая помощь пожалуйста

Что я уже пробовал:

Периода датавремя= Датавремя.сейчас
DataRow[] found = shifttable.Выберите("EMPLOYEEID ='" + empid.ToString() + "' и STARTDATE<='" + daterange + "' и ENDDATE>='" + daterange + "'");

an0ther1

Что такое тип данных ваша начальная дата &усилителя; дата окончания столбцов?
Если это столбцы DateTime & в том же формате, ваш выбор должен работать.
Если они не являются столбцами DateTime или находятся в другом формате вам нужно будет преобразовать передаваемое значение
Используйте свой отладчик и посмотрите на тип данных ваших столбцов и проверьте значения.

с уважением

Tom G/mariam

Столбцы StartDate &EndDate - это формат даты и времени.
когда я отслеживаю значение daterange - 2017-11-23 8:06:34 nm, которое не является допустимым форматом даты. вот почему мой код генерирует ошибку. поэтому я должен параметризовать свой код. любая помощь, пожалуйста.

an0ther1

Согласно нижеприведенному комментарию - вам нужно преобразовать значение DateTime в строку в правильном формате.
Ссылаться; https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings
Преобразование значений в параметры не поможет - DataTable.Select не поддерживает параметры - см.; https://msdn.microsoft.com/EN-US/library/t5ce3dyt(v=VS.110,d=hv.2).aspx
Используйте свой отладчик & немедленное окно для тестирования преобразования значений в различные форматы

F-ES Sitecore

использовать

периода.ToString("гггг-ММ-ДД")

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

1 Ответов

Рейтинг:
0

Member 13538891

это мой код .cs

охраняемых недействительными Button_Date(объект отправителя, EventArgs в электронной)
{
если (стр.Функция IsValid)
{
пробовать
{

строка dateFrom = DateFrom.Text; // значения текстового поля
строка dateto = DateTo.Text;
DateTime FromDt = DateTime.Parse(dateFrom); // синтаксический анализ в date time
Тодт: Датавремя = Датавремя.Разбор(dateto);
используя (объекта oracleconnection кон = нового объекта oracleconnection(диспетчер конфигураций.ConnectionStrings["Connection_string"].Параметр connectionString))
{
против.Открыть();
OracleCommand cmd = новая команда OracleCommand("procfordate", con);
УМК.CommandType = CommandType.Хранимая процедура;
cmd.параметры.Добавить(новый OracleParameter("mycur",
OracleDbType.Рефкурсор)).Направление = ParameterDirection.Выход;
cmd.параметры.Добавить(новый OracleParameter("дд1", DateFrom)); // отправка в базу
cmd.параметры.Добавить(новый OracleParameter("dd2", DateTo));
OracleDataAdapter Adp = новый OracleDataAdapter(cmd);
DataSet ds = новый набор данных();
АДП.Заполнить(ДС);
против.Закрывать();
возврат ДС;
}
....
}}}

запрос к базе данных поможет u, который m sharing below.in процедура, которую я ввел в качестве dd1 dd2 с момента и до настоящего времени


создать или заменить процедуру PROCFORDATE(
MYCUR OUT SYS_REFCURSOR,
ДАТА DD1,
ДАТА DD2)
IS
НАЧАТЬ
ОТКРОЙТЕ MYCUR ДЛЯ
ВЫБЕРИТЕ RECEIVEDDATE, O_FILENAME,
Из Table_name, где RECEIVEDDATE>=DD1 и RECEIVEDDATE <=DD2
или использовать
-- Между DD1 и DD2
ПРИКАЗ 1 ПО УБЫВАНИЮ;
КОНЕЦ;