Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 31.01.2011
Сообщений: 19
.NET 3.x

При сохранении подменяются значения в столбце id

10.09.2011, 14:38. Показов 1332. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заношу данные в dataGridView

сохраняю
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        
private void сохранитьИзмененияToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                projAdapter.Update(DS, "proj_base");
                peopAdapter.Update(DS, "people_base");
            }
            catch
            {
                MessageBox.Show("Ошибка записи данных.", "Ошибка записи");
            }
        }
смотрю что сохранилось (внимание не столбец id)

О_о

В данном случае отличается всего на единицу, но если ещё потыкать, то разрыв будет больше.
Сохраняю адаптером
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
        private DataSet SqlConnect()
        {
            DataSet dataSet = new DataSet();
            
 
            // server connect
            SqlConnection connect = new SqlConnection(@"Data Source=(local)\sqlexpress;Initial Catalog=PROJ;Integrated Security=True");
            
            // query to project base
            projAdapter = new SqlDataAdapter("SELECT * FROM proj_base",connect);
            SqlCommandBuilder projBuilder = new SqlCommandBuilder(projAdapter);
            projAdapter.UpdateCommand = projBuilder.GetUpdateCommand();
            projAdapter.InsertCommand = projBuilder.GetInsertCommand();
            projAdapter.DeleteCommand = projBuilder.GetDeleteCommand();
            //saving project base in DataSet
            projAdapter.FillSchema(dataSet, SchemaType.Source, "proj_base");
            projAdapter.Fill(dataSet, "proj_base");
 
            // query to people base
            peopAdapter = new SqlDataAdapter("SELECT * FROM people_base", connect);
            //saving people base in DataSet
            SqlCommandBuilder peopBuilder = new SqlCommandBuilder(peopAdapter);
            peopAdapter.UpdateCommand = peopBuilder.GetUpdateCommand();
            peopAdapter.InsertCommand = peopBuilder.GetInsertCommand();
            peopAdapter.DeleteCommand = peopBuilder.GetDeleteCommand();
            //saving people base in DataSet
            peopAdapter.FillSchema(dataSet, SchemaType.Source, "people_base");
            peopAdapter.Fill(dataSet, "people_base");
 
            return dataSet;
        }
Как сделать чтоб в базу записывались именно те значения, которые отображаются в dataGridView?

Я подозреваю что виновата projAdapter.UpdateCommand = projBuilder.GetUpdateCommand();
ибо столбец с автоинкрементом.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.09.2011, 14:38
Ответы с готовыми решениями:

Как посчитать значения в столбце при условии того что в другом столбце напротив пустые ячейки
Всем привет, как посчитать значения в столбце при условии того что в другом столбце напротив пустые ячейки, прилагаю файл. В ручную я делаю...

GetTemplateChild() не работает при сохранении значения в переменную
Здравствуйте. Возникла странная проблема. Если использовать GetTemplateChild в OnApplyTemplate() при создании собственного контрола, то всё...

При сохранении в файл формата xlsx выпадает сообщение о сохранении шаблона
Такая дурацкая штука получается при сохранении в файл формата xlsx - выпадает сообщение о сохранении шаблона!!! Этот шаблон я как раз...

10
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
10.09.2011, 14:42
Скорее всего id - автоинкремент или счетчик.
0
0 / 0 / 0
Регистрация: 31.01.2011
Сообщений: 19
10.09.2011, 14:43  [ТС]
Да это первичный ключ с автоинкрементом. Но раньше же всё работало.
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
10.09.2011, 15:08
Как же раньше все могло работать нормально. Если СУБД сама будет вставлять туда значения.
0
0 / 0 / 0
Регистрация: 31.01.2011
Сообщений: 19
10.09.2011, 15:32  [ТС]
Не знаю как так получалось. Так как это исправить?
0
 Аватар для Midnayt
59 / 59 / 7
Регистрация: 07.12.2009
Сообщений: 324
10.09.2011, 15:44
тут описано как поставить cделай наоборот поставь там где Yes No
https://www.cyberforum.ru/ado-... 80878.html
Спец. идентиф. столба No если у тя рус то Нет
0
0 / 0 / 0
Регистрация: 31.01.2011
Сообщений: 19
10.09.2011, 16:20  [ТС]
Как убрать автоинкремент я знаю)) Он как раз нужен, но только чтоб при запись в БД установленные значения не менялись, а были как в таблице.
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
10.09.2011, 16:22
ver1000000,
Откройте код, которая создала студия и у dataSet уберите AutoIncrement
0
0 / 0 / 0
Регистрация: 31.01.2011
Сообщений: 19
10.09.2011, 17:01  [ТС]
Не надо нервничать, вопрос решён.
Убрал в БД автоинкремент данного столбца (теперь Adapter не в курсе что столбец надо инкрементировать) и поставил автоинкремент в DataGridView:
C#
1
2
3
            DS.Tables["proj_base"].Columns[0].AutoIncrement = true;
            DS.Tables["proj_base"].Columns[0].AutoIncrementSeed = 1;
            DS.Tables["proj_base"].Columns[0].AutoIncrementStep = 1;
Добавлено через 24 минуты
теперь проблема в повторении индекса((
Вводишь новую строку, а индекс опять начинается с 1го. DataGridView просто игнорит такую строку и удаляет её. Вот и вводишь новую строку пока не сгенерируется уникальный индекс))
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
10.09.2011, 17:13
Для этого и придумали автоикремент и первичный ключ.
0
0 / 0 / 0
Регистрация: 31.01.2011
Сообщений: 19
11.09.2011, 18:15  [ТС]
А зачем придумали подмену полученых значений?

Добавлено через 40 минут
В принципе тоже решил, но такие городульки...
C#
1
2
3
4
5
6
7
8
int maxIndex;
 
            if (!dataGridView1.Rows[dataGridView1.Rows.Count - 1].IsNewRow)
                maxIndex = Convert.ToInt32(dataGridView1.Rows[dataGridView1.Rows.Count - 2].Cells[0].Value) + 1;
            else maxIndex = 0;            
            DS.Tables["proj_base"].Columns[0].AutoIncrement = true;
            DS.Tables["proj_base"].Columns[0].AutoIncrementSeed = maxIndex;
            DS.Tables["proj_base"].Columns[0].AutoIncrementStep = 1;
Добавлено через 59 минут
Даже так:
C#
1
2
3
4
5
6
 if (dataGridView1.Rows[dataGridView1.Rows.Count - 1].IsNewRow && dataGridView1.Rows[dataGridView1.Rows.Count - 2].Cells[0].Value != null)
                maxIndex = Convert.ToInt32(dataGridView1.Rows[dataGridView1.Rows.Count - 2].Cells[0].Value) + 1;
            else maxIndex = 0;
            DS.Tables["proj_base"].Columns[0].AutoIncrement = true;
            DS.Tables["proj_base"].Columns[0].AutoIncrementSeed = maxIndex;
            DS.Tables["proj_base"].Columns[0].AutoIncrementStep = 1;
Добавлено через 23 часа 15 минут
ВОТ ПРАВИЛЬНЫЙ ВАРИАНТ:
C#
1
2
3
4
5
6
7
int maxIndex;
      
            maxIndex = (int)DS.Tables["proj_base"].Compute("MAX(id)", "") + 1;
 
            DS.Tables["proj_base"].Columns[0].AutoIncrement = true;
            DS.Tables["proj_base"].Columns[0].AutoIncrementSeed = maxIndex;
            DS.Tables["proj_base"].Columns[0].AutoIncrementStep = 1;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2011, 18:15
Помогаю со студенческими работами здесь

AkelPad, при сохранении "Символы будут утеряны при сохранении в этой кодировке"
Иногда при сохранении текстового файла в AkelPad появляется окно: Строка "12" содержит символы, которые будут утеряны при сохранении в...

Как выделить цветом значения в столбце, которые содержатся в другом столбце другого листа
Как выделить цветом значения в столбце , которые содержатся в другом столбце другого листа ?

Выборка минимального значения в ленточной форме при наличии в столбце цифр и букв
Привет форумчане. Может кто подскажет, возможно ли осуществить выборку в результирующее поле ленточной формы следующим порядком. В...

При значении ячеек в столбце А присвоить определенное значение ячейкам в столбце B
Столкнулся с тем, что мне нужно при значении ячеек в столбце А присвоить определенное значение ячейкам в столбце B. Например, если в любой...

Как объединить ячейки во втором столбце при совпадении значений в первом столбце
Здравствуйте. Помогите плиз. В таблице есть повторяющиеся значения в первом столбце (код товара) и разные значения во втором...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru