Рейтинг:
1
Wendelius
Если вам нужно добавить дополнительные условия , которые применяются к данным, просто используйте &&
(и) оператор
Так что что-то вроде:
columnData = (from DataGridViewRow row in mp_kasa_listaDataGridView.Rows
where row.Cells["dataGridViewTextBoxColumn16"].FormattedValue.ToString() != string.Empty
&& row.Cells["dataGridViewTextBoxColumn4"] == System.DateTime.Now.Date
select Convert.ToDouble(row.Cells["dataGridViewTextBoxColumn16"].FormattedValue)).ToArray();
textBox1.Text = columnData.Sum().ToString("#,0.00");
В зависимости от данных, которые у вас есть в таблице, вам может потребоваться привести данные столбца или использовать диапазон дат и так далее, поэтому приведенный выше пример является всего лишь примером, а не рабочим окончательным решением.
Goran Bibic
Оператор '==' не может быть применен к операндам типа 'DataGridViewCell' и 'DateTime'
Wendelius
Как я уже писал, вам может потребоваться привести (или разобрать) данные столбца. Это зависит от того, какие значения может иметь столбец.
Если все они являются датами, вы можете попробовать с
&& система.значение datetime.Parse(row.Cells["dataGridViewTextBoxColumn4"].ToString()) == Система.Датавремя.Сейчас.Дата
Но если формат даты отличается от вашего текущего формата, вам может потребоваться определить правильный поставщик форматов. Кроме того, если у вас есть значения, отличные от даты, то требуется больше логики.
Goran Bibic
{"Строка не была распознана как допустимая Дата-Время. Существует неизвестное слово, начинающееся с индекса 0."}
Goran Bibic
Значение из sql 2018-04-26
Goran Bibic
Значение автоматически берется из sql (insert into GETDATE())
Wendelius
Попробуйте с помощью
Система.значение datetime.ParseExact ("гггг-ММ-ДД",строка.Ячейки["dataGridViewTextBoxColumn4"].ToString(), System.Глобализация.CultureInfo.Языка и региона существует)
Goran Bibic
{"Строка не была распознана как допустимая Дата-Время."}
Как найти формат? или я могу поместить значение в insert в формат даты sql?
Вставить в mp_kasa_lista (redni_broj,датум,tip_placanja, iznos_sa_pdv, сайт kupac) значения(@maxNo,функции getdate(),'Готовина',@iznos_sa_pdv,'Fizičko вшивость')", кон))
Goran Bibic
Внутри GETDATE(поставить какой-то формат) вроде гггг-ММ-ДД?
Wendelius
Я не уверен, как SQL связан с вашим вопросом. В своем первоначальном вопросе вы использовали LINQ для запроса строк из DataGridView, а теперь пытаетесь отформатировать дату в операторе SQL.
Не могли бы вы подробно объяснить, что вы пытаетесь сделать?
Goran Bibic
Конечно. В моей таблице sql у меня есть значение 26.4.2018 (datagridcolumn type d()
В sql это значение 2018-04-26
Код работает нормально
Проблема заключается в формате даты "ДД.ММ.гггг"
double[] columnData2 = новый double[mp_kasa_listaDataGridView.Rows.Рассчитывать];
columnData2 = (из строки DataGridViewRow в mp_kasa_listaDataGridView.Rows
где грести.Ячейки["dataGridViewTextBoxColumn16"].FormattedValue.ToString() != строка.Пустая & amp; система.значение datetime.ParseExact("dd.mm.yyyy", строка.Ячейки["dataGridViewTextBoxColumn4"].ToString(), System.Глобализация.CultureInfo.Инвариантная Культура) == Система.Датавремя.Сейчас.Дата
выберите пункт конвертировать.Метод todouble(строки.Ячейки["dataGridViewTextBoxColumn16"].FormattedValue)).Метод toArray();
textbox3 и.Текст = columnData2.Функция sum().Метод toString("#,0.00");
Goran Bibic
Сумма столбца dataGridViewTextBoxColumn16 на сегодня в textbox3
Wendelius
Итак, есть ли дата в формате dd.mm.yyyy в DataGridView?
Goran Bibic
Да. Я настраиваю это
Wendelius
В этом случае вы должны использовать этот формат при разборе строки из datagridview. Иначе говоря
Система.значение datetime.ParseExact ("dd.MM.yyyy",строка.Ячейки["dataGridViewTextBoxColumn4"].ToString(), System.Глобализация.CultureInfo.Языка и региона существует)
Goran Bibic
О, боже мой...{"Строка не была распознана как допустимая Дата-Время."}
Я устал...Я могу поверить
Wendelius
Используя отладчик, когда возникает исключение, посмотрите на значение в столбце в этой конкретной строке. Что в нем содержится?
Goran Bibic
Это полная ошибка
Система.FormatException был необработан
Значение HRESULT=-2146233033
Сообщение=строка не распознана как действительное значение datetime.
Источник=mscorlib
Трассировка стека:
в системе.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, стиль DateTimeStyles)
в системе.значение datetime.Метод parseexact(строка s, формат строки, поставщик объекта iformatprovider )
в BSS_pos.lista_racuna.&ЛТ;&ГТ;гр.&ЛТ;lista_racuna_load&ГТ;Б__2_2(ячейки datagridviewrow подряд) в C:\Users\Bibic документы Горан\\визуальной студии 2015\проекты\БСС пос\БСС пос\lista_racuna.CS:линия 47
в System.Linq.Перечислимый.WhereSelectEnumerableIterator`2.Метод MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
в System.Linq.Перечислимый.ToArray[TSource](IEnumerable`1 source)
в BSS_pos.lista_racuna.lista_racuna_Load(отправитель объекта, EventArgs e) в C:\Users\Bibic Goran\documents\visual studio 2015\Projects\BSS pos\BSS pos\lista_racuna.cs:строка 46
в системе.Окна.Форм.Форма.События onload(EventArgs в электронной)
в системе.Окна.Форм.Форма.OnCreateControl()
в системе.Окна.Формы.Контроль.CreateControl(Boolean fIgnoreVisible)
в системе.Окна.Формы.Контроль.CreateControl()
в системе.Окна.Формы.Контроль.WmShowWindow(сообщение& m)
в системе.Окна.Формы.Контроль.WndProc(сообщение& m)
в системе.Окна.Формы.ScrollableControl.WndProc(сообщение& m)
в системе.Окна.Forms.Form.WmShowWindow(Message& m)
в системе.Окна.Forms.Form.WndProc(сообщение& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.OnMessage(сообщение& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.WndProc(сообщение& m)
в системе.Окна.Формы.Родное окно.DebuggableCallback(hwnd элемента указателя IntPtr, int32 и глутамат натрия, указателя IntPtr параметр wparam, указателя IntPtr lparam должен)
Свойство innerexception:
Goran Bibic
//line46//columnData2 = (из строки DataGridViewRow в mp_kasa_listaDataGridView.Rows
//строка 47// где строка.Ячейки["dataGridViewTextBoxColumn16"].FormattedValue.ToString() != строка.Пустая & amp; система.значение datetime.ParseExact("dd.MM.yyyy", строка.Ячейки["dataGridViewTextBoxColumn4"].ToString(), System.Глобализация.CultureInfo.Инвариантная Культура) == Система.Датавремя.Сейчас.Дата
Wendelius
Это стек ошибок.
Используя отладчик, когда возникает исключение, посмотрите на значение в столбце в этой конкретной строке. Что в нем содержится? Является ли это значение датой в формате ДД.ММ.гггг или чем-то еще?
Goran Bibic
Нет определенного значения, только значение по умолчанию из datagrid type date и sql value date...формат данных в SQL являются 2018-04-26
Wendelius
Как я уже объяснял, вы можете использовать метод ParseExact для анализа строки на сегодняшний день.
Однако формат должен быть точно таким же, как у вас в сетке. В противном случае преобразование не удастся, как вы уже видели. Кроме того, если у вас нет значения, которое потерпит неудачу.
Поэтому, чтобы заставить это работать, вам нужно взглянуть на значение, когда преобразование терпит неудачу. Каково значение в ячейке для неудачной строки?
Кроме того, я не совсем понимаю, какое отношение к этому имеет SQL. Да, данные могут поступать из SQL, но вы не преобразуете данные в SQL, вы преобразуете их из сетки. По крайней мере, то, что делает опубликованный код.
Goran Bibic
где грести.Ячейки["dataGridViewTextBoxColumn16"].FormattedValue.ToString() != строка.Empty && (row.Cells["dataGridViewTextBoxColumn14"].ToString()) == ("Готовина").Метод toString()
какая-нибудь помощь в этом деле? найти слово "Готовина" в колонке и суммировать
Рейтинг:
1
Maciej Los
Я уже ответил на ваш аналогичный вопрос.[^]
Основываясь на приведенной там идее, проверьте это:
DataTable dt = (DataTable)mp_kasa_listaDataGridView.DataSource;
textBox1.Text = dt.AsEnumerable()
.Where(x=>x.Field<DateTime>("date").Date==DateTime.Today)
.Sum(x=>x.Field<double>("price"))
.ToString("#,0.00");
Goran Bibic
'string' не содержит определения для 'Date', и никакой метод расширения 'Date', принимающий первый аргумент типа 'string', не может быть найден (вы пропускаете директиву using или ссылку на сборку?)
Maciej Los
Простите, я ошибся. Проверьте обновленный ответ.
Goran Bibic
Строка ошибки 2 textBox1.Text = dt.Методом asenumerable()
Goran Bibic
Невозможно неявно преобразовать тип 'double' в 'string'
Maciej Los
Добавьте в конце .Метод toString("#,0.00");
Goran Bibic
отладка без ошибок...в приложении...когда клик на кнопку...
{"Невозможно привести объект типа 'System.Окна.Формы.BindingSource" для ввода "System.Data.DataTable"."}
Maciej Los
Это означает, что ваш DataGridView привязан к BindingSource, а не к DataTable...
Вы должны предоставить дополнительную информацию о том, как вы связываете свои данные с DataGridView. Есть ли какой-нибудь класс?
Goran Bibic
Просто строка соединения (имя od conn-CS) привязывается к sql. Нет объекта DataTable
Maciej Los
Попробуйте воспользоваться этим:
DataTable dt = (DataTable)mp_kasa_listaDataGridView.DataSource.List;
Если connector привязан к DataTable, вы сможете использовать код.
Goran Bibic
нет это не сработает
Goran Bibic
Что такое функция textBox1.Text в этом коде?