Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 0
Регистрация: 07.09.2020
Сообщений: 45

Получение итоговой цены, если самми данные находятся на других формах и таблицах

05.11.2021, 18:25. Показов 1525. Ответов 4
Метки c#, sql (Все метки)

Студворк — интернет-сервис помощи студентам
*сами
//Таблица услуги
SQL
1
2
3
4
5
6
CREATE TABLE [dbo].[Services] (
    [Id_services] INT           NOT NULL,
    [Name]        NVARCHAR (50) NULL,
    [Cost]        INT           NOT NULL,
    PRIMARY KEY CLUSTERED ([Id_services] ASC)
);
//Таблица запчасти
SQL
1
2
3
4
5
6
CREATE TABLE [dbo].[Spare_parts] (
    [Id_spare_parts] INT           NOT NULL,
    [Name]           NVARCHAR (50) NULL,
    [Cost]           INT           NOT NULL,
    PRIMARY KEY CLUSTERED ([Id_spare_parts] ASC)
);
//Таблица сервис
SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE [dbo].[Service] (
    [Id]             INT           NOT NULL,
    [State_number]   NVARCHAR (50) NOT NULL,
    [Id_services]    INT           NOT NULL,
    [Id_spare_parts] INT           NOT NULL,
    [Ready_date]     NVARCHAR (50) NULL,
    [Total_cost]     INT           NOT NULL,
    CONSTRAINT [PK_Service] PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_Service_ToTable_1] FOREIGN KEY ([Id_services]) REFERENCES [dbo].[Services] ([Id_services]),
    CONSTRAINT [FK_Service_ToTable_2] FOREIGN KEY ([Id_spare_parts]) REFERENCES [dbo].[Spare_parts] ([Id_spare_parts]),
    CONSTRAINT [FK_Service_ToTable] FOREIGN KEY ([State_number]) REFERENCES [dbo].[Cars] ([State_number])
);
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace LabyDB
{
    public partial class Form6 : Form{
        //Строка подключения к БД
        SqlConnection connection = new SqlConnection(Program.GetConnectionString());
        SqlDataAdapter dataAdapter = new SqlDataAdapter();
        SampleDatabaseDataSet dataSet = new SampleDatabaseDataSet();
        //Обновление
        private void DatabaseUpdate(){
            dataGridView1.DataSource = null;
            dataSet.Clear();
            connection.Open();
            SqlCommand comand = new SqlCommand("Select * From Service ORDER BY Id ASC", connection);
            dataAdapter.SelectCommand = comand;
            dataAdapter.Fill(dataSet);
            dataGridView1.DataSource = dataSet.Tables[0];
            connection.Close();
        }
        //Добавление записи
        void DataAdd(){
            dataGridView1.DataSource = null;
            dataSet.Clear();
            connection.Open();
 
            SqlCommand comand = new SqlCommand("Insert Into Service Values (@Id, @State_number, @Id_services, @Id_spare_parts, @Ready_date, @Total_cost)", connection);
            comand.Parameters.AddWithValue("@Id", Convert.ToInt64(textBox1.Text));
            comand.Parameters.AddWithValue("@State_number", textBox2.Text);
            comand.Parameters.AddWithValue("@Id_services", Convert.ToInt64(textBox3.Text));
            comand.Parameters.AddWithValue("@Id_spare_parts", Convert.ToInt64(textBox4.Text));
            comand.Parameters.AddWithValue("@Ready_date", textBox5.Text);
            comand.Parameters.AddWithValue("@Total_cost", Convert.ToInt64(textBox6.Text));
 
            dataAdapter.SelectCommand = comand;
            dataAdapter.Fill(dataSet);
            dataGridView1.DataSource = dataSet.Tables[0];
            connection.Close();
 
            DatabaseUpdate();//вызов метода обновления dataGridView
        }
        //Изменение записи
        void DataChange(){
            SqlCommand command = new SqlCommand("Update Service set State_number=@State_number, Id_services=@Id_services, Id_spare_parts=@Id_spare_parts, Ready_date=@Ready_date, Total_cost=@Total_cost Where Id = " + dataGridView1[0, dataGridView1.CurrentRow.Index].Value, connection);
            dataGridView1.DataSource = null;
            dataSet.Clear();
            connection.Open();
 
            command.Parameters.AddWithValue("@Id_services", textBox2.Text);
            command.Parameters.AddWithValue("@Id_services", Convert.ToInt64(textBox3.Text));
            command.Parameters.AddWithValue("@Id_spare_parts", Convert.ToInt64(textBox4.Text));
            command.Parameters.AddWithValue("@Ready_date", textBox5.Text);
            command.Parameters.AddWithValue("@Total_cost", Convert.ToInt64(textBox6.Text));
 
            dataAdapter.SelectCommand = command;
            dataAdapter.Fill(dataSet);
            dataGridView1.DataSource = dataSet.Tables[0];
            connection.Close();
 
            DatabaseUpdate();
        }
        //Удаление записи
        void DataDelete(){
            SqlCommand command = new SqlCommand("Delete From Service where Id = " + dataGridView1[0, dataGridView1.CurrentRow.Index].Value, connection);
 
            dataGridView1.DataSource = null;
            dataSet.Clear();
            connection.Open();
 
            dataAdapter.SelectCommand = command;
            dataAdapter.Fill(dataSet);
            dataGridView1.DataSource = dataSet.Tables[0];
            connection.Close();
 
            DatabaseUpdate();
        }
 
        public Form6(){
            InitializeComponent();
        }
 
        private void Form6_Load(object sender, EventArgs e){
            DatabaseUpdate();
        }
        //Кнопка обновить
        private void button8_Click(object sender, EventArgs e){
            DatabaseUpdate();
        }
        //Кнопка добавить
        private void button1_Click(object sender, EventArgs e){
            DataAdd();
        }
        //Кнопка изменить
        private void button3_Click(object sender, EventArgs e){
            DataChange();
        }
        //Кнопка удалить
        private void button7_Click(object sender, EventArgs e){
            DataDelete();
        }
        //Кнопка назад
        private void button4_Click(object sender, EventArgs e){
            Program.form4.Show();
            this.Hide();
        }
        //Кнопка выход на главную
        private void button5_Click(object sender, EventArgs e){
            Program.form1.Show();
            this.Hide();
        }
 
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
 
        }
        //Тут должна быть функция подсчета итоговой цены.
        private void button2_Click(object sender, EventArgs e)
        {
 
        }
    }
}
Миниатюры
Получение итоговой цены, если самми данные находятся на других формах и таблицах   Получение итоговой цены, если самми данные находятся на других формах и таблицах   Получение итоговой цены, если самми данные находятся на других формах и таблицах  

0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2021, 18:25
Ответы с готовыми решениями:

Как выполнить обновление поля,когда данные находятся в разных таблицах
В базе 5 таблиц. "Метод доставки","Поставки",""Товары","Клиенты","Заказы". Создаю запрос на обновление поля "Цена" из таблицы...

VirtueMart Пересчет итоговой цены в зависимости от выбранного количества товара
Подскажите, а в virtuemart 2 реализовано следующее: Пересчет итоговой цены в зависимости от выбранного количества товара. Например. 1...

Если значения ячейки в двух таблицах совпадают - вывести данные в DataGridView
Ребята, горит диплом. Пожалуйста помогите. Есть 2 таблицы: 1) Вакансии(Столбцы: id,необходимое образование,должность и т.д) 2)...

4
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
06.11.2021, 00:26
Сама формулировка сабжа уже говорит о том, что у Вас неправильный подход к построению приложения.

Добавлено через 11 минут
1. Зачем Вам сразу 3 формы - Вы их собираетесь показывать одновременно ?
2. Если формы для того, чтобы брать из них данные, то это не только лишнее, но в корне ошибочно. Данные нужно брать из таблиц БД, а не из их отражения в гридах.
3. Вы даете редактировать данные в гридах. Сразу в трех ? Если так, то это опять-таки велосипед с шестью квадратными колесами. За один раз нужно давать редактировать только одну сущность или сущности в одном гриде. Иначе юзер просто запутается. Да и программа будет глючить по-черному.
4. Работать нужно даже не с таблицами, а с моделями - это не только методологически правильно, но и удобно. В том числе в плане валидации вводимых данных.
5. Прежде чем откуда-то пионерить код, нужно потрудиться хотя бы элементарно в нем разобраться, чтоб не нагородить того, что у Вас в приложении.

Весь Ваш код - пример как НЕ НУЖНО программировать. Начиная от всех этих Form35 и button138 и заканчивая сованием обмена с БД непосредственно в код форм.

Добавлено через 4 минуты
В дополнение к самому интерфейсу.
Спорю на любую сумму в пределах 0,00001 биткоина, что все эти Ваши формы при изменении размера окна будут безбожно глючить - кнопки исчезать, гриды перекосячивать и т.д. Вы что-нибудь слышали про "причалы" (docking) ? Контролы должны автоматически выравниваться внутри контейнеров - тогда интерфейс будет "отзывчивым".

Добавлено через 2 минуты
И еще: где меню приложения? Где инструментальные линейки ? Как это делается в любом мало-мальски приличном приложении. У Вас же не интерфейс - свалка контролов с неясными функциями. Где сервис - сортировка, фильтрация, поиск и т.д.
Кому нужен этот Ваш уродец, кроме Вас самого ?
0
2 / 2 / 0
Регистрация: 07.09.2020
Сообщений: 45
06.11.2021, 17:15  [ТС]
Отвечаю на ваши агро-школьные вопросики.
1) Делаю построение приложения, как указано в курсовой;
2) Открою не большую тайну их там не 3, а 8 форм(Все это указано в тех. части готового продукта, от которого я не могу отступить не на шаг.)
3) Работа не производится одновременно со всеми формами;
4) "Это велосипед с квадратными колесами?" - да, это является "велосипедом с квадратными колесами";
5) Пойду "ушатаю" преподавателя ноутбуком, в котором открыт ваш "комментарий", а то пионерит код, а потом студентам его дает. Во прикол будет...
6) Хех, давно хотел посмотреть на приматов пользующихся битком... Хотя, я даже может рад, что они не собирают свои инвестиционные портфели в более благоприятных приложениях. А то начитаешься таких в Пульсе, хоть вешайся после этого...
7) "Весь Ваш код - пример как НЕ НУЖНО программировать." - возьму на заметку.
8) "И еще: где меню приложения? Где инструментальные линейки ? Как это делается в любом мало-мальски приличном приложении. У Вас же не интерфейс - свалка контролов с неясными функциями. Где сервис - сортировка, фильтрация, поиск и т.д. " - убрал чтобы пока не мозолила глаза на форуме. Не вижу конструктивно поставленного ответа, ссылок на полезные статьи и др., значит, ПО ВАШЕЙ ЛОГИКИ, перед мной школьник, которому дали посидеть в интернета 30 минут.
9) "Кому нужен этот Ваш уродец, кроме Вас самого ? " - преподавателю.
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
06.11.2021, 21:28
Лучший ответ Сообщение было отмечено The_Original как решение

Решение

The_Original, вангую, что для получения итоговой цены нужно добавить цену запчасти к цене услуги. Тогда ее можно получить запросом
SQL
1
2
3
4
5
SELECT Services.Cost + Spare_parts.Cost AS TotalCost
FROM  Service INNER JOIN
Services ON Service.Id_services = Services.Id_services INNER JOIN
Spare_parts ON Service.Id_spare_parts = Spare_parts.Id_spare_parts
WHERE ...
1
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
06.11.2021, 23:36
Цитата Сообщение от The_Original Посмотреть сообщение
1) Делаю построение приложения, как указано в курсовой;
Не видел Вашей "курсовой", но вполне допускаю, что задание составлено корректно.
Цитата Сообщение от The_Original Посмотреть сообщение
2) Открою не большую тайну их там не 3, а 8 форм
В задании может быть 100500 форм, это не имеет ровно никакого отношения к сабжу. Вы показали 3 из них, поэтому был задан этот вопрос. Главное же, что работа с базой НЕ должна выполняться непосредственно в формах - у Вас наоборот. Если так было в методичке препода (в чем я сомневаюсь), то такую методичку в печку !
Цитата Сообщение от The_Original Посмотреть сообщение
6) Хех, давно хотел посмотреть на приматов пользующихся битком
Это была шутка. Вы ее не поняли
Цитата Сообщение от The_Original Посмотреть сообщение
Не вижу конструктивно поставленного ответа, ссылок на полезные статьи и др.
Все приведенные пункты указывают явно на вполне конструктивные вещи. Ссылки ? Их можете найти сами, банально погуглив. На этом же ресурсе хороших советов с примера кода валом - не ленитесь поискать.

Дать конкретный совет для Вашего говнокода, как это сделал Igr_ok, можно, конечно, но от этого Ваш "велосипед" не станет краше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2021, 23:36
Помогаю со студенческими работами здесь

О формах, таблицах и прочей чертовщине :)
День добрый, форумчане. Вопрос такой. Есть форма, выдающая значения (см. рисунок). Каким образом можно провернуть финт, чтобы кликом...

Как построить график, если данные находятся на разных листах книги?
Подскажите как построить график если денные находятся на разных листах книги

Еженедельное заполнение итоговой 1-й таблицы нарастающим стогом с 3-х других файлов
В 1С программе еженедельно выгружаются 3 отчета по продажам по 3-м разным каналам продаж, каждый канал в отдельном файле (допустим с...

Как заполнить DBGRID, если все необходимые данные находятся в многомерном массиве?
Подскажите пожалуйста как заполнить DBGRID, если все необходимые данные находятся в многомерном массиве? Или например задать как DataSource...

Изменение цены сразу в трех таблицах
Существуют 3 таблицы со следующими полями: Orders: idOrder (ключ), Price, status (новый/выполнен); Services: idPosService (ключ),...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru