Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2021, 11:37
Ответы с готовыми решениями:

Доступ к форме, через другие формы
Существует 2 формы(А и Б), которые обе открывают форму В. Как на форме В определить с какой формы она была вызвана? Грубо говоря, на...

Передача изменений в CodeDom через другие формы
У меня есть класс для компиляции исходного кода из ресурсов, на выходе получаю полноценный файл .exe Как бы это объяснить :) ммм...

Иерархическое заполнение данными через конструктор формы
Здравствуйте, такой вопрос, хочу сделать иерархическое наполнение ComboBox-ов в своей форме, нужно, чтобы в зависимости от выбора в...

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();
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public partial class Form2 : Form
    {
        Form1 fgrid1;
        public Form2(Form1 f1)
        {
            InitializeComponent();
            this.fgrid1 = f1;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            fgrid1.dataGridView1.Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text);
        }
    }
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
22.10.2021, 14:47
Цитата Сообщение от Jim Reinor Посмотреть сообщение
К примеру, попытка реализовать поиск в DataGridView из второй формы
Зачем? Разве нельзя делать поиск на первой?
Цитата Сообщение от Jim Reinor Посмотреть сообщение
На вставку, обновление, поиск и удаление данных есть другие формы (Вставка/Обновить/Найти/Удалить). С вызовом форм проблем нет.
В формах - TextBox-ы с данными из строки (номер,имя и тд) кнопки в самих формах: Вставка, Обновление, Найти, Удалить, которые осуществляют операцию.
Создание и обновление - это вообще одна и та же форма должна быть, т.к. поля те же. Для удаления форма вообще не нужна. Только вопрос с подтверждением и удаление записи.
Создание/редактирование. Передаете в форму в качестве параметра DataRow. Привязываете данные к контролам редактирования. Профессионалы используют Binding, г-кодеры пишут просто
C#
1
row["Name"]=TextBox1.Text;
Если строка новая, ее нужно добавить в DataTable, если она уже существует- вообще ничего делать не надо.
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
Цитата Сообщение от Jim Reinor Посмотреть сообщение
но изменить ее не могу - та же ошибка.
Это проблема с клиентом
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
22.10.2021, 16:09  [ТС]
Как все таки пофиксить ошибку и суметь добавить/изменить данные через dataGridView1.Rows.Add()?

Добавлено через 19 минут
Цитата Сообщение от Jim Reinor Посмотреть сообщение
С обновлением - мне удалось только залить выбранную строку в DGV, но изменить ее не могу - та же ошибка.
Опечатался, наоборот, удалось только залить выбранную строку из DGV в форму обновления, но изменить данные в форме не могу, чтобы строка поменялась в DGV.
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
23.10.2021, 13:13
Jim Reinor, во вложении простой пример редактирования записи
Вложения
Тип файла: zip DataRowEditor.zip (48.5 Кб, 4 просмотров)
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
Цитата Сообщение от Jim Reinor Посмотреть сообщение
Разобрался, $ - опечатка
улыбнуло. https://docs.microsoft.com/en-... terpolated
Цитата Сообщение от Jim Reinor Посмотреть сообщение
row["e_Num"] = textBox1.Text; - Столбец не принадлежит таблице , или другие исключения.
Неправильно написано название столбца.
Цитата Сообщение от Jim Reinor Посмотреть сообщение
Метод LoadData(); совершенно непригоден под выгрузку данных из таблицы БД
Метод создает DataTable и привязывает его к гриду. Данные из БД выгружаются в
DataTable и привязываются к гриду. Что тут сложного?
На основании примера вы должны создать собственный способ решения задачи, а не надеяться, что достаточно будет скопировать код.
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
23.10.2021, 15:24  [ТС]
Цитата Сообщение от Igr_ok Посмотреть сообщение
улыбнуло. https://docs.microsoft.com/en-... terpolated
По крайней мере, мои фреймворки не поддерживают эту функцию и ставиться не желают на мою ОС.

Название столбца написано правильно, оно таковое и в БД. А в шапке DGV - "русифицированная" подпись программным переименованием ячейки.

Метод LoadData(); может грузить только заданные данные, из БД никак не выгрузить, я пробовал по разному добавлять данные, и не выходит.
Я на основании примера и создавал свое решение задачи, но оно не подходит совсем под эту область.

Похоже, что без встроенных SQL-запросов задача не решаемая и надо строить взаимодействие с таблицей на них, обернув их в код. Иначе ни работы с данными, ни валидации изменений не видать.
Сейчас смотрю пример по видео, возможно будет лучше.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
23.10.2021, 15:45
Jim Reinor, Ваша основная ошибка - попытка работать дедовскими методами (все эти Row и Column с индексаторами) + редактирование непосредственно в гриде. И никакие фрейморки тут не при чем. Сам метод достаточно кривой и имеет тучу недостатков, начиная от валидации и заканчивая написанием моря кода для событий всех этих адаптеров, гридов и датасетов. Для людей с опытом это не проблема, а для новичков типа Вас - геморрой с гонореей

Нужны модели + репозиторий + добавление/изменение через модальные формы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2021, 15:45
Помогаю со студенческими работами здесь

Работа с данными через ADO
Юзаю компоненты ADO. SQL запросом с помощью ADOQuery и DataSource, подгрузил в DBGrid. Изначально ещё подумал, что с графическим...

Как работать в php с данными формы, полученными через ajax jQuery
Я отправляю форму, используя ajax jQuery. В консоли выводится успешное сообщение со всеми данными: Array ( => 1111) 1111. ...

Работа с полученным через $.get() обьектом/данными
Господа! 3й день бьюсь с одной функцией! var userIdD = $.get('http://someurl.com/options.php', function(abc) { var abc = $(abc);...

Работа с данными JSON через графический интерфейс
Задача: Создать GUI программу в которой нужно вводить обычные данные(в TextBox), и посредством нажатия кнопки создать файл .json с этими...

Работа с данными без использования БД Access (через классы)
Всем привет! Нужно реализовать программу, которая работала с базой. Нельзя использовать БД Access, а нужно реализовать ее через классы. Не...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 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. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru