Member 9983063 Ответов: 1

Несоответствие даты в выражении критериев


Привет, ребята, я получаю ошибку, которая
Datetyoe mismatch in criteria expression
все прекрасно прекрасно но когда я добавляю столбцы дат так что я получаю эту ошибку пожалуйста ребята решите ее пожалуйста

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

con_string.Open();
                    OleDbCommand command = new OleDbCommand() { Connection = con_string };
                    for (int i = 0; i < dataGridView1.Rows.Count; i++)
                    {
                        command.CommandText = @"insert into [Total]([column3],[column2],[Flavours],[Remarks],[Column1],[Extra Topping],[Topping Price],[Date])
                        VALUES (@Column3, @Column2, @Flavours, @Remarks, @Column1, @ExtraTopping, @ToppingPrice,@Date)";
                        command.Parameters.Clear();
                        command.Parameters.AddWithValue("@Column3", dataGridView1.Rows[i].Cells[0].Value);
                        command.Parameters.AddWithValue("@Column2", dataGridView1.Rows[i].Cells[0].Value);
                        command.Parameters.AddWithValue("@Flavours", dataGridView1.Rows[i].Cells[0].Value);
                        command.Parameters.AddWithValue("@Remarks", dataGridView1.Rows[i].Cells[0].Value);
                        command.Parameters.AddWithValue("@Column1", dataGridView1.Rows[i].Cells[0].Value);
                        command.Parameters.AddWithValue("@ExtraTopping", dataGridView1.Rows[i].Cells[0].Value);
                        command.Parameters.AddWithValue("@ToppingPrice", dataGridView1.Rows[i].Cells[0].Value);
                        command.Parameters.AddWithValue("@Date", dataGridView1.Rows[i].Cells[0].Value.ToString());

                        command.ExecuteNonQuery();
                    }
                    con_string.Close()

F-ES Sitecore

Один из нескольких битов данных, которые вы передаете, являются неправильным типом. Мы не знаем, какие типы ваших данных нужны, поскольку у нас нет схемы, и мы не знаем, какие типы вы предоставляете, поскольку мы не знаем входных данных. Вам действительно нужно научиться отлаживать свой собственный код, чтобы вам не приходилось запускать поток для каждой мелочи.

С места в карьер вы передаете одно и то же значение для всего (dataGridView1.Rows[i].Ячейки[0]), и очень маловероятно, что это то, что вы на самом деле хотели сделать, или что одно значение может быть текстом, числом, датой и т. д.

1 Ответов

Рейтинг:
2

OriginalGriff

Не преобразуйте дату в строку, чтобы передать ее в SQL: если это уже значение DateTime, передайте его как таковое. Если нет, используйте TryParse, чтобы преобразовать его в DateTime, а затем передать его.

Проблема со строковыми датами заключается в том, что они не одинаковы для всех систем: локаль экземпляра SQL Server может отличаться от той, на которой работает ваш код, и то, что выглядит нормально для вас "23/12/10", выглядит плохо для SQL, потому что он ожидает MM/dd/yyyy, а вы передали его yy/MM/dd.
Я также серьезно сомневаюсь, что одна и та же строка и столбец содержат правильное значение для всех столбцов, в которые вы пытаетесь его вставить - вы заметили, что используете одну и ту же ячейку для каждого параметра?