Bloqueio de cadastro duplicado



  • Boa noite,
    Gostaria de saber qual a melhor função lógica para o bloqueio de um cadastro já efetuado. Exemplo:
    Tenho uma reunião no dia 04/07/2012 de 09:00 às 11:00 preciso bloquear um cadastro no mesmo dia dentro do mesmo horário.
    Atenciosamente.


  • Cara.. aí vc tem que fazer uma consulta no banco de dados para ver se é necessário efetuar o que vc quer.

    O ideal é vc ter como parametro de entrada para os eu fluxo, os valores que precisam ser verificados. Com isso, vc consulta no banco e decide o que vai fazer.


  • Entendi, eu até já coloquei na consulta SQL os parâmetros a serem filtrados, porém quando uso o depurador para ver o erro a tabela que coloquei como retorno do sql só me mostra a 1ª reunião agendada, não está me mestrando todas.
    Acho que é por isso que não estou conseguindo prosseguir.


  • Jorge, boa tarde.

    Isso depende muito da estrutura das tabelas em questão.

    Se o que você quer é simplemente bloquear a inserção de um registro quando ja houver outro naquele horário você poderia jogar uma chave de unicidade combinada (dia, hora), dessa forma o próprio banco barraria a inserção sem você precisar tratar via fluxo.

    Pensando por outro lado a situação não é assim tão simples, pois estamos falando de um período (12:00 as 14:00 por exemplo) e nesse caso essa chave não atenderia, o banco irá permitir uma inserção 12:01 as 13:59 o que não seria legal.

    O fluxo é relativamente simples, você deve passar data, hora inicio e hora fim como parametros de entrada do fluxo. Em seguida, deve ser feita uma consulta que te retorne todos os registros daquele dia onde o inicio for menor que o inicio corrente ou o final for maior que o final corrente.

    Tendo esses registros você deve criar um loop e validar se o que está prestes a inserir é válido ou não, lembrando que esse fluxo deve ser feito antes da inserir e antes de alterar, pois o usuário pode querer mudar um registro com periodo disponível para um indisponível e isso deve ser barrado também.

    Espero ter ajudado, abs.


  • Fala Bruno,

    Você está conseguindo clarear minhas idéias, até onde você informou de colocar como parâmetro de entrada no fluxo a data, hora início e hora fim já fiz corretamente. em seguida fiz uma consulta Sql e está me retornando os registros. Lembrando que quando uso o depurador para ver a tabela de retorno da consulta ele só me mostra o 1º registro cadastrado, entrei em contato com o suporte e eles me falaram que ele retorna onde a seta está marcando no sql. Mas tudo bem, eu não entendi muito bem como colocar o "registro do dia onde o nício for menor que o início corrente ou final for maior que final corrente". Esse loop estou usando a função "existem registros". Queria também saber se você tem um contato no Skype, claro se não for te incomodar, pois acho que talvez na hora que estiver fazerndo alguma coisa se já conseguir te contatar na hora fica mais fácil. Obrigado pela sua atenção.


  • Bom dia Jorge.

    Procure pelo skype bammascher

    Abs.


  • Jorge,

    Quando for depurar um Loop aconselho não utilizar o depurador, utilize de métodos mais medievais mesmo, como por exemplo mostrar uma mensagem de alerta toda vez que passar pelo Loop.

    Abs.


  • [quote="bruno mascher"] Quando for depurar um Loop aconselho não utilizar o depurador, utilize de métodos mais medievais mesmo, Abs.[/quote] Que belo conselho! Vejo Feudos pelo fórum.

Log in to reply