Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) delphi + mysql


AllNet

Pergunta

Olá pessoal, estou usando o componente zeos access para conectar ao mysql, e na tela de cadastro uso o DBNavigator, com os botoes desativados, exceto o nbpost, para ter o botao de cadastro. O que devo fazer para quando eu clicar no botao de cadastro, primeiro ele ver se eu já fiz esse mesmo cadastro.

Ou seja, não deixar eu cadastrar duas vezes a mesma pessoa.

Grato.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

AllNet, dependendo de como está definida sua tabela, o fato de gravar um mesmo registro pode gerar uma exceção do tipo "Key Violation". Mas, há cituações em que isso pode não ocorrer.

Neste caso, e mesmo no primeiro, a saída é utilizar uma querie auxiliar para verificar a existência da informação na tabela, antes de você gravar as informações.

Como você utiliza o DBNavigator (e também por conta do DBGrid), a ação de gravação (via método Post) pode ocorrer sem que você o efetue explicitamente (via código). Nesta situação, você pode utilizar o evento BeforePost do dataset sendo editado e nele você faz a validação via querie auxiliar. Caso a informação já exista, então você aborta o processo de inclusão (via procedure Abort). Veja este post para ter uma idéia.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Micheus, não consegui fazer por esses exemplos, então não estou mais usando mais os componentes do data controls, agora para inserir os dados eu coloquei o seguinte código em um botao:

zQuery1.Active := False;
zQuery1.SQL.Clear;
zQuery1.SQL.Add('insert into dados (nome, cidade) values ('+''''+edit1.Text+''''+','+''''+edit2.Text+''''+') ');
zQuery1.ExecSQL;

tentei usar o select from para a consulta mais não consegui.

Obrigado.

Editado por Micheus
Incluída tag's CODE para melhorar a visualização. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde AllNet, eu faço este filtro desta maneira

function evitarduplicados: boolean;
begin
  zQuery1.Active:=False;
  zQuery1.SQL.Clear;
  zQuery1.SQL.Add('select * from dados where nome=:um and  cidade=:dois');
  zQuery1.ParamByName('um').value:=edit1.text;
  zQuery1.ParamByName('dois').Value:=edit2.text;
  zQuery1.Active:=true;
  if(zQuery1.recordcount=0)then
  Begin
  //Aqui você coloca sua procedure para inserir os dados
  end
  else
  if zQuery1.recordcount> 0 then
  begin
    Este cadastro já foi realizado
  end
end;

Aí é só você chamar esta função no botão de cadastro, se não for encontrado nenhum cadastro igual ela finaliza, senão dá a mensagem.

Valeu..

Editado por Micheus
Incluída tag's CODE para melhorar a visualização, bem como identado o código. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...