MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Comando insert para repetir valores

    avatar
    luanpjp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 18/09/2015

    Comando insert para repetir valores Empty Comando insert para repetir valores

    Mensagem  luanpjp em 13/6/2019, 16:08

    Pessoal, boa tarde!

    Não tenho muito conhecimento de access mas to me virando com o pouco que sei, porém me deparei com esse problema ai abaixo:
    Tenho 2 tabelas: datas e funcionários, nenhuma delas com valores duplicados.
    Preciso criar uma nova tabela com o nome de cada funcionário cadastrado em cada data.
    Porém nenhuma das duas tabelas está relacionada na tabela data contém apenas o campo DATA e na tabela funcionário apenas o campo NOME.

    Exemplo:
    01/04/2019 - Fulano
    01/04/2019 - Ciclano
    01/04/2019 - Beltrano
    02/04/2019 - Fulano
    02/04/2019 - Ciclano
    02/04/2019 - Beltrano
    03/04/2019 - Fulano
    03/04/2019 - Ciclano
    03/04/2019 - Beltrano
    .
    .
    .

    Obrigado
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7747
    Registrado : 05/11/2009

    Comando insert para repetir valores Empty Re: Comando insert para repetir valores

    Mensagem  Alexandre Neves em 13/6/2019, 17:16

    Boa tarde e bem-vindo ao fórum
    Estude Access, nomeadamente, nomes reservados do Access. Os nomes Data e Nome podem-lhe trazer problemas, pois tratam-se de nomes que têm significado próprio

    Sobre a sua dúvida, crie consulta e cole em SQL
    INSERT INTO NovaTabela SELECT Data & ' - ' & Nome FROM Data INNER JOIN Nomes ON 1=1


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    renpv
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 323
    Registrado : 12/01/2015

    Comando insert para repetir valores Empty Re: Comando insert para repetir valores

    Mensagem  renpv em 13/6/2019, 18:11

    Se a tabela datas tiver o campo id do funcionário, você pode resolver criando apenas uma consulta ao invés de criar nova tabela.
    Criar tabela pra juntar dados vai aumentar demais seu banco de dados.

    PS. Não sei qual a estrutura do seu banco mas acredito não ser uma boa ideia criar uma tabela de datas só pra gravar datas referentes a funcionários. Se o relacionamento dessas tabelas for de 1 pra 1 considere incorporar as duas.
    avatar
    luanpjp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 18/09/2015

    Comando insert para repetir valores Empty Re: Comando insert para repetir valores

    Mensagem  luanpjp em 18/6/2019, 19:23

    Pessoal, primeiramente queria pedir desculpas na demora do retorno, estava em viagem e não consegui acessar o fórum para responder.

    Alexandre Neves escreveu: Boa tarde e bem-vindo ao fórum
    Estude Access, nomeadamente, nomes reservados do Access. Os nomes Data e Nome podem-lhe trazer problemas, pois tratam-se de nomes que têm significado próprio

    Sobre a sua dúvida, crie consulta e cole em SQL
    INSERT INTO NovaTabela SELECT Data & ' - ' & Nome FROM Data INNER JOIN Nomes ON 1=1
    Testei a sua solução porém está dando erro aqui, modifiquei algumas coisas no insert porém mesmo assim não deu certo.


    Deixa eu explicar aqui o que eu estou fazendo para ficar mais fácil a todos entenderem.
    Na empresa que eu trabalho o sistema de ponto é péssimo, ou seja, não conseguimos emitir relatório algum, o pessoal do RH solicitou um modo que de para puxar as faltas, pessoas que trabalharam em algum FDS e quem trabalhou menos de 6HRS para alguns descontos ou acrecemos nos beneficios. Pois bem, o relógio de ponto gera um arquivo AFD com todas as informações que preciso, PIS - DATA - HORA. Pensei em puxar as informações no access para facilitar.
    Consegui fazer tudo, porém estou empacado na parte que um funcionário falta, pois como ele não veio trabalhar, nesta data o arquivo AFD não tem registro dele, ou seja não sei como posso fazer para informar se um funcionário faltou ou não.
    A minha ideia de criar uma tabela com cada dia e cada funcionário era justamente para resolver isso, se o funcionário não tivesse marcação de entrada e saída ele faltou.

    Segue em anexo o meu BD para que possam ver melhor e tentarem me ajudar com uma solução para esse caso.

    Troquei apenas as informações de nomes e pis para não ficarem explicitas, mas a minha base de dados é essa...

    Duas tabelas uma com o nome dos funcionários e outra com as marcações de cada dia. Fiz a consulta de entrada e saída para puxar tudo que preciso ela está fixada no mês de Abril já, porém de falta eu não estou conseguindo puxar. Para testes o Funcionário Fulano da Silva faltou no dia 01/04/2019 e não aparece na consulta.

    Obrigado a todos mais uma vez
    Anexos
    Comando insert para repetir valores AttachmentPONTO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.1 Mb) Baixado 3 vez(es)
    avatar
    renpv
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 323
    Registrado : 12/01/2015

    Comando insert para repetir valores Empty Re: Comando insert para repetir valores

    Mensagem  renpv em 18/6/2019, 19:32

    Tentei abrir seu banco de dados mas ele foi feito em uma versão superior a que eu tenho instalada aqui (Office 2013)
    avatar
    luanpjp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 18/09/2015

    Comando insert para repetir valores Empty Re: Comando insert para repetir valores

    Mensagem  luanpjp em 18/6/2019, 19:43

    renpv escreveu:Tentei abrir seu banco de dados mas ele foi feito em uma versão superior a que eu tenho instalada aqui (Office 2013)

    Desculpe... nem me atentei a isso. Segue o MDB
    Anexos
    Comando insert para repetir valores AttachmentPONTO_MDB.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (32 Kb) Baixado 1 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7747
    Registrado : 05/11/2009

    Comando insert para repetir valores Empty Re: Comando insert para repetir valores

    Mensagem  Alexandre Neves em 19/6/2019, 14:20

    Boa tarde
    Afinal tem campo comum PIS que não referiu
    SELECT DISTINCT Data & ' - ' & Nome FROM dados_entrada INNER JOIN funcionarios ON dados_entrada.PIS=funcionarios.PIS


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    luanpjp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 18/09/2015

    Comando insert para repetir valores Empty Re: Comando insert para repetir valores

    Mensagem  luanpjp em 19/6/2019, 20:40

    Alexandre Neves escreveu:Boa tarde
    Afinal tem campo comum PIS que não referiu
    SELECT DISTINCT Data & ' - ' & Nome FROM dados_entrada INNER JOIN funcionarios ON dados_entrada.PIS=funcionarios.PIS

    Alexandre, quando eu executo esse select os números de PIS que não existem na tabela dados_entrada retornam apenas a data sem o nome, ficando assim: " - 01/04/2019"

    Como testes fiz na mão essa tabela com os dados que preciso, ou seja o PIS de cada funcionário atrelado a uma data, porém quando executo a consulta onde deveria me retornar valor null (existe a data porém não existe hora de entrada ou saída) está repetindo os valores que ele encontra na consulta de outro funcionário. Apenas o funcionário Fulano da Silva tem registros na tabela de dados_entrada ou demais não tem registros, ou seja os campos de data e hora de Beltrano e Ciclano para o dia 01/04/2019 deveria me retornar vazio, mas está repetindo os valores que Fulano possui.

    Vou anexar novamente o BD com as alterações que testei aqui, ao executar a consulta Entrada e Saida, vão ver os valores do campo hora se repetindo quando deveria retornar vazio para 2 funcionários.
    Anexos
    Comando insert para repetir valores AttachmentPONTO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (28 Kb) Baixado 1 vez(es)
    avatar
    renpv
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 323
    Registrado : 12/01/2015

    Comando insert para repetir valores Empty Re: Comando insert para repetir valores

    Mensagem  renpv em 19/6/2019, 21:13

    O que lasca é que falta integridade aos dados da tabela. Como é que pode, existir registro de frequência com data mas não tem a identificação do funcionário. Se você não tem a identificação, a única opção possível é ignorar esse registro.

    PS. Se o sistema está gerando dados assim, com certeza é um bug.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7747
    Registrado : 05/11/2009

    Comando insert para repetir valores Empty Re: Comando insert para repetir valores

    Mensagem  Alexandre Neves em 19/6/2019, 21:18

    Boa noite
    Pretende assim
    SELECT DISTINCT Data & ' - ' & Nome
    FROM dados_entrada INNER JOIN funcionarios ON dados_entrada.PIS=funcionarios.PIS WHERE Not (IsNull(Data) or IsNull(Hora))


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

      Data/hora atual: 28/10/2020, 09:12