Ir para conteúdo
Fórum Script Brasil

Helio Cássio

Membros
  • Total de itens

    20
  • Registro em

  • Última visita

Posts postados por Helio Cássio

  1. Bom dia

    tem como no scrip abaixo de backup ele envia um e-mail informando quando o backup apresentar algum erro ou não fizer completo?

    arquivo.bat

    REM Necessario programa forfiles.exe para apagar backups antigos
    REM -------------------------------------
    REM *** MODIFICAR OS VALORES A SEGUIR ***
    REM -------------------------------------
    set PGDUMP="C:\Program Files (x86)\PostgreSQL\9.0\bin\pg_dump.exe"
    set BACKDIR=c:\bkp
    set BACKDAYS=7
    set PGUSER=postgres
    set PGPASSWORD=
    set PGHOST=localhost
    set PGDATABASE=autosystem
    REM -------------------------------------
    REM *** não MODIFICAR DAQUI EM DIANTE ***
    REM -------------------------------------
    set BACKFILE=dump_autosystem_%date:~-4%%date:~3,2%%date:~0,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.sql.gz
    REM Apaga os arquivos mais antigos
    forfiles /p %BACKDIR%\ /m *.* /d -%BACKDAYS% /c "cmd /c del @FILE"
    REM Executa o backup
    echo Backup iniciado em %DATE% %TIME% >>c:\autosystem\log\backup.log
    echo Gerando arquivo %BACKDIR%\%BACKFILE% >>c:\autosystem\log\backup.log
    %PGDUMP% --compress=9 --file="%BACKDIR%\%BACKFILE%"
    echo Backup concluido em %DATE% %TIME% >>c:\autosystem\log\backup.log
  2. Bom Dia

    Gostaria de saber se tem como na função baixar converter o valor ate 999 bilhões, pois atualmente ele so converte ate 999 milhões

    CREATE OR REPLACE FUNCTION valor_extenso_f_teste(numeric)
    RETURNS text AS
    $BODY$
    DECLARE
    moeda_sing text;
    moeda_plu text;
    milhao text;
    milhar text;
    unidade text;
    centavo text;
    compl_milhao text;
    compl_milhar text;
    compl_unidade text;
    resultado text;
    valor text;
    BEGIN
    IF $1 = 0 THEN
    return '';
    END IF;
    --moeda corrente no singular e plural.
    moeda_sing := ' REAL';
    moeda_plu := ' REAIS';
    --formata o valor de acordo com a máscara 999999999.99
    valor := replace(substr(to_char($1, '999999999D00'), 2), ' ', '0');
    --usa a função valor_extenso_aux_f para obter quantos milhões.
    milhao := valor_extenso_aux_f(substr(valor,1,3));
    IF (substr(valor,1,3)::integer > 1) THEN
    milhao := milhao || ' MILHOES';
    ELSE
    IF (substr(valor,1,3)::integer = 1) THEN
    milhao := milhao || ' MILHAO';
    END IF;
    END IF;
    --usa a função valor_extenso_aux_f para obter quantos mil.
    milhar := valor_extenso_aux_f(substr(valor,4,3));
    IF (substr(valor,4,3)::int > 0) THEN
    IF substr(valor,4,3)::int = 1 THEN
    milhar := ' MIL';
    ELSE
    milhar := milhar || ' MIL';
    END IF;
    END IF;
    --usa a função valor_extenso_aux_f para obter quantas unidades.
    unidade := valor_extenso_aux_f(substr(valor,7,3));
    IF (substr(valor,1,9)::integer = 1) THEN
    unidade := unidade || moeda_sing;
    ELSE
    unidade := unidade || moeda_plu;
    END IF;
    --usa a função valor_extenso_aux_f para obter quantos centavos
    centavo := valor_extenso_aux_f('0' || substr(valor,11,2));
    IF (substr(valor,11,2)::integer > 1) THEN
    centavo := centavo || ' CENTAVOS';
    ELSE
    IF (substr(valor,11,2)::integer = 1) THEN
    centavo := centavo || ' CENTAVO';
    END IF;
    END IF;
    --verifica a necessidade de ',' após o milhão.
    IF length(trim(milhao))::integer <> 0 THEN
    compl_milhao := ' E ';
    ELSE
    compl_milhao := '';
    END IF;
    --verifica a necessidade de , após o mil.
    IF length(ltrim(substr(valor,6,4),'0'))::int < 4 or length(trim(substr(valor,6,4),'0'))::int = 1 THEN
    compl_milhar := ' ';
    ELSE
    compl_milhar := ' E ';
    END IF;
    --verifica a necessidade de , após as unidades.
    IF length(trim(unidade))::integer <> 0 and length(trim(centavo))::integer <> 0 THEN
    compl_unidade := ' E ';
    ELSE
    compl_unidade := '';
    END IF;
    resultado:= milhao || compl_milhao || milhar || compl_milhar ||
    unidade || compl_unidade || centavo;
    return replace(resultado,' ',' ');
    END;
    $BODY$
  3. quero o seguinte

    exe:

    data 1 tem informação então o select so pega a informação da data 1 e deconsidera a data 2 e 3

    data 1 não tem informação mais a data 2 e 3 tem ele so considere a data 2 e não soma a data 3

    entendeu?

  4. Bom Dia

    exe:

    Select

    sum(valor)

    from

    venda

    where

    (data=$data:date+1 or data=$data::date+2 or data=data$::date+3);

    Estou criando um relatorio e são varias empresa, se eu coloca isso na empresa que tem na data 1 , data 2 e data 3 ele vai soma as 3 data mais na empresa que so consta uma das datas ele so puxa uma, queria que quando ele encontra informação na primeira data ele não busque a segunda e assim por diante

    Tem como?

  5. Conseguir resolver obrigado

    select

    (case when nf.obs like '%Y%' then 'CAMINHAO VOLKS Y 16.000 LTS' when nf.obs like '%X%' then 'CAMINHAO VOLSK X 17 LTS else p.nome end),

    pr.nome as produto
    from
    estoque e join produto pr on (pr.grid=e.produto)
    join
    pessoa p on (e.pessoa=p.grid);
    situação resolvida
  6. Bom Dia

    Estou com a seguinte situação, preciso de um comando que tenha o seguinte:

    tentei esse mais não deu certo

    select

    (case when nf.obs like '%Y%' then 'CAMINHAO VOLKS Y 16.000 LTS' else p.nome end),

    (case when nf.obs like '%X%' then 'CAMINHAO VOLSK X 17 LTS' else p.nome end),
    pr.nome as produto
    from
    estoque e join produto pr on (pr.grid=e.produto)
    join
    pessoa p on (e.pessoa=p.grid);
    ele so esta considerando o segundo case.
    preciso que quando a obs conta Y ele traga CAMINHAO VOLKS Y 16.000 LTS e quando conter X ele traga CAMINHAO VOLSK X 17 LTS'
    Helio Cássio
  7. senhores gostaria de saber como da o update abaixo:

    valor |
    --------+
    50.99999 |
    autosystem=# update venda set valor=(trunc((valor)),2) where documento=9634;
    ERRO: coluna "valor" é do tipo double precision mas expressão é do tipo record
    LINHA 1: update venda set valor=(trunc((valor)),2) where documento=9634;
    gostaria do valor assim 50.99
    att
    Helio Cássio

  8. boa tarde

    senhores, estou com a seguinte situação preciso calcular media do preço unitario mais o valor so sai correto se eu colocar o group by mais preciso dos 2 valores em um comando so atualmente so consigo separado

    select (avg(case when operacao='V' then l.preco_unit else NULL end) - avg(case when operacao='E'then l.preco_unit else NULL end) ) as lucro_preco,((avg(case when operacao='V' then l.preco_unit else NULL end) - avg(custo_medio_empresa_f(l.empresa,l.produto,($data_ini::date -1))))*sum(case when operacao='V' then l.quantidade else null end) ) from lancto l join produto p on (p.grid=l.produto) join pessoa e on (e.grid=l.empresa) where tipo='='C" group p.nome;

    select (avg(case when operacao='V' then l.preco_unit else NULL end) - avg(case when operacao='E'then l.preco_unit else NULL end) ) as lucro_preco,((avg(case when operacao='V' then l.preco_unit else NULL end) - avg(custo_medio_empresa_f(l.empresa,l.produto,($data_ini::date -1))))*sum(case when operacao='V' then l.quantidade else null end) ) from lancto l join produto p on (p.grid=l.produto) join pessoa e on (e.grid=l.empresa) where tipo='='C" group by p.grupo;

    se eu não colocar o group by o valor sair incorreto pois ele pega de todos produtos e preciso desse 2 resultado em um comando so não sei se criando uma tabela temp poderia ajuda nesse sentindo pois nunca utilizei esse ferramenta.

    Não sei se expliquei bem.

×
×
  • Criar Novo...