|
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
|
|
MS SQL Работа с данными через другие формы22.10.2021, 11:37. Показов 2138. Ответов 12
Метки нет (Все метки)
Добрый день. Написал приложение, взаимодействующее с БД MS SQL Server.
Работу с данными я делал ранее напрямую через источники данных, но через подключение по строке - приходится делать впервые, вначале запретил ручное редактирование таблицы, для редактирования через формы. На вставку, обновление, поиск и удаление данных есть другие формы (Вставка/Обновить/Найти/Удалить). С вызовом форм проблем нет. В формах - TextBox-ы с данными из строки (номер,имя и тд) кнопки в самих формах: Вставка, Обновление, Найти, Удалить, которые осуществляют операцию. DataGridView я установил модификатор public. Но никак не могу подключиться к DataGridView - любая форма не видит. TextBox и кнопки на формах работы с данными - модификатор public. Я не так давно начал работать с этим, думал, что задача пустяковая, но не выходит. (выбрав в DGV строку, изменить ее данные в TextBox и после изменить данные и в DGV, написать туда и добавить данные, удалить данные выбранные из строки DGV, скопированные в поля TextBox). Нужно: 1) Поиск запись в таблице по одному из признаков (номер,имя и тд), если заполнен хотя бы 1 или более TextBox, и такая запись присутствует в столбце. 2) Обновить/удалить данные через форму, в каждую форму по TextBox-ам подгружается выбранная строка из DataGridView - номер,имя из DGV в свой TextBox и редактирование/принятие удаления данных 3) Вставить - просто добавить данные из всех TextBox в DataGridView, в новую строку. Добавлено через 27 минут Хотя бы примеры, как правильно форма с несколькими TextBox "увидит" DataGridView и может с ним манипулировать. Добавлено через 17 минут Соль в том, чтобы другие формы, например Form2 вообще увидели DataGridView на Form1. Без этого ни один метод для кнопок не работает - формы не распознают DGV
0
|
|
| 22.10.2021, 11:37 | |
|
Ответы с готовыми решениями:
12
Иерархическое заполнение данными через конструктор формы |
|
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
|
|
| 22.10.2021, 11:52 [ТС] | |
|
К примеру, попытка реализовать поиск в DataGridView из второй формы, если данные, введенные хотя бы в одном TextBox присутствуют в таблице. И так - с любым методом работы с DGV в любой форме - не видит DGV.. Как его правильно подключить к форме2, чтобы можно было работать с ним - ничего конкретного не могу найти.
0
|
|
|
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
|
|
| 22.10.2021, 11:58 | |
|
Jim Reinor,
.. старый код, но смысл поймете? форму с DGV надо передавать аргументом .. там еще и кино есть ... How to Add a New Row To Datagridview From Another Form Using C#
1
|
|
|
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
|
||||||
| 22.10.2021, 12:41 [ТС] | ||||||
|
carrotik, ну что ж, посмотрел, привязал DGV к формам. Вроде неплохо. Поиск заработал.
Однако, далее, при попытке добавить в DGV данные из Textbox появляется ошибка "Строки нельзя программным способом добавить в коллекцию строк DataGridView, если элемент управления привязан к данным." в строке dataGridView1.Rows.Add();
0
|
||||||
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
||||||||
| 22.10.2021, 14:47 | ||||||||
|
Создание/редактирование. Передаете в форму в качестве параметра DataRow. Привязываете данные к контролам редактирования. Профессионалы используют Binding, г-кодеры пишут просто
0
|
||||||||
|
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
|
|
| 22.10.2021, 15:06 [ТС] | |
|
Igr_ok, С поиском и удалением я уже разобрался, к удалению только надо будет валидацию прикрутить, чтобы изменения DGV сохранялись в БД.
А вот проблемы с добавлением - гадкая ошибка "Строки нельзя программным способом добавить в коллекцию строк DataGridView, если элемент управления привязан к данным.", все пытаюсь найти фикс. С обновлением - мне удалось только залить выбранную строку в DGV, но изменить ее не могу - та же ошибка.
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
|
| 22.10.2021, 15:47 | |
|
0
|
|
|
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
|
||
| 22.10.2021, 16:09 [ТС] | ||
|
Как все таки пофиксить ошибку и суметь добавить/изменить данные через dataGridView1.Rows.Add()?
Добавлено через 19 минут
0
|
||
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
|
| 23.10.2021, 13:13 | |
|
Jim Reinor, во вложении простой пример редактирования записи
0
|
|
|
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
|
|
| 23.10.2021, 14:03 [ТС] | |
|
Сейчас попробую протестировать и переписать под свои нужды. Смутило то, что синтаксис
row[1] = $"Name{i+1}"; начиная с $ ошибочным горит, и требование нового фреймворка. Попробую обойти ошибку уже в своем проекте. Добавлено через 14 минут Разобрался, $ - опечатка, пересобрал проект под свой фреймворк и протестировал - пример рабочий, сейчас буду интегрировать методику заполнения в свой. Добавлено через 15 минут К сожалению, совсем не помогло при интеграции на свою задачу. Добавление данных через другую форму, используя из примера методы row["e_Num"] = textBox1.Text; - Столбец не принадлежит таблице , или другие исключения. Метод LoadData(); совершенно непригоден под выгрузку данных из таблицы БД, и пригоден только для задания типа данных в DGV и автозаполнения нескольких значений, пришлось оставить старый метод. Пример оказался рабочим только с встроенной заполняющейся DataGridView, которая размечается через LoadData();, в котором прописаны тип и величина переменной, и автозаполнение циклом на 10 рядов. Придется мне поискать другой способ переписать приложение.
0
|
|
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
||||
| 23.10.2021, 15:18 | ||||
|
DataTable и привязываются к гриду. Что тут сложного? На основании примера вы должны создать собственный способ решения задачи, а не надеяться, что достаточно будет скопировать код.
0
|
||||
|
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
|
||
| 23.10.2021, 15:24 [ТС] | ||
|
Название столбца написано правильно, оно таковое и в БД. А в шапке DGV - "русифицированная" подпись программным переименованием ячейки. Метод LoadData(); может грузить только заданные данные, из БД никак не выгрузить, я пробовал по разному добавлять данные, и не выходит. Я на основании примера и создавал свое решение задачи, но оно не подходит совсем под эту область. Похоже, что без встроенных SQL-запросов задача не решаемая и надо строить взаимодействие с таблицей на них, обернув их в код. Иначе ни работы с данными, ни валидации изменений не видать. Сейчас смотрю пример по видео, возможно будет лучше.
0
|
||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 23.10.2021, 15:45 | |
|
Jim Reinor, Ваша основная ошибка - попытка работать дедовскими методами (все эти Row и Column с индексаторами) + редактирование непосредственно в гриде. И никакие фрейморки тут не при чем. Сам метод достаточно кривой и имеет тучу недостатков, начиная от валидации и заканчивая написанием моря кода для событий всех этих адаптеров, гридов и датасетов. Для людей с опытом это не проблема, а для новичков типа Вас - геморрой с гонореей
![]() Нужны модели + репозиторий + добавление/изменение через модальные формы.
0
|
|
| 23.10.2021, 15:45 | |
|
Помогаю со студенческими работами здесь
13
Работа с данными JSON через графический интерфейс Работа с данными без использования БД Access (через классы) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|