Skip to main content

Bulk Update - Atualização de dados em Massa


Com o exemplo abaixo é possível atualizar varios dados de um ou mais forms com apenas 1 clique.

Criar um form com as informações que estarão no Where do Bulk Update e também os campos que deverão ser atualizados.

Exemplo:

 

Criar uma regra de negócio ao "Salvar" da seguinte forma:

 

Abaixo está o código C# para colocar no item de programação da Regra de Negócio(acima) responsável por executar o Bulk Update (Atualização em massa):

IMPORTANTÍSSIMO:  os scripts do SqlScript, atualizam o registro na RAIZ, isso é, direto no banco de dados, sendo assim, não executa nenhuma trigger, regra de negocio, controle de alteração, log de alteração etc.. que esteja vinculado(a) aos dados que estão sendo atualizados. TENHA TENHA CUIDADO.

ATENÇÃO:   as informações dos formulários são sempre gravados em 2 tabelas. (1) tbl_formulario e (2) a tabela "oficial" de cada estrutura de formulário, então é OBRIGATÓRIO, atualizar os dados nas 2 estruturas conforme exemplo abaixo. Na tbl_formulario é criado um JSON com todos os dados, então o que vc precisa atualizar é a propriedade dentro do json do formulario que fica na coluna tbl_formulario tbl_formulario frm_json (o exemplo abaixo mostra como fazer essa atualização)

             public async Task ExecuteAsync()
{                
    var where_status = FormContext.GetValue("where_status");
    var organization = FormContext.GetValue("organization");
    var update_to_status  = FormContext.GetValue("update_to_status");
    var update_to_substatus  = FormContext.GetValue("update_to_substatus");

    /*
     *  oO agilityflowAgilityFlow grava tdstodas as informações em JSON na tabela TBL_FORMULARIO
     *  e tbmtambém grava na tabela unicaúnica da entidadeentidade.
     *  praPara fazer o bulk update, é necessarionecessário atualizar as 2 tabelastabelas.
     *  importanteImportante também registrar que esse procedimento não exeutaráexecutará nenhuma regra de negócio da aplicação.
     */

    //sql SQL update script prapara atualizar o JSON na tbl_formulario
    var sql_tbl_form = @$"
        UPDATE tbl_formulario
        SET frm_json = jsonb_set(
                        jsonb_set(frm_json::jsonb, '{{status}}', '""{update_to_status}""'to_jsonb(@update_to_status)),
                        ,'{{sub_status}}', '""{update_to_substatus}""'to_jsonb(@update_to_substatus)
                     )
        WHERE frm_id inIN (select
            SELECT id fromFROM x_tbl_message_queue 
            whereWHERE organization = '{organization}'@organization 
            andAND status = '{where_status}'@where_status
        );";

    //sql SQL update script prapara atualizar na tabela unicaúnica da entidade 
    var sql_tbl_message = @$"update
        UPDATE x_tbl_message_queue 
        setSET status = '{update_to_status}',@update_to_status, sub_status = '{update_to_substatus}'@update_to_substatus  
        whereWHERE organization = '{organization}'@organization 
        andAND status = '{where_status}' @where_status;";

    var sql = $"{sql_tbl_form} {sql_tbl_message}";

    //FormContext.WarningMessage(sql)var parameters = new Dictionary<string, object>
    {
        { "@update_to_status", update_to_status },
        { "@update_to_substatus", update_to_substatus },
        { "@organization", organization },
        { "@where_status", where_status }
    };

    await FormContext.SqlScript.ExecuteAsync(sql)sql, parameters);
}