Topic: добавить к записи.. 1.46

Здравствуйте, возможно ли в версии 1.46 сделать следующее...
по записям отображаемых в гриде, внести к каждой записи, последовательно, нумерацию.
т.е. в гриде отображено 100 записей, нажимаем на кнопку и ко всем этим записям присваиваются номера от 1-100, завтра другие 100 записей и им присваиваются уже номера 101-200 и т.д.
в данный момент сделано всё выбирая каждую запись и нажимая кнопку и присваивается следующий номер, но автоматизация должна быть автоматизированной))))

Re: добавить к записи.. 1.46

Приветствую,


Это возможно реализовать скриптом, но почему нельзя просто завести поле "СЧЕТЧИК", который будет сам присваивать следующий номер при создании записи?

Dmitry.

3 (edited by yevgeny2003 2016-04-26 11:11:14)

Re: добавить к записи.. 1.46

все записи импортируются. а потом уже только к ним надо присваивать номера.

Re: добавить к записи.. 1.46

Можете набросать пример скрипта?

Re: добавить к записи.. 1.46

yevgeny2003 wrote:

Можете набросать пример скрипта?

Могу, только опишите точней процесс.


Номера присваивать необходимо только для тех записей, которые будут отобраны при поиске в гриде? или всем которые в базе? у которых еще нет своего номера?

Dmitry.

Re: добавить к записи.. 1.46

DriveSoft wrote:
yevgeny2003 wrote:

Можете набросать пример скрипта?

Могу, только опишите точней процесс.


Номера присваивать необходимо только для тех записей, которые будут отобраны при поиске в гриде? или всем которые в базе? у которых еще нет своего номера?

Только те которые отобранны в гриде.
В целом должно выглядеть так. В таблице есть ФИО, дата заполнения. Счетчик, дата готовности. 
Фио и дата заполнения импортируются из экселя с пустыми графами счетчика и датой готовности.
В гриде ищем всех по дате заполненияи всему этому списку проставляем автоматически номера счетчика вместе с текущей датой готовности.

Re: добавить к записи.. 1.46

yevgeny2003
Сделал для вас проект с примером, для запуска скрипта используйте кнопку "Assign #"

Post's attachments

Attachment icon assign incremental value.zip 7.63 kb, 396 downloads since 2016-04-27 

Dmitry.

8 (edited by yevgeny2003 2016-04-28 05:25:31)

Re: добавить к записи.. 1.46

DriveSoft wrote:

yevgeny2003
Сделал для вас проект с примером, для запуска скрипта используйте кнопку "Assign #"

в 1.46 не открывается
скопировал скрипт из свежей версии в 1.46, ругается при запуске на id := Form1.tablegrid3.dbIndexToID(i)
заменил на
Form1.tablegrid3.SelectedRow:=i;
        id := Form1.tablegrid3.dbItemID;
все заработало ))
остались нюансы))

как в этом списке пропустить или запретить проставить номера с датами, если они там уже стоят...?

...еще странно что в гриде по поиску даты проставления он ничего не ищет, хотя если полный список базы отобразить то видно что дата стоит. а в новой версии работает и ищется всё нормально ...может несовместимость в этом "dateready=date(''now'') "?

Re: добавить к записи.. 1.46

yevgeny2003
Доработал скрипт

procedure Form1_Button5_OnClick (Sender: string; var Cancel: boolean);
var
    i,c: integer;
    iMax: integer;
    id: integer;
begin
    iMax := SQLExecute('SELECT IFNULL(MAX(record_count), 0) FROM employees');

    c := Form1.GridEmployees.RowCount-1;
    for i := 0 to c do
    begin
        id := Form1.GridEmployees.dbIndexToID(i);

        if (SQLExecute('SELECT IFNULL(record_count, -1) FROM employees WHERE id='+IntToStr(id)) = -1) and
           (SQLExecute('SELECT dateready FROM employees WHERE id='+IntToStr(id))='') then
        begin
            Inc(iMax);
            SQLExecute('UPDATE employees SET record_count = '+ IntToStr(iMax) + ', dateready=date(''now'') WHERE id='+IntToStr(id));
        end;
    end;

    Form1.GridEmployees.dbUpdate;
end;

.еще странно что в гриде по поиску даты проставления он ничего не ищет, хотя если полный список базы отобразить то видно что дата стоит. а в новой версии работает и ищется всё нормально ...может несовместимость в этом "dateready=date(''now'') "?

В последней версии программы данная ошибка была исправлена.

Dmitry.

Re: добавить к записи.. 1.46

И прям никак ничего не поделать?)) а то теряется весь смысл)) по датам готовности выбираются отчеты и тд. Может есть какие нибудь варианты?)

Re: добавить к записи.. 1.46

yevgeny2003 wrote:

И прям никак ничего не поделать?)) а то теряется весь смысл)) по датам готовности выбираются отчеты и тд. Может есть какие нибудь варианты?)

Измените данную строку

SQLExecute('UPDATE employees SET record_count = '+ IntToStr(iMax) + ', dateready=date(''now'') WHERE id='+IntToStr(id));

на

SQLExecute('UPDATE employees SET record_count = '+ IntToStr(iMax) + ', dateready='+ '"' + FormatDateTime('yyyy-MM-DD 00:00:00.000', Now) + '"' +' WHERE id='+IntToStr(id));
Dmitry.

Re: добавить к записи.. 1.46

DriveSoft wrote:
yevgeny2003 wrote:

И прям никак ничего не поделать?)) а то теряется весь смысл)) по датам готовности выбираются отчеты и тд. Может есть какие нибудь варианты?)

Измените данную строку

SQLExecute('UPDATE employees SET record_count = '+ IntToStr(iMax) + ', dateready=date(''now'') WHERE id='+IntToStr(id));

на

SQLExecute('UPDATE employees SET record_count = '+ IntToStr(iMax) + ', dateready='+ '"' + FormatDateTime('yyyy-MM-DD 00:00:00.000', Now) + '"' +' WHERE id='+IntToStr(id));

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