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

(Resolvido) Alterar dados da consulta


nicolasbraz

Pergunta

Eu tenho um formulario de consulta que esta ligado por um DataSource e IbQuery.

E o de cadastro que é ligado por um DataSource e IbDataset.

Gostaria de que quando eu fize-se a consulta eu desse um duplo clique no registro da consulta e eu fosse para a tela de cadastro em modo de edição.

É possivel ?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

'nicolasbraz'

Clique sobre o DBGrid e no event OnDblClick você pode atribuir as condições para que quando você der um duplo clique sobre o registro você pode pedir para a tela de consulta fechar e habilitar o modo de edição do formulário de cadastro. Segue exemplo abaixo:

Tela de consulta

procedure TParentescosSelecionar.DBGrid1DblClick(Sender: TObject);

begin

Formulario_de_Consulta.Close;

//Caso você use comando SQL para editar, eu recomendo você armazenar o campo que tenha a chave primária para localizar o registro a ser editado ex: Update From tabela Where id = variavel

end;

Lembrando que é um pouco difícil orientar sobre como fazer já que não estou vendo a forma que você está programando, creio que esse exemplo sirva de referência e qualquer coisa poste aí

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Botão pesquisar do formulario de consulta.

procedure TFrmConFerramentas.BotaoPesquisarClick(Sender: TObject);
begin
   if (DateEdit1.Date > dateEdit2.Date) then
     begin
     showMessage('Não é possivel pesquisar quando a data inicial for maior que a data final');
     end
     else
     begin
        dmdados.sqlconferramentas.Close;
        dmdados.sqlconferramentas.ParamByName('datainicial').AsDate:=DateEdit1.Date;
        dmdados.sqlconferramentas.ParamByName('datafinal').AsDate:=DateEdit2.Date;
        dmdados.sqlconferramentas.ParamByName('controle').AsString:='%'+Edit1.Text+'%';
        dmdados.sqlconferramentas.ParamByName('nome').AsString:='%'+editnome.Text+'%';
        dmdados.sqlconferramentas.ParamByName('ferramenta').AsString:='%'+editferramenta.Text+'%';
        dmdados.sqlconferramentas.ParamByName('nomeobra').AsString:='%'+EditObra.Text+'%';
        dmdados.sqlconferramentas.Open;
     end;
end;
Código do DbGrid
procedure TFrmConFerramentas.DBGrid1DblClick(Sender: TObject);
var
 registro:integer;
begin
   registro := dmdados.SqlConFerramentasFER_CODIGO.Value;
   if not assigned (frmFerramentas) then
   begin
      application.createForm( TfrmFerramentas, frmFerramentas);
      frmFerramentas.show;
   end
   else
     abort;

   dmdados.ibFerramentas.Edit;
   dmdados.IbFerramentasFer_codigo.value := registro;
   frmferramentas.TbConsulta.TabVisible:=false;
   frmferramentas.TbCadastro.TabVisible:=true;
   frmferramentas.dbedit2.SetFocus;
end;

Tentei isso mas deu errado, ele abre o primeiro registro da tabela e altera o codigo dele.

Link para o comentário
Compartilhar em outros sites

  • 0

Tente isso ...

Código do DbGrid

procedure TFrmConFerramentas.DBGrid1DblClick(Sender: TObject);
var
 registro:integer;
begin
   registro := dmdados.SqlConFerramentasFER_CODIGO.Value;
   if not assigned (frmFerramentas) then
   begin
      application.createForm( TfrmFerramentas, frmFerramentas);
      frmFerramentas.show;
   end
   else
     abort;

   dmdados.ibFerramentas.Locate('FER_CODIGO', registro, []);

   dmdados.ibFerramentas.Edit;
   dmdados.IbFerramentasFer_codigo.value := registro;
   frmferramentas.TbConsulta.TabVisible:=false;
   frmferramentas.TbCadastro.TabVisible:=true;
   frmferramentas.dbedit2.SetFocus;
end;

O que está acontecendo é que você não está localizando o registro antes de editá-lo, creio que desta forma irá funcionar

Abraço

Editado por Pompeu
Link para o comentário
Compartilhar em outros sites

  • 0

Cara muito obrigado mesmo o código que você postou está perfeito.

Só houve um erro meu, era na hora de chamar o form no caso que o form já estive-se aberto ele não acontecia nada, agora abaixo vou colocar o código funcionando redondo.

procedure TFrmConFerramentas.DBGrid1DblClick(Sender: TObject);
var
registro:integer;
begin
   registro := dmdados.SqlConFerramentasFER_CODIGO.Value;

   if not assigned (frmFerramentas) then
   begin
      application.createForm( TfrmFerramentas, frmFerramentas);
      frmFerramentas.show
   end
   else
     frmferramentas.show;

   dmdados.ibFerramentas.Locate('FER_CODIGO', registro, []);

   dmdados.ibFerramentas.Edit;
   dmdados.IbFerramentasFer_codigo.value := registro;
   frmferramentas.TbConsulta.TabVisible:=false;
   frmferramentas.TbCadastro.TabVisible:=true;
   frmferramentas.dbedit2.SetFocus;
end;

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