1 (edited by Alfil 2022-03-24 04:24:58)

Topic: Сумма запись в таблицу(РЕШЕНО) Новый вопрос

Добрый день.
Имеются 2 связанные таблицы БД, например назовем их "TabA" и "TabB".
В TabA есть колонки: наименование ( например "naim"), начальное кол-во (nachkol) и наличие (nal)
В TabB есть колонки: связь с TabA (id_TabA), номер документа прихода (docs), и кол-во (Kol)

Пример таблицы с занесенными данными для лучшего понимания:

TabA                                TabB
| naim  | nachkol | nal |     | docs |  id_TabA  | kol |
------------------------------     ------------------------------
AA       |   0         |        |    | DA    | TabA.AA  |  3   |
BB       |   2         |        |    | DA    | TabA.BB  |  2   |
CC       |   1         |        |    | DB    | TabA.CC |  1   |
                                         | DC    | TabA.BB |  4   | 
                                         | DC    | TabA.CC |  1   |

Вопрос: Нужно подсчитать сумму по приходу соответствующего наименования в TabB, сложить с TabA.nachkol и записать в TabA.nal. Как это лучше сделать? Вычисляемое поле не лучший вариант, так как запись в TabA.nal нужна для последующих вычислений, а вычисляемое поле эту возможность, как я понял, не дает.
Пробовал собирать команду скрипта по кусочкам, основываясь на ответах в данном форуме, но я, видимо, или дурак или что-то совсем не так понимаю, так как результата за 2 дня ровно ноль (не считая кучу просмотренных сообщении о разных ошибках). Максимум чего добился, это получил в вычисляемом полу сумму командой SELECT TOTAL(Prih.KolPr) FROM Prih WHERE Prih.id_Book=Book.id
Помогите решить проблему, то уже в голове все перемешалось, сообразить не могу куда щемиться (

2 (edited by Alfil 2022-03-24 04:23:15)

Re: Сумма запись в таблицу(РЕШЕНО) Новый вопрос

В общем решил проблему избавившись от колонки "nachkol" (оформим как первый приход) и на клавишу закрытия формы добавления прихода навесив команду типа

SQLExecute('UPDATE TabA SET nal=(SELECT TOTAL(TabB.Kol) FROM TabB WHERE TabB.id_TabA=TabA.id)');

Новый вопрос: Как сделать что б в случае пустого combobox на нем всплывало сообщение о том что он обязателен для заполнение, такое же как всплывает над пустым TextBox, обязательным для заполнения. Сейчас при пустом просто вылетает ошибка

Post's attachments

Attachment icon Err.jpg 76.23 kb, 70 downloads since 2022-03-24 

Re: Сумма запись в таблицу(РЕШЕНО) Новый вопрос

Новый вопрос: Как сделать что б в случае пустого combobox на нем всплывало сообщение о том что он обязателен для заполнение, такое же как всплывает над пустым TextBox, обязательным для заполнения. Сейчас при пустом просто вылетает ошибка

Посмотрите

 begin
    if frm.ComboBox1.dbItemID = -1 then
    begin
        ShowMessage('Обязательное поле');
        frm.ComboBox1.SetFocus;
        frm.ComboBox1.DroppedDown := True;
        Cancel := True;
    end;

Re: Сумма запись в таблицу(РЕШЕНО) Новый вопрос

Alfil wrote:

Новый вопрос: Как сделать что б в случае пустого combobox на нем всплывало сообщение о том что он обязателен для заполнение, такое же как всплывает над пустым TextBox, обязательным для заполнения. Сейчас при пустом просто вылетает ошибка

ShowHint(component,'message');

Re: Сумма запись в таблицу(РЕШЕНО) Новый вопрос

sibprogsistem wrote:
Alfil wrote:

Новый вопрос: Как сделать что б в случае пустого combobox на нем всплывало сообщение о том что он обязателен для заполнение, такое же как всплывает над пустым TextBox, обязательным для заполнения. Сейчас при пустом просто вылетает ошибка

ShowHint(component,'message');

Спасибо огромное!