Processos e Lançamentos.
Estas são sem dúvida duas das caracteristicas mais importantes do gas o conceito de processos e lançamentos vem sendo utilizado com sucesso desde as versões DOS do produto, e não poderiam faltar no GAS WEB.
A definição dos processos e lançamentos que será feita pelo programador/Projetista não terá muita diferença da forma como é feito hoje, você escolhe a tabela o campo que vai receber estes lançamentos ou processos e pronto.
Do ponto de vista técnico muda bastante coisa.
Os processos e lançamentos são agora uma classe chamada DATAPROCESSOS dentro do GAS esta classe é instanciada como um objeto e são passados valores pra que então o processamento seja executado.
abaixo um pedaço do código deta classe
static public void ExecutaProcesso(string vgTabelAlvo, string vgCampoAlvo, string vgValor, string vgCampoRelacao, DataAccessObject Dao)
{
ExecutaProcesso(new Processo[] { new Processo(vgTabelAlvo, vgCampoAlvo, vgValor, vgCampoRelacao) }, Dao);
}
/// <summary>
/// Executa varios processos ao mesmo tempo
/// </summary>
/// <param name="vgProcessos">Um array com varios processos</param>
/// <param name="Dao">Classe de dados usada para fazer o processo</param>
static public void ExecutaProcesso(Processo[] vgProcessos, DataAccessObject Dao)
{
string vgSql = "Update " + vgProcessos[0].TabelaAlvo + " set ";foreach (Processo vgProcesso in vgProcessos)
{
vgSql += vgProcesso.CampoAlvo + " = " + vgProcesso.Valor + ", ";
}
vgSql = vgSql.Trim(' ').Trim(',') + " where " + vgProcessos[0].CampoRelacao;
try
{
Dao.ExecuteNonQuery(vgSql);
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// Lançamento que faz insert em outra tabela
/// </summary>
/// <param name="vgLancamentos">Array de lancamentos a serem feitos</param>
/// <param name="Dao">Classe de dados usada para fazer o lançamento</param>
static public void ExecutaLancamentoInsert(Lancamento[] vgLancamentos, DataAccessObject Dao)
{
string vgSql = "Insert into " + Utility.PoeColAspas(vgLancamentos[0].TabelaAlvo) + " ";
string vgCampos = "(";
string vgValores = " VALUES (";foreach (Lancamento vgLancamento in vgLancamentos)
{
vgCampos += Utility.PoeColAspas(vgLancamento.CampoAlvo) + ", ";vgValores += vgLancamento.Valor +
", ";
}
vgCampos = vgCampos.TrimEnd(' ').TrimEnd(',') + ")";vgValores = vgValores.TrimEnd(' ').TrimEnd(',') + ")";
vgSql += vgCampos + vgValores;
try
{
Dao.ExecuteNonQuery(vgSql);
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// Lançamento que faz update em outra tabela que ja havia recebido um lançamento
/// </summary>
/// <param name="vgLancamentos">Array de lancamentos a serem feitos</param>
/// <param name="vgCodLan">Codigo do lançamento feito anteriormente</param>
/// <param name="Dao">Classe de dados usada para fazer o lançamento</param>
static public void ExecutaLancamentoUpdate(Lancamento[] vgLancamentos, string vgCodLan, DataAccessObject Dao)
{
string vgSql = "Update " + Utility.PoeColAspas(vgLancamentos[0].TabelaAlvo) + " set ";foreach (Lancamento vgLancamento in vgLancamentos)
{
vgSql += Utility.PoeColAspas(vgLancamento.CampoAlvo) + " = " + vgLancamento.Valor + ", ";
}
vgSql = vgSql.TrimEnd(' ').TrimEnd(',') + " where [cod~lan] = '" + vgCodLan + "'";
try
{
Dao.ExecuteNonQuery(vgSql);
}
catch (Exception e)
{
throw e;
}
}
Estes processamentos e lançamentos são realizados no sevidor , por serem ações que alteram dados no banco de dados.
No próximo post vamos falar um pouco sobre como funcionam as fórmulas no GAS WEB