Topic: Помогите с автоматическим подсчетом

Привет.
Как наипростейшим способом реализовать следующее:

Есть карточка клиента:

ID : 777
ФИО: Иванов...
ID пригласившего:
кол-во приглашенных клиентов: 0
таблица "список приглашенных клиентов"

Задача минимум:
Автоматический подсчет "кол-во приглашенных клиентов:" (т..е. в этой строке должно отображаться количество клиентов у которых в строке "ID пригласившего" 777 )

задача максимум:
к задаче минимум добавить таблицу "список приглашенных клиентов", в которой отображаются все клиенты приглашенные данным человеком .

PS: я чайник, но хочу разобраться

Re: Помогите с автоматическим подсчетом

Проект во вложении, кому не трудно посмотрите, проект супер простой(1 таблица + 2 формы), но нереализованными остались следующие моменты в порядке важности:

1. Так и не понял что прописать в вычисляемом поле таблицы, в строке  "Количество приведенных клиентов", чтобы автоматически подсчитывались все клиенты у который в строке "Кто пригласил" значение = вашему "Штрихкод"

2.  В форме "AddEdit"  есть таблица под ней кнопка "Button4" с SQL запросом, как сделать, чтобы таблица заполнялась не  по нажатию кнопки, а сразу после открытия формы?

3. Когда открыта форма "AddEdit", по нажатии клавиши "Enter", происходит сохранение и таблица закрывается, а если в настройках кнопри "сохранить " убрать галочку "закрывать форму", то дублируется значение в  таблице, как сделать чтобы этого не происходило, т..е. чтобы ничего не происходило по нажатию Enter.


PS: версия программы у меня 1.46, т.е. последняя из бесплатных как я понял.

Post's attachments

Attachment icon v3.rar 295.02 kb, 309 downloads since 2016-09-19 

Re: Помогите с автоматическим подсчетом

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


Исправленный проект

Post's attachments

Attachment icon v3_fixed.zip 6.85 kb, 329 downloads since 2016-09-20 

Dmitry.

Re: Помогите с автоматическим подсчетом

Если я правильно понял, то клиент приглашает друкого клиента.

Все верно, задумка такая :
Приходит новый клиент,(Петров) у него визитка с штрихкодом человека который его пригласил(например Иванов), оператор заводя нового клиента должна сканером считать штрихкод  в графу пригласил(форма AddEdit),  у Иванова в этот момент соответственно в графе кол-во приведенных клиентов добавляется  +1.
В связи с этим  поле пригласил должно быть TextBox, а у нас получилось, что каждый клиент добавляется в комбобокс, при базе в 400-500 клиентов это не допустимо.

можно реализовать простым скриптом

Так получается подсчет не работает,?
т..е. в графе количество приведенных клиентов отображается  idKlient., например кликаем на Петрова, мы видим что его пригласил Иванов, а в графе Кол-во привед-х клиентов у него 0.

Re: Помогите с автоматическим подсчетом

fenixbel wrote:

Все верно, задумка такая :
Приходит новый клиент,(Петров) у него визитка с штрихкодом человека который его пригласил(например Иванов), оператор заводя нового клиента должна сканером считать штрихкод  в графу пригласил(форма AddEdit),  у Иванова в этот момент соответственно в графе кол-во приведенных клиентов добавляется  +1.
В связи с этим  поле пригласил должно быть TextBox, а у нас получилось, что каждый клиент добавляется в комбобокс, при базе в 400-500 клиентов это не допустимо.

В штрихкоде необходимо сохранять идентификатор клиента, а не ФИО. Т.е. сканер штрихкода вставляет id клиента в компонент edIdKlient, после чего в ComboBox автоматически показывается ФИО данного клиента.


fenixbel wrote:

Так получается подсчет не работает,?
т..е. в графе количество приведенных клиентов отображается  idKlient., например кликаем на Петрова, мы видим что его пригласил Иванов, а в графе Кол-во привед-х клиентов у него 0.

Подсчет можно сделать так

procedure AddEdit_OnShow (Sender: string; Action: string);
begin
    if Action = 'ShowRecord' then
    begin
        AddEdit.Button4.Click;
        AddEdit.Edit6.Text := SQLExecute('SELECT COUNT(*) FROM Klient WHERE idKlient='+IntToStr(AddEdit.Button1.dbGeneralTableId));
    end;
end;
Dmitry.