Ir para conteúdo
Fórum Script Brasil

douglascso

Membros
  • Total de itens

    32
  • Registro em

  • Última visita

Tudo que douglascso postou

  1. O seu backup pode ser apenas de dados, apenas o schemas ou os dois. Se for apenas de dados, você dever ter as tabelas e colunas criadas, para conseguir restaurar os dados. Se for schemas, ele vai criar as tabelas somente. Se for os dois, ele vai criar a tabela automaticamente e restaurar os dados. Tente mudar o 'Format' para vê se consegue restaurar. Se não conseguir, você pode me enviar o backup para douglascsoliveira@hotmail.com
  2. Boa tarde. A forma mais simples é instalar o pgadmin, conectar no servidor, criar o banco e restaura-lo.
  3. Boa noite. Olhe o log na pasta pg_log. Douglas Carlos
  4. 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.
  5. 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.
  6. 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_
  7. 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_
  8. 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_
  9. 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_
  10. 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?
  11. douglascso

    Consulta Lenta

    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_
  12. 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_
  13. douglascso

    Criação de JOB

    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_
  14. douglascso

    Criação de JOB

    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_
  15. 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.
  16. 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_
  17. 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. douglascsoliveira@hotmail.com Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  18. ou 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_
  19. Use o seguinte comando: update produtos set codigo_barra = '' produtos where codigo_barra != (SELECT * from public.fn_get_codbarras_ean13( (SELECT substring(codigo_barra from 1 for 12) FROM produtos WHERE id = 1) )) and id = 1; Douglas Carlos da Silva Oliveira Analista de TI, QA, DBA @douglas_carlos_
  20. Qual a versão do postgresql e sistema operacional?
  21. Bom dia, segue exemplo: create or replace function fn_get_codbarras_ean13(p_codbarras varchar(12)) returns varchar(13) as $$ 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 $$ language plpgsql volatile strict; SELECT public.fn_get_codbarras_ean13('789100031550');
  22. Bom dia, não sei se entendi bem a sua duvida. Aqui alguns exemplos. SELECT CURRENT_DATE AS data; -- data hoje SELECT CURRENT_DATE + integer '1' AS data; -- data de amanhã SELECT CURRENT_DATE - integer '1' AS data; -- data de ontem SELECT CURRENT_DATE - date '2018-12-31' AS dias; -- quantidade de dias desde o começo de 2019 SELECT (CURRENT_DATE + INTERVAL '1 months')::timestamp::date AS data; -- data atual mais um mês SELECT (CURRENT_DATE + INTERVAL '1 years')::timestamp::date AS data; -- data atual mais um ano Atenciosamente, Douglas Carlos https://twitter.com/douglas_carlos_
  23. O pgAdmin cria algumas conexões para mostrar alguns dados. Se ao finalizar o software que utiliza o banco as conexões continuarem, deve ser somente do pgAdmin. Caso contrario, analisar o código do software. Ative o log para mais detalhes.
  24. Não consigo testar, está faltando tabela.
  25. Bom dia, você pode adicionar permissões facilmente com o pgAdmin III, entrando em propriedades do usuário como na imagem. Também pode fazer o backup do banco de dados, desinstalar e instalar novamente. Nessa nova instalação não terá os antigo usuários e poderá cadastrar novos. Att. Douglas Carlos @douglascso
×
×
  • Criar Novo...