Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
 Аватар для br4o
1 / 1 / 0
Регистрация: 17.06.2010
Сообщений: 47

База данных ... вычитание из таблицы

11.02.2011, 15:02. Показов 2875. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все доброго времени суток

появилась такая вот проблема
есть таблица "каталог"
в ней хранятся количества товаров.

мне нужно в другой таблице заказать n количество товаров
и чтобы из таб "каталог" вычиталось это количество

не подскажите через какие запросы можно это сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2011, 15:02
Ответы с готовыми решениями:

Если база данных создана в системе разработки реляционных баз данных Аксесс, но состоит только из одной таблицы, то буде
Если база данных создана в системе разработки реляционных баз данных Аксесс, но состоит только из одной таблицы, то будет ли она считаться...

база данных из нерегулярной таблицы
Помогите спроектировать структуру базы данных на основе приведенной ниже таблицы (это пример). Я не могу сообразить как разбить ее на...

База данных (Выбор таблицы в ComboBox)
Добрый вечер.Есть одна БД внутри которой 13 таблиц и нужно чтобы можно было выбирать нужную таблицу из списка, подскажите как можно...

9
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
11.02.2011, 17:53
Цитата Сообщение от br4o Посмотреть сообщение
через какие запросы можно это сделать?
Это абсолютно стандартная задача и реализация в определенной степени зависит от СУБД, которую Вы пользуете. Можно на клиенте "ЗАКАЗАТЬ" товар, создавая соответствующую запись в таблице заказов и синхронно обновлять данные в каталоге, модифицируя необходимую запись. Можно, если СУБД поддерживает такие объекты, как триггеры, делать это (обновление каталога) в тригерре. Хорошо, если СУБД поддерживает механизм транзакций, а используемые средства доступа (компоненты) поддерживают механизм управления транзакциями. Тогда есть возможность выполнять эти операции в контексте одной транзакции, стартуя и завершая ее тогда, когда это необходимо.
1
 Аватар для br4o
1 / 1 / 0
Регистрация: 17.06.2010
Сообщений: 47
11.02.2011, 17:59  [ТС]
не могли бы привести пример
я не много не допонял, как это реализовать

Можно на клиенте "ЗАКАЗАТЬ" товар, создавая соответсивующую запись в тоблице заказов и синхронно обновлять данные в каталоге, модифицируя необходимую запись.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
11.02.2011, 18:13
Цитата Сообщение от br4o Посмотреть сообщение
не могли бы привести пример
Пример только абстрактный, т.к. информации о модель БД Вы не приводите. Пусть есть таблица
CATALOG с полями
ID - первичный ключ (код товара)
NAME - наименование товара
COLVO - количество товара

и таблица заказов
ZAKAZ с полями
ID - первичный ключ
IDCATALOG - код товара
COLVO - количество заказанного товара
IDZAKAZCHIK - код заказчика
ZAKAZDT - дата заказа

Тогда, новый заказ
SQL
1
2
INSERT INTO ZAKAZ (ID, IDCATALOG, COLVO, IDZAKAZCHIK, ZAKAZDT)
VALUES(:ID, :IDCATALOG, :COLVO, :IDZAKAZCHIK, :ZAKAZDT)
и корректировка каталога
SQL
1
2
3
UPDATE CATALOG C
SET C.COLVO = C.COLVO - :COLVO
WHERE C.ID = :IDCATALOG
0
0 / 0 / 3
Регистрация: 30.11.2010
Сообщений: 53
11.02.2011, 18:15
Тоже хотелось бы узнать об этом поподробней если можно пожалуйста и как нибудь по проще
p.s. В sql не шарю

 Комментарий модератора 
Бери литературу по SQL и читай до посинения.
0
 Аватар для br4o
1 / 1 / 0
Регистрация: 17.06.2010
Сообщений: 47
12.02.2011, 17:39  [ТС]
Добавление в заказе
Delphi
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
 procedure TForm1.btZakAddClick(Sender: TObject);
 var
    KOL: Integer;
 begin
  // Проверка полей ввода
  try
   KOL:=StrToInt(ZakKol.Text);
  except
   ZakKol.SelectAll;
   ZakKol.SetFocus;
   ShowMessage('Количество должно быть числом');
   exit;
  end;
  if Trim(ZakFIO.Text)='' then
   begin
    ZakFIO.SetFocus;
    ShowMessage('Выберите клиента');
    exit;
   end;
  if Trim(ZakAvto.Text)='' then
   begin
    ZakAvto.SetFocus;
    ShowMessage('Выберите клиента');
    exit;
   end;
  // Добавляем запись в базу
  tbZakaz.Insert;
  tbZakaz['ID_AUTO']:=ZakAvto.KeyValue;
  tbZakaz['ID_KlIENT']:=ZakFIO.KeyValue;
  tbZakaz['KOL']:=KOL;
  tbZakaz['DATE_PRODA']:=ZakDat.Date;
  tbZakaz['sum']:=Sum;
  tbZakaz.Post;
 end;
а это на всякий случай в каталоге
Delphi
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
procedure TForm1.btCatAddClick(Sender: TObject);
 var
    KOL,CENA,GOD,PROB: integer;
 begin
  try
   KOL:=StrToInt(CatNum.Text);
  except
   CatNum.SelectAll;
   CatNum.SetFocus;
   ShowMessage('Количество должно быть числом');
   exit;
  end;
  try
   CENA:=StrToInt(CatPrice.Text);
  except
   CatPrice.SelectAll;
   CatPrice.SetFocus;
   ShowMessage('Цена должна быть числом');
   exit;
  end;
  try
   GOD:=StrToInt(CatYear.Text);
  except
   CatYear.SelectAll;
   CatYear.SetFocus;
   ShowMessage('Год должен быть числом');
   exit;
  end;
  try
   PROB:=StrToInt(CatProbeg.Text);
  except
   CatProbeg.SelectAll;
   CatProbeg.SetFocus;
   ShowMessage('Пробег должен быть числом');
   exit;
  end;
  if Trim(CatKuzov.Text)='' then
   begin
    CatKuzov.SelectAll;
    CatKuzov.SetFocus;
    ShowMessage('Выберите кузов');
    exit;
   end;
  if Trim(CatColor.Text)='' then
   begin
    CatColor.SelectAll;
    CatColor.SetFocus;
    ShowMessage('Выберите цвет');
    exit;
   end;
  if Trim(CatGear.Text)='' then
   begin
    CatGear.SelectAll;
    CatGear.SetFocus;
    ShowMessage('Выберите КПП');
    exit;
   end;
  if Trim(CatReg.Text)='' then
   begin
    CatReg.SelectAll;
    CatReg.SetFocus;
    ShowMessage('Выберите регион');
    exit;
   end;
  if (KOL<0) or (CENA<0) or (GOD<0) or (PROB<0) then
   begin
    ShowMessage('Неверный формат чисел, все числа должны быть положительны');
    exit;
   end;
  // Добавляем запись в базу
  tbCatalog.Insert;
  tbCatalog['ID_AUTO']:=CatName.KeyValue;
  tbCatalog['KOL_Auto']:=KOL;
  tbCatalog['Cena']:=CENA;
  tbCatalog['God_vipusk']:=GOD;
  tbCatalog['Probeg']:=PROB;
  tbCatalog['Kuzov']:=CatKuzov.Text;
  tbCatalog['COLOR']:=CatColor.Text;
  tbCatalog['KPP']:=CatGear.Text;
  tbCatalog['REGION']:=CatReg.text;
  tbCatalog.Post;
 end;
можешь подредактировать?
в скле плохо понимаю

Добавлено через 23 часа 7 минут
Спасибо уже все сделал
0
0 / 0 / 3
Регистрация: 30.11.2010
Сообщений: 53
12.02.2011, 17:55
как сделал?
0
 Аватар для br4o
1 / 1 / 0
Регистрация: 17.06.2010
Сообщений: 47
12.02.2011, 18:53  [ТС]
Delphi
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
  tbCatalog.Filter:='ID_AUTO ='+IntToStr(ZakAvto.KeyValue);
 
  tbCatalog.Filtered:=True;
 
  tbCatalog.First;
 
  if not tbCatalog.Eof then
 
   begin
 
    // Добавляем запись в базу
 
    if tbCatalog['KOL_AUTO']<KOL then
 
    ShowMessage('Недостаточно авто для заказа')
 
    else
 
    begin
 
  tbZakaz.Insert;
 
  tbZakaz['ID_AUTO']:=ZakAvto.KeyValue;
 
  tbZakaz['ID_KlIENT']:=ZakFIO.KeyValue;
 
  tbZakaz['KOL']:=KOL;
 
  tbZakaz['DATE_PRODA']:=ZakDat.Date;
 
  tbZakaz.Post;
 
    //Удаляем из каталога
 
          tbCatalog.Edit;
 
          tbCatalog['KOL_AUTO']:=tbCatalog['KOL_AUTO']-StrToInt(ZakKol.Text);
 
          tbCatalog.Post;
 
          ShowMessage('Заказ успешно добавлен');
 
    end
 
  end
 
  else ShowMessage('Авто не найден!!!');
 
  tbCatalog.Filtered:=False;
вот тот кусочек, сделано через фильтр
пробовал через Локейт...косячно получалось
0
0 / 0 / 3
Регистрация: 30.11.2010
Сообщений: 53
12.02.2011, 21:55
я все равно плаваю... как вычесть ,на форме 2 дб грида, нужно что бы при вводе в первый дб грид например в поле "количество " вычиталось из второго дбгрида например из поля "в наличии"
Миниатюры
База данных ... вычитание из таблицы  
0
 Аватар для br4o
1 / 1 / 0
Регистрация: 17.06.2010
Сообщений: 47
12.02.2011, 22:22  [ТС]
ну вот вычитание
tbCatalog['KOL_AUTO']:=tbCatalog['KOL_AUTO']-StrToInt(ZakKol.Text);
это tbCatalog['KOL_AUTO'] где должно вычитаться (результат)
StrToInt(ZakKol.Text) где ты вычитаешь (ну когда вводишь)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2011, 22:22
Помогаю со студенческими работами здесь

Графическое поле таблицы база данных
Здравствуйте. В таблице(Database Desktop) имеется поле типа Graphic. Каким образом загрузить в него изображение? На форме таблица...

Как правильно создавать таблицы SQL База Данных
Приветствую. Вот какая у меня проблема необходимо программно создавать таблицу, имя таблицы генерировать будет тоже программа. Вся...

База данных с нуля! Как подцепить Таблицы из ацесса к дельфи!?
Есть Таблицы в ацессе и запросы и выборки. Как прицепить все это к дельфи. Форма простая .заказчик. Вводим имя. .адрес. Вводим...

База данных музея. Ориентировочные таблицы: «Экспонаты», «Авторы», «Экспозиции»
1. Разработать модель «Сущность-связь» по индивидуальному заданию и предварительно определить структуру таблиц базы данных. Согласовать с...

База данных журнальных публикаций. Связать таблицы MS Access 2007
Помогите создать базу данных, правильно связав таблицы: 1) Статьи Название журнала Номер журнала Страницы статьи Название статьи ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru