douglascso

Membros
  • Content Count

    30
  • Joined

  • Last visited

Community Reputation

0 Neutro

1 Follower

About douglascso

  • Birthday 12/29/1989

Perfil

  • Gender
    Male
  • Location
    Pirapora - Minas Gerais

Contatos

Recent Profile Visitors

376 profile views
  1. Boa noite. Olhe o log na pasta pg_log. Douglas Carlos
  2. O instalador deve estar tentando instalar uma versão do vc++, e gera esse erro, a instalação atual do vc++ pode estar ruim, tenta instalar a versão do vc++ por linha de comando ou manual antes da instalação do postgres. Verifica o log do usuário também.
  3. Boa noite, a distribuição deve ter algum requisito, e esse deve estar satisfeito antes da instalação. Tente também outra distribuição dos Postgres para Windows.
  4. douglascso

    Postgre

    Bom dia, poderia mandar um resultado do select? Eu trato as datas dessa forma: SELECT extract(day from data) || '/' || extract(month from data) || '/' || extract(year from data) AS data from tabela; Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  5. Bom dia, use esses dois comandos SELECT dtin, 'OK' AS status FROM tab_base INNER JOIN tab_consulta ON tab_base.gtin = tab_consulta.cod_barra WHERE tab_base.cod_entr = tab_consulta.cod_entr and tab_base.aliq_entr = tab_consulta.aliq_entr and tab_base.cod_saida = tab_consulta.cod_saida; SELECT dtin, 'INVALIDO' AS status FROM tab_base INNER JOIN tab_consulta ON tab_base.gtin = tab_consulta.cod_barra WHERE tab_base.cod_entr != tab_consulta.cod_entr OR tab_base.aliq_entr != tab_consulta.aliq_entr OR tab_base.cod_saida != tab_consulta.cod_saida; Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  6. Boa tarde, muito interessante a sua pergunta, o horário que a pessoa bateu as marcações de ponto chama-se folha de ponto e nela não se calcula a soma dos horários trabalhados, apenas exibi os ponto batidos, e essa marcação não poderia ser alterada. Um relatório de conferencia de horas trabalhadas pode-se adicionar, remover ou alterar as marcações para refletir o tempo trabalhado. No caso 1 eu iria lançar o horário que a pessoa esqueceu de bater o ponto para poder fazer a conta corretamente, pois não é possível o sistema calcular a segunda jornada de trabalho. Mas para isso o funcionário teria que comunicar o fato para que as providencias fossem tomadas. Segue um exemplo de consulta: SELECT (coalesce(b.hora, '00:00:00')::INTERVAL - coalesce(a.hora, '00:00:00')::INTERVAL) + ((coalesce(d.hora, '00:00:00')::INTERVAL - coalesce(c.hora, '00:00:00')::INTERVAL) * 1) AS horas_trabalhadas FROM (select row_number() OVER () as id, matricula, extract(hour from datadia) || ':' || extract(minutes from datadia) || ':' || extract(seconds from datadia) AS hora from pontos where matricula = 1313 and datadia between '2019-03-08 00:00:01' and '2019-03-08 23:59:59' order by datadia) a full outer join (select row_number() OVER () as id, matricula, extract(hour from datadia) || ':' || extract(minutes from datadia) || ':' || extract(seconds from datadia) AS hora from pontos where matricula = 1313 and datadia between '2019-03-08 00:00:01' and '2019-03-08 23:59:59' order by datadia) b ON b.matricula = a.matricula and b.id = 2 full outer join (select row_number() OVER () as id, matricula, extract(hour from datadia) || ':' || extract(minutes from datadia) || ':' || extract(seconds from datadia) AS hora from pontos where matricula = 1313 and datadia between '2019-03-08 00:00:01' and '2019-03-08 23:59:59' order by datadia) c ON c.matricula = a.matricula and c.id = 3 full outer join (select row_number() OVER () as id, matricula, extract(hour from datadia) || ':' || extract(minutes from datadia) || ':' || extract(seconds from datadia) AS hora from pontos where matricula = 1313 and datadia between '2019-03-08 00:00:01' and '2019-03-08 23:59:59' order by datadia) d ON d.matricula = a.matricula and d.id = 4 limit 1; Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  7. Bom dia, acredito que sim, o que você quer se chama Foreign data wrappers. Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  8. Bom dia, Essa coluna já existe? Talvez a ordem de criação está incorreta. Se existe, ela está com letras minúsculas? O usuário tem permissão para acessar?
  9. Boa tarde, isso acontece com um banco recém criado? ou com um que já tem algum tempo de uso? de qualquer forma você pode fazer uma manutenção no banco. Execute o VACUUM com todas as opções. Reindex com o banco. Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  10. Boa noite, use o pgAgent, não conheço uma forma nativa de fazer. https://www.pgadmin.org/docs/pgadmin4/dev/pgagent.html Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  11. Boa noite, você também pode usar o pgAgent, não conheço uma forma nativa de fazer. https://www.pgadmin.org/docs/pgadmin4/dev/pgagent.html Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  12. Bom dia, pelo que conheço, uma transação deve ser iniciada por alguém. Crie um programa que faça esse job ou um script e agende um horário para ele executar. No Windows eu uso o gerenciador de tarefas para executar um script em CMD de backup diariamente. Qual o sistema operacional e versão e qual a versão do seu banco de dados para criar um script para você? Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  13. Pode tentar o seguinte comando. -- Function: public.fn_get_codbarras_ean13(character varying) -- DROP FUNCTION public.fn_get_codbarras_ean13(character varying); CREATE OR REPLACE FUNCTION public.fn_get_codbarras_ean13(p_codbarras character varying) RETURNS character varying AS $BODY$ declare v_soma integer; v_digitos smallint[12]; v_DV smallint; begin --Verifica a quantidade de dígitos informados no parâmetro da função if length(p_codbarras) > 12 then raise exception 'O valor informado no parâmetro possui mais do que 12 dígitos'; end if; --Formata o valor do parâmetro com zeros à esquerda e o converte em um array v_digitos := string_to_array(lpad(p_codbarras,12,'0'), null); --É somado cada elemento do array, caso ele esteja num índice par o valor será --multiplicado por 3 antes de ser somado. for i in 1..12 loop if mod(i,2) = 0 then v_soma := coalesce(v_soma, 0) + (v_digitos[i] * 3); else v_soma := coalesce(v_soma, 0) + v_digitos[i]; end if; end loop; --O resultado da subtração de 10 pela sobra da divisão da soma dos dígitos --por 10 é o dígito verificador v_DV = 10 - mod(v_soma, 10); if v_DV = 10 then v_DV := 0; end if; --É retornado o código de barras concatenado ao dígito verificador return array_to_string(v_digitos, '') || v_DV; end $BODY$ LANGUAGE plpgsql VOLATILE STRICT COST 100; ALTER FUNCTION public.fn_get_codbarras_ean13(character varying) OWNER TO postgres; update ean_ecm set cod_ean = '' where cod_ean != public.fn_get_codbarras_ean13(substring(cod_ean from 1 for 12)); Obs. Caso dê erro, digite o comando.
  14. Update corrigido. update produtos set codigo_barra = '' where codigo_barra != public.fn_get_codbarras_ean13(substring(codigo_barra from 1 for 12)); Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  15. Olá Rodrigo, agora que observei que ele está apagando os produtos e você queria um update. na minha base de dados de teste funcionou corretamente, você poderia informar alguns códigos incorretos e outros corretos da sua base de dados e a estrutura completa(sql) dessa tabela? Se possível me envie uma copia do seu banco para eu analisar. [email protected] Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_