Fórum Pesquisar se a duplicidade de dados antes de salvar #398679

04/04/2011

0

Olá amigos... estou desenvolvendo um programinha para cadastro de funcionarios e separação de mercadorias,o problema é que nao consigo criar um codigo para que na hora q o botão salvar é precionado haja uma pesquisa se ja existe uma matricula igual cadastrada no banco e retorne uma mensagem avisando. Quanto ao codigo que é chave primaria o proprio banco se encarega de encrementar. se alguem puder me ajudar mando as fontes para uma avaliação obrigado.....    
Rogerio Sena

Rogerio Sena

Responder

Posts

04/04/2011

Agricola Ltda

Opa.. boa tarde,
Primeiro, vc nao vai poder fazer essa pesquisa no proprio dataset que esta utilizando pra gravar.Sugiro a seguinte rotina:
procedure BotaoGravarClienteClick(Sender: TObject);
  function Valida: Boolean;  begin    With TSQLQuery.Create(nil) do    begin      SQLConnection := SeuSQLConection;      SQL.Add('select null from clientes '+              ' where matricula = ' + string(Matriculasendogravada) );      Open;      result := IsEmpty;      Close;      Free;    end;  end;
begin  inherited;  if valida then  begin    dataSetdoCliente.post;  end  else    showMessage(Matricula ja existe);end;
Responder

Gostei + 0

05/04/2011

Rogerio Sena

Muito obrigado por me responderem eu pensei que nao haveria retorno... Bem sera que eu posso enviar os fontes junto com o banco para que possa ser analisado assim fica mais facil de poderem me ajudar. 
Responder

Gostei + 0

05/04/2011

Agricola Ltda

Coloca aki o codigo completo da unit q vc precisa implementar isso que ja da pra montar algo pra vc.
Responder

Gostei + 0

05/04/2011

Rogerio Sena

procedure TFrmFuncionario.btnNovoClick(Sender: TObject);
begin
  inherited;
     DBEDit2.SetFocus;
end;   procedure TFrmFuncionario.btnSalvarClick(Sender: TObject);
begin
  if RadioButton1.Checked = True then
     begin
       DBEdit4.Text:='ATACADÃO';
     end;  
  Label6.Enabled  := False;
  DBEdit4.Enabled := False;
  if DataSource1.State = dsInsert then
          DMClient.cdsFuncionario.Params [0].Text:=
          DMClient.cdsFuncionarioMATRICULA.Text;
  inherited; btnAlterar.Enabled:=True; end;   esse formulario é de erança de um form cadastro padrao,vou colocar como esta o botão novo e salvar do mesmo.   procedure TFrmCadastro.btnNovoClick(Sender: TObject);
begin
  DataSource1.DataSet.append;
end;   procedure TFrmCadastro.btnSalvarClick(Sender: TObject);
var novo,alteracao:boolean;
begin
  novo:=(DataSource1.State = dsInsert);
  DataSource1.DataSet.Post;
  if DataSource1.DataSet is TClientDataSet then
  begin
    if (TClientDataSet(DataSource1.DataSet).ApplyUpdates(0) =0)
    and novo then
    begin
      DataSource1.DataSet.Refresh;
      if DataSource1.DataSet.RecordCount > 1 then
         DataSource1.DataSet.Last;
    end;
  end;
end;
Responder

Gostei + 0

06/04/2011

Rogerio Sena

Coloca aki o codigo completo da unit q vc precisa implementar isso que ja da pra montar algo pra vc.
[ procedure TFrmFuncionario.btnNovoClick(Sender: TObject);
begin
  inherited;
     DBEDit2.SetFocus;
end;   procedure TFrmFuncionario.btnSalvarClick(Sender: TObject);
begin
  if RadioButton1.Checked = True then
     begin
       DBEdit4.Text:='ATACADÃO';
     end;  
  Label6.Enabled  := False;
  DBEdit4.Enabled := False;
  if DataSource1.State = dsInsert then
          DMClient.cdsFuncionario.Params [0].Text:=
          DMClient.cdsFuncionarioMATRICULA.Text;
  inherited; btnAlterar.Enabled:=True; end;   esse formulario é de erança de um form cadastro padrao,vou colocar como esta o botão novo e salvar do mesmo.   procedure TFrmCadastro.btnNovoClick(Sender: TObject);
begin
  DataSource1.DataSet.append;
end;   procedure TFrmCadastro.btnSalvarClick(Sender: TObject);
var novo,alteracao:boolean;
begin
  novo:=(DataSource1.State = dsInsert);
  DataSource1.DataSet.Post;
  if DataSource1.DataSet is TClientDataSet then
  begin
    if (TClientDataSet(DataSource1.DataSet).ApplyUpdates(0) =0)
    and novo then
    begin
      DataSource1.DataSet.Refresh;
      if DataSource1.DataSet.RecordCount > 1 then
         DataSource1.DataSet.Last;
    end;
  end;
end;
Responder

Gostei + 0

07/04/2011

Rogerio Sena

Coloca aki o codigo completo da unit q vc precisa implementar isso que ja da pra montar algo pra vc.
Amigo eu ainda estou no vazio qt a minha duvida,ja tentei o codigo que sujeriu e nada. sera que tem como fazer de outra maneira?  
Responder

Gostei + 0

07/04/2011

Dirceu Morais

Rógerio tente assim:

procedure TFrmFuncionario.btnSalvarClick(Sender: TObject);
begin
  if RadioButton1.Checked = r True then
     begin
       DBEdit4.Text:='ATACADÃO';
     end;   
  Label6.Enabled  := False;
  DBEdit4.Enabled := False;
  if DataSource1.State = dsInsert then
  Begin
    if DMClient.cdsFuncionario.LOCATE('MATRICULA',DBEDIT.text,[]) Then
     Begin
         Application.MessageBox( ('Matricula já existe no banco de dados!!!'), 'Aviso do sistema', MB_OK + MB_ICONINFORMATION );  
        btnAlterar.Enabled:=False;
        Exit;
      end           DMClient.cdsFuncionario.Params [0].Text:=           DMClient.cdsFuncionarioMATRICULA.Text;    end;    inherited;    btnAlterar.Enabled:=True; end;


Ps: O DBEDIT.text é o valor do campo onde é digitado o valor da matricula.

Espero ter ajudado.


Dirceu Morais
Responder

Gostei + 0

07/04/2011

Rogerio Sena

Rógerio tente assim:


procedure TFrmFuncionario.btnSalvarClick(Sender: TObject);
begin
  if RadioButton1.Checked = r True then
     begin
       DBEdit4.Text:='ATACADÃO';
     end;   
  Label6.Enabled  := False;
  DBEdit4.Enabled := False;
  if DataSource1.State = dsInsert then
  Begin
    if DMClient.cdsFuncionario.LOCATE('MATRICULA',DBEDIT.text,[]) Then
     Begin
         Application.MessageBox( ('Matricula já existe no banco de dados!!!'), 'Aviso do sistema', MB_OK + MB_ICONINFORMATION );  
        btnAlterar.Enabled:=False;
        Exit;
      end           DMClient.cdsFuncionario.Params [0].Text:=           DMClient.cdsFuncionarioMATRICULA.Text;    end;    inherited;    btnAlterar.Enabled:=True; end;


Ps: O DBEDIT.text é o valor do campo onde é digitado o valor da matricula.

Espero ter ajudado.


Dirceu Morais
amigo vou tentar e retorno obrigado por sua grande ajuda
Responder

Gostei + 0

07/04/2011

Rogerio Sena

Rógerio tente assim:


procedure TFrmFuncionario.btnSalvarClick(Sender: TObject);
begin
  if RadioButton1.Checked = r True then
     begin
       DBEdit4.Text:='ATACADÃO';
     end;   
  Label6.Enabled  := False;
  DBEdit4.Enabled := False;
  if DataSource1.State = dsInsert then
  Begin
    if DMClient.cdsFuncionario.LOCATE('MATRICULA',DBEDIT.text,[]) Then
     Begin
         Application.MessageBox( ('Matricula já existe no banco de dados!!!'), 'Aviso do sistema', MB_OK + MB_ICONINFORMATION );  
        btnAlterar.Enabled:=False;
        Exit;
      end           DMClient.cdsFuncionario.Params [0].Text:=           DMClient.cdsFuncionarioMATRICULA.Text;    end;    inherited;    btnAlterar.Enabled:=True; end;


Ps: O DBEDIT.text é o valor do campo onde é digitado o valor da matricula.

Espero ter ajudado.


Dirceu Morais
amigo vou tentar e retorno obrigado por sua grande ajuda
Testei o código com o banco vazio sem nada cadastrado e mesmo sem nenhuma matricula gravada da a mensagem de Matricula já existe no banco de dados.
Responder

Gostei + 0

07/04/2011

Rogerio Sena

Rógerio tente assim:


procedure TFrmFuncionario.btnSalvarClick(Sender: TObject);
begin
  if RadioButton1.Checked = r True then
     begin
       DBEdit4.Text:='ATACADÃO';
     end;   
  Label6.Enabled  := False;
  DBEdit4.Enabled := False;
  if DataSource1.State = dsInsert then
  Begin
    if DMClient.cdsFuncionario.LOCATE('MATRICULA',DBEDIT.text,[]) Then
     Begin
         Application.MessageBox( ('Matricula já existe no banco de dados!!!'), 'Aviso do sistema', MB_OK + MB_ICONINFORMATION );  
        btnAlterar.Enabled:=False;
        Exit;
      end           DMClient.cdsFuncionario.Params [0].Text:=           DMClient.cdsFuncionarioMATRICULA.Text;    end;    inherited;    btnAlterar.Enabled:=True; end;


Ps: O DBEDIT.text é o valor do campo onde é digitado o valor da matricula.

Espero ter ajudado.


Dirceu Morais
amigo vou tentar e retorno obrigado por sua grande ajuda
Testei o código com o banco vazio sem nada cadastrado e mesmo sem nenhuma matricula gravada da a mensagem de Matricula já existe no banco de dados.
Oque acha de eu enviar os projetinho assim fica melhor para vc me ajudar
Responder

Gostei + 0

07/04/2011

Dirceu Morais

Oque acha de eu enviar os projetinho assim fica melhor para vc me ajudar


Ué se vc quiser me mandar.

Dirceu Morais



Responder

Gostei + 0

07/04/2011

Rogerio Sena

Oque acha de eu enviar os projetinho assim fica melhor para vc me ajudar


Ué se vc quiser me mandar.

Dirceu Morais



me passa um enredeço de email pra eu te enviar
Responder

Gostei + 0

07/04/2011

Dirceu Morais

digitosistemas@yahoo.com.br
Responder

Gostei + 0

08/04/2011

Rogerio Sena

digitosistemas@yahoo.com.br
Olá ja enviei o conteudo para que posa dar uma olhada e ver se tem uma solução para o problema obrigado.
Responder

Gostei + 0

08/04/2011

Rogerio Sena

Rógerio tente assim:


procedure TFrmFuncionario.btnSalvarClick(Sender: TObject);
begin
  if RadioButton1.Checked = r True then
     begin
       DBEdit4.Text:='ATACADÃO';
     end;   
  Label6.Enabled  := False;
  DBEdit4.Enabled := False;
  if DataSource1.State = dsInsert then
  Begin
    if DMClient.cdsFuncionario.LOCATE('MATRICULA',DBEDIT.text,[]) Then
     Begin
         Application.MessageBox( ('Matricula já existe no banco de dados!!!'), 'Aviso do sistema', MB_OK + MB_ICONINFORMATION );  
        btnAlterar.Enabled:=False;
        Exit;
      end           DMClient.cdsFuncionario.Params [0].Text:=           DMClient.cdsFuncionarioMATRICULA.Text;    end;    inherited;    btnAlterar.Enabled:=True; end;


Ps: O DBEDIT.text é o valor do campo onde é digitado o valor da matricula.

Espero ter ajudado.


Dirceu Morais
amigo vou tentar e retorno obrigado por sua grande ajuda
Testei o código com o banco vazio sem nada cadastrado e mesmo sem nenhuma matricula gravada da a mensagem de Matricula já existe no banco de dados.
Oque acha de eu enviar os projetinho assim fica melhor para vc me ajudar
com o codigo do jeito que esta sempre retorna a mensagem de matricula existente e os dados nao sao gravados no banco embora apareçam em um grid.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar