Alterar via C# o valor de um campo ao salvar um formulário
Caso vc precise aplicar algumas regras como mudar o valor de um campo via C# ao salvar um formulário, você pode aplicar as seguintes regras:
Crie uma regra como na imagem abaixo
Dentro da regra, adicione uma opção de Programação via C# como na imagem abaixo
Esse é um código de exemplo:
// Declaração padrão do método assíncrono chamado ExecuteAsync
public async Task ExecuteAsync(){
// Verifica se NAO é um formulario novo
if(!IsNovoFormulario){
// Declaração de uma variável chamada new_sub_status e atribui a ela o valor enviado pelo usuario naquele momento
var new_sub_status = FormContext.GetValue("sub_status");
// Declaração de uma variável chamada old_sub_status e inicializa com uma string vazia que colocaremos a informação antiga que ja constava do banco de dados
var old_sub_status = "";
// Cria uma lista de parâmetros para a consulta SQL (Postgresql)
var paramsQuery = new List<NpgsqlParameter>();
// Adiciona um novo parâmetro NpgsqlParameter à lista com o nome "@frm_id" e o valor IdFormulario
paramsQuery.Add(new NpgsqlParameter("@frm_id", IdFormulario));
// Declaração de uma string contendo a consulta SQL
var sql = "select sub_status from x_tbl_message_queue_sub_status where id = @frm_id limit 1 ";
// Executa a consulta SQL de forma assíncrona e armazena o resultado em um DataTable
var dt = await FormContext.GetDataTableAsync(sql, paramsQuery.ToArray());
// Itera sobre as linhas do DataTable encontrada (sempre será 1, limit 1
foreach (DataRow dr in dt.Rows)
{
// Verifica se o valor da coluna "sub_status" não é DBNull
if (dr["sub_status"] != DBNull.Value)
// Atribui o valor da coluna "sub_status" à variável old_sub_status
old_sub_status = dr["sub_status"].ToString();
}
//criei aqui uma regrinha simples só pra demonstração:
// Verifica se old_sub_status termina com "1"
if(old_sub_status.EndsWith("1")){
// Define o valor de "sub_status" no FormContext com new_sub_status concatenado com " 2"
FormContext.SetValue("sub_status", new_sub_status + " 2");
}else{
// Define o valor de "sub_status" no FormContext com new_sub_status concatenado com " 1"
FormContext.SetValue("sub_status", new_sub_status + " 1");
}
} // Fim do bloco if
} // Fim do método ExecuteAsync