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

Реализация товаров

12.02.2020, 18:18. Показов 3404. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте! Делаю программу Склад, есть таблицы Клиенты, Приход, Товары и Реализация. Все таблицы заполняются отлично.

Но теперь не знаю как сделать, когда вывожу товар через таблицу Реализация, в таблице Товары и в столбце Количество уменьшались значения. Можете сказать каким кодом это реализовать? Или есть ли рабочий код?

Скриншоты

Программа
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.02.2020, 18:18
Ответы с готовыми решениями:

Разработать архитектуру классов иерархии товаров при разработки системы управления потоков товаров
Уважаемое IT сообщество подскажите пожалуйста в каком направлении лучше двигаться в решении следующей задачи. Задача. Разработать...

Разработать архитектуру классов иерархии товаров при разработке системы управления потоками товаров
Разработать архитектуру классов иерархии товаров при разработке системы управления потоками товаров для дистрибьюторской компании. ...

Сложить количество товаров в листе с количеством товаров в массиве
В массиве naskl хранятся три товара, их количество надо сложить с количеством товаров в листе Tinfo 1 класс class TTovar { ...

16
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 145
13.02.2020, 16:41  [ТС]
Может кто-нибудь посмотреть тему? Нигде не нашёл про Count
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
13.02.2020, 17:22
..вы бы лучше код выложили, а не битый архив ...
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 145
13.02.2020, 18:49  [ТС]
carrotik, Ок. Вот код Формы добавления Реализации

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
namespace SkladProg
{
    public partial class RzDobav : Form
    {
        OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\SkladProg\bin\Debug\Sklad.accdb");
        OleDbDataAdapter adapt;
        int ID = 0;
        OleDbCommand cmd = new OleDbCommand();
 
        public Realiz otherForm;
        public RzDobav(Realiz realiz)
        {
            InitializeComponent();
            otherForm = realiz;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            OleDbCommand command = new OleDbCommand();
            command.Connection = con;
            con.Open();
            command.CommandText = "INSERT INTO [Realiz] ([Client_Id], [Data], [Tovar_Id], [Count], [Price], [Summ]) Values (@Client_Id, @Data, @Tovar_Id, @Count, @Price, @Summ);";
            command.Parameters.AddWithValue("@Client_Id", comboBox1.Text);
            command.Parameters.AddWithValue("@Data", maskedTextBox1.Text);
            command.Parameters.AddWithValue("@Tovar_Id", comboBox2.Text);
            command.Parameters.AddWithValue("@Count", textBox1.Text);
            command.Parameters.AddWithValue("@Price", textBox2.Text);
            command.Parameters.AddWithValue("@Summ", textBox3.Text);
            int numberOfUpdatedItems = command.ExecuteNonQuery();
            MessageBox.Show("Реализация добавлен!");
            con.Close();
        }
 
        private void RzDobav_Load(object sender, EventArgs e)
        {
            {
                con.Open();
                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = con;
                string query = "select [Client_Id] from [Clients]";
                cmd.CommandText = query;
 
                OleDbDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    comboBox1.Items.Add(reader[0].ToString());
                }
                con.Close();
            }
 
            {
                con.Open();
                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = con;
                string query = "select [Tovar_Id] from [Tovars]";
                cmd.CommandText = query;
 
                OleDbDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    comboBox2.Items.Add(reader[0].ToString());
                }
                con.Close();
            }
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            con.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con;
            string query = "select * from [Clients] where [Client_Id]= " + comboBox1.Text;
            cmd.CommandText = query;
            con.Close();
        }
 
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            con.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con;
            string query = "select * from [Tovars] where [Tovar_Id]= " + comboBox2.Text;
            cmd.CommandText = query;
 
            OleDbDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                textBox2.Text = reader["Price"].ToString();
            }
            con.Close();
        }
    }
}
А это связь БД
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
13.02.2020, 19:28
Лучший ответ Сообщение было отмечено ElBarca как решение

Решение

ElBarca,
.. вам нужно списать количество товара из таблицы Tovars по факту реализации? (если я правильно понял) ...
тогда добавьте в код примерно так (детали могут быть всякие)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 OleDbCommand command = new OleDbCommand();
            command.Connection = con;
            con.Open();
            command.CommandText = "INSERT INTO [Realiz] ([Client_Id], [Data], [Tovar_Id], [Count], [Price], [Summ]) Values (@Client_Id, @Data, @Tovar_Id, @Count, @Price, @Summ);";
            command.Parameters.AddWithValue("@Client_Id", comboBox1.Text);
            command.Parameters.AddWithValue("@Data", maskedTextBox1.Text);
            command.Parameters.AddWithValue("@Tovar_Id", comboBox2.Text);
            command.Parameters.AddWithValue("@Count", textBox1.Text);
            command.Parameters.AddWithValue("@Price", textBox2.Text);
            command.Parameters.AddWithValue("@Summ", textBox3.Text);
            int numberOfUpdatedItems = command.ExecuteNonQuery();
            command.CommandText = "UPDATE Tovars SET Counts = Counts - @Count  WHERE Tovar_Id = @Tovar_Id";
            command.Parameters.AddWithValue("@Tovar_Id", comboBox2.Text);
            command.Parameters.AddWithValue("@Count", textBox1.Text);
            command.ExecuteNonQuery();
            MessageBox.Show("Реализация добавлена, со склада списано!");
            con.Close();
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 145
13.02.2020, 20:36  [ТС]
carrotik, Да вы правильно поняли!
Добавил код в программу, но не списывается. При нажатий на кнопку выдает Реализация добавлена, со склада списано, а в таблице Товары Количество без изменений.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
13.02.2020, 20:53
Цитата Сообщение от ElBarca Посмотреть сообщение
Товары Количество без изменений.
В Sql небольшая описка: SET Counts = Counts - @Count

Поправьте на:
C#
1
2
3
command.CommandText = "UPDATE Tovars SET Count = Count - @cnt WHERE Tovar_Id = @Tovar_Id";
            command.Parameters.AddWithValue("@Tovar_Id", comboBox2.Text);
            command.Parameters.AddWithValue("@cnt", textBox1.Text);
Добавлено через 52 секунды
А не, пардон.

Добавлено через 1 минуту
Ну а в таблице есть записи с Tovar_Id который вы передаете? Вообще, запрос корректный.
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 145
14.02.2020, 11:04  [ТС]
IamRain, Да записи есть.


0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
14.02.2020, 11:04
ElBarca, а у вас вообще поле Counts в таблице числовое? (на всякий случай) ...
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 145
14.02.2020, 11:16  [ТС]
carrotik, Да числовое
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
14.02.2020, 12:09
Лучший ответ Сообщение было отмечено ElBarca как решение

Решение

ElBarca,
... ну, попробуйте предварительно очистить параметры перед вторым запросом

C#
1
2
3
4
5
command.CommandText = "UPDATE Tovars SET Counts = Counts - @Count  WHERE Tovar_Id = @Tovar_Id";
            command.Parameters.Clear(); 
            command.Parameters.AddWithValue("@Tovar_Id", comboBox2.Text);
            command.Parameters.AddWithValue("@Count", textBox1.Text);
            command.ExecuteNonQuery();
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 145
14.02.2020, 18:10  [ТС]
carrotik, Списывается, Но только Товар Ид и Количество поменялись местами. Из Товар Ид выбираю количество для списания, а из Количество выбираю номер товара.

Добавлено через 4 часа 47 минут
carrotik, Можете подсказать как исправить?
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
14.02.2020, 18:27
ElBarca,

...да, по-моему, вам просто надо разобраться, откуда у вас берутся значения, которые вы передаете в параметры ... если UPDATE в принципе работает ...
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 145
14.02.2020, 19:07  [ТС]
Цитата Сообщение от carrotik Посмотреть сообщение
вам просто надо разобраться
Все разобрался, последним вариантом был просто поменять местами @Tovar_Id и @Count сработало! Спасибо вам!
C#
1
2
3
4
5
command.CommandText = "UPDATE Tovars SET Counts = Counts - @Count  WHERE Tovar_Id = @Tovar_Id";
            command.Parameters.Clear(); 
            command.Parameters.AddWithValue("@Count", textBox1.Text);
            command.Parameters.AddWithValue("@Tovar_Id", comboBox2.Text);
            command.ExecuteNonQuery();
И еще как сделать чтобы Количество в таблице Товары не уходил в минус?
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
14.02.2020, 19:17
Цитата Сообщение от ElBarca Посмотреть сообщение
И еще как сделать чтобы Количество в таблице Товары не уходил в минус?
.. так в форме реализации делайте SELECT [Counts] по данному товару, прежде чем списывать .. Если не хватает - сообщение менеджеру ... Хотя если менеджер не продавал с отрицательным остатком на складе - это плохой менеджер ..
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 145
14.02.2020, 19:56  [ТС]
Цитата Сообщение от carrotik Посмотреть сообщение
форме реализации делайте SELECT [Counts] по данному товару
В форме реализации? Не в БД же да? А как понять SELECT [Counts] по данному товару?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
15.02.2020, 18:40
ElBarca,
я очень надеюсь, что это не продуктивная разработка. В ином случае - это "какой-то позор" (с), а не схема данных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2020, 18:40
Помогаю со студенческими работами здесь

Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом из n магазинов,
Помогите пожалуйста! Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом из n магазинов,...

Реализация товаров
Привет , подскажите возможно ли реализовать и не будет ли нагружать БД. Есть БД "Реализация товаров". на данный момент , 1...

Реализация множественного выбора товаров
Добрый день уважаемые разработчики, не подскажете как реализовать множественный выбор товара, вот у нас есть товар жидкость для...

Реализация фильтров товаров на php
Как реализовать фильтрацию товаров по определенным параметрам и правильно это спроектировать в бд? Допустим есть товар А , у него могут...

Реализация продажи в базе данных товаров
Всем привет, подскажите как сделать так чтобы из таблицы Товары при нажатии клавиши покупка из 1 datagrid на форме заносились данные в...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru