Показать сообщение отдельно
Старый 17.05.2007, 12:08   #8  
Akinak is offline
Akinak
Участник
 
17 / 11 (1) +
Регистрация: 22.02.2007
Буквально вчера делал нечто подобное...
Предположим что необходимо создавать рекорд в таблице логов на каждый метод какого-либо класса... запускать метод, а потом апдейтить данную запись количеством успехов/ошибок и временем потраченным на работу вызывающих методов.

X++:
/*******************************************************************************
PARAMETERS: Name - descr of method, Upd - number of successes, Err - number of errors,
//---Insert - flag to create new record or update existing one.
RETURN VALUE: None
DESCRIPTION:
//---05/16/2007-10:52:18--- This method writes complete log of XXX class,
//---including all its methods. To create a record method should be called 2 times from any method within class:
//---at start->to create a record, at finish->to update record with number of errors/sucesses and time consumped.
*******************************************************************************/
void XXXClassLog(str         Name,
                int         Upd=0,
                int         Err=0,
                boolean     Insert=true
                )
{   XXX_Log       XXX_Log;
    if (Insert)
    {
        XXX_Log.Job            = Name;
        XXX_Log.Updated     = 0;
        XXX_Log.Errors        = 0;
        XXX_Log.Path          = strfmt("%3%1_error.%2","XXX_Log","csv",WinAPI::getTempPath());
        XXX_Log.insert();
        RecId                      = XXX_Log.RecId;
    }
    if (!Insert)
    {
        XXX_Log.selectForUpdate(true);
        ttsbegin;
        select firstonly XXX_Log
            where XXX_Log.RecId == RecId;
            {
                XXX_Log.Updated     = Upd;
                XXX_Log.Errors        = Err;
                XXX_Log.update();
            }
        ttscommit;
    }
}
З.Ы.
Да, RecID - это глобальная переменная для поиска по ней... можно конечно хранить и весь рекорд... но я решил сделать так).
З.Ы.Ы.
По самому вопросу - да, сделать так конечно можно, вот только логики в примере не видно... не совсем ясно ЗАЧЕМ так делать.
Приведено в качестве примера для Максима Горбунова.

пасибо, исправил))))

Последний раз редактировалось Akinak; 17.05.2007 в 13:46.