т.е. надо  "...у абонента может быть несколько номеров, так и у вас, сможете создавать для клиента множество заявок, ..." и у каждой заявки должно быть множество атрибутов.

    if frmAddNote.Action = 'NewRecord' then 
    begin
        frmAddNote.ComboBox1.sqlValue := frmNew.ComboBox1.sqlValue
    
    end;

ругается "incompatible types"

Наверно, надо из серии:

if Form2.dbAction = 'NewRecord' then // заполняем компонент только если форма была вызвана для создания новой записи
    begin
        if Form2.CheckBox1.Checked then Form2.Edit2.Text := 'ваше значение';
    end;

Спасибо, не понял зачем использовать вычисляемое поле, если в скрипте уже есть формат интерпретации... Поэтому использовал обычное текстовое для вывода:

var
    id : integer;
begin
    if Action='NewRecord' then
    begin
        frmEmployee.edYear.Text := FormatDateTime('yy', now);
        frmEmployee.edID.Text := SQLExecute ('SELECT IFNULL(MAX(ident), 0)+1 FROM person WHERE year='+FormatDateTime('yy', now) );
        id := StrToInt(frmEmployee.edID.Text);
        frmEmployee.edIdYear.Text:= frmEmployee.edYear.Text + '-' + Format('%.3d', [id]);
    end;
end;

Вдохновился примером из поста http://myvisualdatabase.com/forum/viewt … p?id=1088,
но не смог автоматизировать подстановку. Поэтому откопал на форуме другой пример и немного дополнил:

var
   s, s0, s1: string;
   i ,c: integer;
begin
    if Action='NewRecord' then
    begin
     s1 := FormatDateTime('yy', now) + '-';
     s0 := '';
     s := frmEmployee.EditCounter1.Text;
     c := Length(s);
     c := 3-c; // 3 - qty of zero
     for i := 1 to c do s0 := s0 + '0';
     frmEmployee.edCounter.Text := s1+s0+s;
    end;
end;

Сейчас выдает значение нынешнего года и число: 19-001
Подскажите, как сбросить счетчик в Grid при смене года.

Нашел, это, но не понял, как использовать:

Form1.GridEmployees.ClearRows;
Form1.GridEmployees.Columns[0].Footer.Caption := '0';

Побродил по форуму и понял, что счетчик не сбросить. Тогда может сделаете сброс по годам, т.е.. 19-0001,19-0002,.... следующем году 20-0001, 20-0002,...

Dmitry., а можете  прикрутить к этому примеру форму с настройкой счетчика, где можно выбрать формат и сброс. Спасибо.

Видать, большой объем текста плохо читается, тогда подскажите скрипт. "новой записи" с применением в нем данных из data и combobox, ,без вызова дополнительной формы. Спасибо.

Все же странно как-то...
Если в новой записи разместить кн. сохранить для другой таблицы, то сохраняются все значения для всех... А если в новой записи разместить еще и кн. новая запись для другой таблицы, то сохраняются значения для новой записи первой таблицы по id, т.е. как надо. НО при нажатие на сохранить в обеих формах с новой записью создается две записи в основной форме. А если сделать скрипт или нажать закрыть первой формы, но норм. У меня возник вопрос, а как оно сохраняет, и оказывается, что при пользование второй новой записи, как-то без моего нажатия на сохранить, а просто закрыть, все сохраняет, при условии настроенной кн. сохранить. Если кн. убрать, то и не сохранит ничего. Это прям как, я писал пост, о том, как таблица становится активной, при появление кн. просмотр....
Мне бы хотелось, чтоб работала кн. сохранить правильно , без дополнительных форм и выкрутасов, для второй таблицы.

Ну не все дублировать, а только одну первую. У меня и сделано, что в последствии, делаются дочерние записи, но как сделать первую, чтоб ее не делать снова. А так получается, что при создании нового клиента-заказа, мне придется принуждать программу выдавать форму для заполнения события (принято в работу - дата), а не автоматически просто вписать во вторую таблицу "без шуму и пыли". smile

Мне бы хотелось, чтоб записи второй таблицы соответствовали одному идентификатору первой таблицы. Если выбрать нужный id, то по кнопке создать новую запись, можно спокойно набросать записей и увидеть в желаемой таблице. Но меня интересует заполнение второй таблицы все одним, начальным значением первой таблицы. т.е.:
Поступает заявка и в первой таблице отмечается ее поступление и дата и эти же параметры должны автоматически перенестись во вторую и дальше, мы по заявке ведем журнал ее движения -

начальное значение: поступление - дата
последующие:            согласование - дата

и тогда получится красивая история от начала до конца.
Штатными средствами у меня получается, только вводить последующие значения.

311

(54 replies, posted in Russian)

Прикольный скрипт - забираем smile

Подскажите, как присвоить id для второй таблицы. Решил попробовать заново собрать базу, вдруг, где-то ошибка появилась.
Перепробовал разные подстановки в Grid при просмотре, но не желает выдавать зависимые записи от первой таблицы.
Хотелось бы, чтоб первая запись отображалась в Grid при просмотре, а обратной зависимости не было, т.к. будет в этот Grid и таблицу добавляться новые значения, по типу, Истории. Спасибо.

procedure frmNew_Button2_OnClick (Sender: TObject; var Cancel: boolean);
begin
    SQLExecute('SELECT data1 from request order by id desc limit 1')
    SQLExecute('INSERT INTO statistic (data) SELECT data1 FROM request WHERE request.id=');
end;

Вроде здесь идет выбор последней записи в таблице + перенос данных... Вот только как грамотно оформить.

314

(54 replies, posted in Russian)

По пробую еще раз, хоть писал в последнем посте "после обновления проги"

Все с дочерними записями верно сделано, брал из примера "Клиент-Мастер"

В Форме просмотра, все работает отлично.
А надо в форме новой записи, чтоб присвоенное значение "В работе" главного Grid появлялось в Grid с историей.

Есть предположение что при новой записи id не успевает присвоиться или не правильно выделяется при последовательном нажатие двух клавиш - Сохранить для главной записи и сохранение в другой таблице.

Есть мысль, попробовать соорудить скрипт по выбору последнего Id в таблице для переноса данных в другую таблицу.

316

(54 replies, posted in Russian)

после обновления проги ругается на

frmEmployee.cbGroup.HideTextIfNotExists := False;

точнее на HideTextIfNotExists

Увы сейчас, еще хуже... надо в две таблицы ввести одинаковое значения по id.

т.е. при приемке пишется в таблицу дата и значение из combobox и их же надо ввести в таблицу статистики.
таблица статистики (истории) просматривается при просмотре заказа.

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

все строки в статистической таблице, а последняя в главной...

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

Толи не успевает в базе создаться новый id, не понятно...
Если на кнопку 2 сделать функцию новая запись, вместо сохранить, то программа аварийно закрывается.

Подскажите как, скриптом под кнопкой нажать другую кнопку.
Мне это надо для добавления записи в две таблицы.

Спасибо.

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

Потому что на кнопку можно завязать условие, а тут с разу открывается и надо думать как запретить... smile

Вроде, разобрался. Получается в просматриваемой форме нельзя сделать на клавишу действие сохранить запись, а только через добавление новой записи.

Как, я понимаю это и есть двойная зависимость...
т.е. мне надо сделать или прикрутить таблицу, которая будет фиксировать действия при имеющимися таблице со связями.

В моем примере открываем запись с главной таблицы и в открывшейся форме надо добавить к имеющейся записей таблицу действий. Где можно добавить, что делалось, ComboBox6 в frmNote, и так к каждой, по отдельности, записи с датой.

У меня пока получилось, стихийное добавление...

И возможно, надо разделить звонки от готовности, чтоб в главной таблице показывало готовности, а в статистической все.. типа:
в работе - дата
выполнено - дата
звонок - дата
звонок - дата

Спасибо

Здравствуйте

Значится так... когда Grid пустой, то норм работает, и при наличии кнопки "показать"(редактировать).
А вот если появляется запись в нем и есть клавиша с действием "показать", то двойной щелчке по записи в Grid вызывает форму указанную в действии клавиши. Если ее удалить, клавишу, то становится запись невосприимчивой к двойному клику.

Я так понимаю, что параметры Grid можно регулировать через editable, где и можно это настраивать, но по всем функциям False.

Спасибо за пример.

Как только на форме появляется кнопка с функционалом показать др. форму, Grid автоматически ее вызывает при двойном щелчке на на запись в нем, хоть в настройках False.