Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
4 / 4 / 0
Регистрация: 21.08.2016
Сообщений: 404

При изменение данных в столбце выдает ошибку

19.02.2020, 13:48. Показов 1603. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет! Столкнился с такой проблемой.
В datagridview есть 3 столбца ID, INFO, VALUE.
Если при редактирование хочу поменять в столбце VALUE значение c True на False то при нажатии кнопки "Сохранить" выдает error: System.Data.OleDb.OleDbException: 'Data type mismatch in criteria expression.'
This exception was originally thrown at this call stack:
System.Data.OleDb.OleDbCommand.ExecuteCo mmandTextErrorHandling(System.Data.OleDb .OleDbHResult)
System.Data.OleDb.OleDbCommand.ExecuteCo mmandTextForSingleResult(System.Data.Ole Db.tagDBPARAMS, out object)
System.Data.OleDb.OleDbCommand.ExecuteCo mmandText(out object)
System.Data.OleDb.OleDbCommand.ExecuteCo mmand(System.Data.CommandBehavior, out object)
System.Data.OleDb.OleDbCommand.ExecuteRe aderInternal(System.Data.CommandBehavior , string)
System.Data.OleDb.OleDbCommand.ExecuteNo nQuery()
DVKC_Search_Engine.Form12.button1_Click( object, System.EventArgs)
System.Windows.Forms.Control.OnClick(Sys tem.EventArgs)
System.Windows.Forms.Button.OnClick(Syst em.EventArgs)
System.Windows.Forms.Button.OnMouseUp(Sy stem.Windows.Forms.MouseEventArgs)
...
[Call Stack Truncated]

Код такой:
C#
1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, EventArgs e)
        {           
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=S:\\DVKC_DS\\DVKC Search Engine\\DVKC Search Engine\\DVKC Search Engine\\bin\\Debug\\Datubazes\\2020_Gada atskaite\\TWENTYEVENTSSTdb.xlsx;Extended Properties='Excel 12.0;HDR=YES'");
                OleDbCommand cmd = new OleDbCommand("", conn);
                string cmdText;
                cmdText = "Update [Events$] set [INFO]='" + textBox2.Text + "',[VALUE]='" + textBox3.Text + "' where [ID]=" + textBox1.Text;
                cmd.CommandText = cmdText;
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
Как исправить чтобы всё работало?

P.S. В datagridview где значение True, строка окрашивается в зеленый цвет.

В datagridview данные попадают так:
C#
1
2
3
4
5
6
7
 private void Form1_Load(object sender, EventArgs e)
        {
System.Data.DataTable table = LoadExcelSheetToTable(@"\\w-fsclu1-str\STR\LE\DF\DVKC_DS\DVKC Search Engine\DVKC Search Engine\DVKC Search Engine\bin\Debug\Datubazes\2020_Gada atskaite\TWENTYEVENTSSTdb.xlsx", "Events");
                    PlaceTableToDatabase(table);                 
conn = new SqlConnection("Data Source=KVP-25793;Initial Catalog=Events;Integrated Security=True;TransparentNetworkIPResolution=True");                
this.tWENTYEVENTSSTdbTableAdapter.Fill(this.eventsDataSet.TWENTYEVENTSSTdb);
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2020, 13:48
Ответы с готовыми решениями:

Выдаёт ошибку при сохранении данных в БД
Вот ошибка: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to...

При вводе данных выдает ошибку
uses Unit1; {$R *.dfm} procedure TForm2.FormShow(Sender: TObject); begin ...

Выдает ошибку при вставке данных в БД
Здравствуйте скажите почему когда я вставляю данные в БД то у меня постоянно срабатывает вот это условие if (rs == null) { ...

7
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
20.02.2020, 08:02
Лучший ответ Сообщение было отмечено Felikss как решение

Решение

Так попробуйте:
C#
1
 cmdText = "Update [Events$] set [INFO]='" + textBox2.Text + "',[VALUE]=" + textBox3.Text + " where [ID]=" + textBox1.Text;
1
4 / 4 / 0
Регистрация: 21.08.2016
Сообщений: 404
20.02.2020, 22:18  [ТС]
Aferuga, Спасибо большое, всё теперь работает отлично.
0
4 / 4 / 0
Регистрация: 21.08.2016
Сообщений: 404
21.02.2020, 03:46  [ТС]
Aferuga, Можете еще помочь, пожалуйста.
В datagridview есть столбец Дата-Время
Дата и месяц обозначается 2102
Время обозначается 12.25
Вместе получается 2102-12.25
Я на форму поставил два dateTimePicker один от а второй до.
Проблема в том что если я в первом dateTimePicker ставлю 0101 а втором 0501, то он при фильтрации показывает записи 0101
0201
0301
0401
0102
0202
0302
0402
Почему он показывает февраль 02 месяц и п очему он не показывает записи 0501 а только до 04?
Дальше я хочу поставить еще два dateTimePicker для время, но уже сомневаюсь что филтр будет работать!
Как решить эту ситуацию?
Пока в dateTimePicker в свойствах CustomFormat написал ddMM

C#
1
2
3
4
5
6
7
 private void button31_Click_1(object sender, EventArgs e)
        {          
            SqlDataAdapter sfd = new SqlDataAdapter("select * from TWENTYNOTCLOSEDdb where Date between'" + dateTimePicker1.Value.ToString() + "' and '" + dateTimePicker2.Value.ToString() + "'", conn);           
            System.Data.DataTable sd = new System.Data.DataTable();
            sfd.Fill(sd);
            advancedDataGridView5.DataSource = sd;
        }
Миниатюры
При изменение данных в столбце выдает ошибку   При изменение данных в столбце выдает ошибку  
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
25.02.2020, 03:53
Посмотрите что у вас за значение dateTimePicker, помните что dateTimePicker хранит полную дату, а не огрызок кастомного варианта.
Цитата Сообщение от Felikss Посмотреть сообщение
Почему он показывает февраль 02 месяц
такое возможно если например год первого dateTimePicker меньше года второго.
Цитата Сообщение от Felikss Посмотреть сообщение
и п очему он не показывает записи 0501 а только до 04
, а это может быть из-за того что время правого dateTimePicker указано 00.00(либо какое-то другое, но тоже мелкое)
З. Ы. Правда оба варианта по идее не должны работать.
0
4 / 4 / 0
Регистрация: 21.08.2016
Сообщений: 404
25.02.2020, 14:45  [ТС]
Aferuga, Сначала я использовал 2 textbox и там тоже самое. Мне без разницы что использовать, главное чтобы все работало. А оно нивкакую не работает.
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
26.02.2020, 07:17
Цитата Сообщение от Felikss Посмотреть сообщение
Мне без разницы что использовать, главное чтобы все работало
Так и будете вбивать неправильный пароль пока компьютер не согласится? Или может стоит сперва попробовать ввиде sql-запроса посмотреть как это работает на бд, посмотреть в каком формате данные обрабатываются, а в каком нет, и уже потом писать всякие извращения с кастомными вариантами?
З. Ы. Если не получается с форматом, то как вариант можно оформить параметрический запрос.
0
4 / 4 / 0
Регистрация: 21.08.2016
Сообщений: 404
01.03.2020, 05:34  [ТС]
Aferuga, Переделал в SQL значение на int, (TWENTYNOTCLOSEDdb.DatumsLaiks1 = Convert.ToInt32(row["DatumsLaiks1"]) теперь при нажатие на кнопку выдает ошибку - Object cannot be cast from DBNull to other types. И вообще не загружает данные в datagridview
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 public partial class Form8 : Form
    {
        SqlConnection conn;
}
 public System.Data.DataTable LoadExcelSheetToTable1(string filename, string sheet)
        {
            System.Data.DataTable table1 = new System.Data.DataTable();
            using (System.Data.OleDb.OleDbConnection co =
            new System.Data.OleDb.OleDbConnection(
            "Provider=Microsoft.ACE.OLEDB.12.0; " +
            "Data Source='" + filename + "';" +
            "Extended Properties=\"Excel 12.0;HDR=TES;IMEX=1\""))
            using (System.Data.OleDb.OleDbDataAdapter import =
            new System.Data.OleDb.OleDbDataAdapter(
            "select * from [" + sheet + "$]", co))
                import.Fill(table1);
            return table1;
        }
  void PlaceTableToDatabase1(System.Data.DataTable table1)
        {
            ModelNepieslegts db2 = new ModelNepieslegts();
            table1.PrimaryKey = new DataColumn[] { table1.Columns["ID"] };
            foreach (DataRow row in table1.Rows)
            {
                int ID = Convert.ToInt32(row["ID"]);
 
                TWENTYNOTCLOSEDdb TWENTYNOTCLOSEDdb = db2.TWENTYNOTCLOSEDdb.Find(ID);
                if (TWENTYNOTCLOSEDdb == null)
                {
                    TWENTYNOTCLOSEDdb = new TWENTYNOTCLOSEDdb();
                    TWENTYNOTCLOSEDdb.ID = ID;
                    TWENTYNOTCLOSEDdb.Gads1 = Convert.ToString(row["Gads1"]);
                    TWENTYNOTCLOSEDdb.Numurs1 = Convert.ToString(row["Numurs1"]);
                    TWENTYNOTCLOSEDdb.Objekts1 = Convert.ToString(row["Objekts1"]);
                    TWENTYNOTCLOSEDdb.DatumsLaiks1 = Convert.ToInt32(row["DatumsLaiks1"]);
                    TWENTYNOTCLOSEDdb.Notikums1 = Convert.ToString(row["Notikums1"]);
                    TWENTYNOTCLOSEDdb.Rīcība1 = Convert.ToString(row["Rīcība1"]);
                    db2.TWENTYNOTCLOSEDdb.Add(TWENTYNOTCLOSEDdb);
                }
                else
                {
                    TWENTYNOTCLOSEDdb.Gads1 = Convert.ToString(row["Gads1"]);
                    TWENTYNOTCLOSEDdb.Numurs1 = Convert.ToString(row["Numurs1"]);
                    TWENTYNOTCLOSEDdb.Objekts1 = Convert.ToString(row["Objekts1"]);
                    TWENTYNOTCLOSEDdb.DatumsLaiks1 = Convert.ToInt32(row["DatumsLaiks1"]);
                    TWENTYNOTCLOSEDdb.Notikums1 = Convert.ToString(row["Notikums1"]);
                    TWENTYNOTCLOSEDdb.Rīcība1 = Convert.ToString(row["Rīcība1"]);
                }
            }
            foreach (TWENTYNOTCLOSEDdb TWENTYNOTCLOSEDdb in db2.TWENTYNOTCLOSEDdb)
                if (table1.Rows.Find(TWENTYNOTCLOSEDdb.ID) == null)
                    db2.TWENTYNOTCLOSEDdb.Remove(TWENTYNOTCLOSEDdb);
            db2.SaveChanges();
        }
 
private void button30_Click(object sender, EventArgs e)
        {
advancedDataGridView5.Refresh();           
                    System.Data.DataTable table1 = LoadExcelSheetToTable1(@"\\w-fsclu1-str\STR\LE\DF\DVKC_DS\DVKC Search Engine\DVKC Search Engine\DVKC Search Engine\bin\Debug\Datubazes\2020_Gada atskaite\TWENTYNOTCLOSEDdb.xlsx", "Nepieslēgtie objekti");
                    PlaceTableToDatabase1(table1);
                    conn = new SqlConnection("Data Source=KVP-25793;Initial Catalog=Nepieslegtie;Integrated Security=True;TransparentNetworkIPResolution=True");
                    this.tWENTYNOTCLOSEDdbTableAdapter.Fill(this.nepieslegtieDataSet.TWENTYNOTCLOSEDdb);
}
По всему интернету искал почему так, но так и ничего не нашел, либо я ничего не понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2020, 05:34
Помогаю со студенческими работами здесь

при введении конечных данных выдает ошибку
type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; StringGrid1: TStringGrid; Label2: TLabel; Edit2:...

При подключении к базе данных выдаёт ошибку
Пытаюсь подключить бд к программе на mysql но вылетает ошибка, прописывал порт но тогда ошибка "port ключевое слово не распознано"

При просмотре двоичных данных выдает ошибку
При нажатии на двоичные данные в таблице выскакивает ошибка вида: "Возникла ошибка при установке связи в приложении MS Access с сервером...

Выдает ошибку при присваивании данных массиву.
$result = mysql_query('SELECT id, title, description, autor, date FROM lessons',$db); $myrow = mysql_fetch_array ($result); ошибка: ...

При добавлении данных в таблицу выдает ошибку
Здравствуйте! Возникла проблема с mysql и php. Вообщем, есть таблица с 4 столбцами : id, login, group, password; есть страница с которой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru