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

Checar antes de gravar


Felipe Gomes

Pergunta

Desejo inserir dados em uma tabela, porém, três situações podem existir no momento da inserção:

1º - O DBEdit1 pode estar vazio;

2º - O DBEdit2 pode estar vazio;

3º - A informação inserida no DBEdit1 pode já existir na base de dados - Chave primária.

Como criar uma rotina que examine as três situações àcima e trate as mesmas de modo correto?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Desejo inserir dados em uma tabela, porém, três situações podem existir no momento da inserção:

1º - O DBEdit1 pode estar vazio;

2º - O DBEdit2 pode estar vazio;

3º - A informação inserida no DBEdit1 pode já existir na base de dados - Chave primária.

Como criar uma rotina que examine as três situações àcima e trate as mesmas de modo correto?

olá !

bom o 1º e o 2º ítem pode ser resolvido através do tópico abaixo, tem várias opções muito boas para resolver isso... eu estava com a mesma dúvida e deu certinho, vale a pena conferir:

http://scriptbrasil.com.br/forum/index.php?showtopic=128866

Quanto ao 3º, qual tipo de campo seria? (axo que se estiver como chave primária ele já não deixar gravar, automaticamente)

espero que possa ter ajudado, posta o resultado ai depois...

abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá dan_visualdm!

Tenho o livro Banco de Dados com Delphi - Autor: Fábio Câmara, Editora Visual Books - e nele tem o seguinte exemplo de uma "rotina de gravação com prevenção ao erro de duplicação de chave primária" - Título dado pelo próprio Fábio através de um comentário no código:

procedure TForm1.Button1Click(Sender: TObject);

//Rotina de gravação com prevenção ao erro de duplicação de chave primária.

var

tblAux: TTable;

bolKeyViolation: Boolean;

begin

if Tab_Cli.State = dsInsert then

begin

//Cria uma nova tabela em tempo de execução.

tblAux:= TTable.Create(Self);

with tblAux do

begin

DataBaseName:= Tab_Cli.DataBaseName;

TableName:= Tab_Cli.TableName;

ReadOnly;

Active:= True;

SetKey;

FieldByName('CAMPO').AsString:= DDEdit1.Text;

bolKeyViolation:= GotoKey;

Close;

Free;

if bolKeyViolation then

begin

Raise Exception.Create ('A informação '+DBEdit1.Text+' já existe no sistema!');

DBEdit1.SetFocus;

Exit;

end;

end;

end;

Tab_Cli.Post;

end;

Gostaria de usar esse código em conjunto com uma das dicas do Micheus para resolver a minha dúvida apresentada nesse tópico.

Alguma dica?

Link para o comentário
Compartilhar em outros sites

  • 0
Olá dan_visualdm!

Tenho o livro Banco de Dados com Delphi - Autor: Fábio Câmara, Editora Visual Books - e nele tem o seguinte exemplo de uma "rotina de gravação com prevenção ao erro de duplicação de chave primária" - Título dado pelo próprio Fábio através de um comentário no código:

procedure TForm1.Button1Click(Sender: TObject);

//Rotina de gravação com prevenção ao erro de duplicação de chave primária.

var

tblAux: TTable;

bolKeyViolation: Boolean;

begin

if Tab_Cli.State = dsInsert then

begin

//Cria uma nova tabela em tempo de execução.

tblAux:= TTable.Create(Self);

with tblAux do

begin

DataBaseName:= Tab_Cli.DataBaseName;

TableName:= Tab_Cli.TableName;

ReadOnly;

Active:= True;

SetKey;

FieldByName('CAMPO').AsString:= DDEdit1.Text;

bolKeyViolation:= GotoKey;

Close;

Free;

if bolKeyViolation then

begin

Raise Exception.Create ('A informação '+DBEdit1.Text+' já existe no sistema!');

DBEdit1.SetFocus;

Exit;

end;

end;

end;

Tab_Cli.Post;

end;

Gostaria de usar esse código em conjunto com uma das dicas do Micheus para resolver a minha dúvida apresentada nesse tópico.

Alguma dica?

olá carinhaa...

então eu testei as dicas do outro post porém tive o seguinte erro (que não sei o porque e nem como corrigir..)

se você pede pra cadastrar um novo cliente, por exemplo, e não preencher um campo ele avisa... mas se você inserir qualquer coisa e apagar (deixando em branco novamente) ele grava numa boa. a mesma coisa acontece se você tiver um cliente já cadastrado e abrir o cadastro e apagar o campo nome do cliente deixando em branco você consegue gravar também sem nenhum bloqueio....

ai acontece isso também?

Ps. testei todos os exemplos citado, todos deu o mesmo erro.

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,2k
×
×
  • Criar Novo...