Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Barbosa

Pegar o ID no DBGRID

Recommended Posts

Estou com esta rotina para pegar o ID de um registro, mas ele só tá pegando o primeiro, alguém tem alguma dica

procedure Tfrm_ConsultaEmail.DBGrid1DblClick(Sender: TObject);
 var
   codigo_email : String;
begin
  DM.QRY_email.close;
  codigo_email := DM.QRY_emailID_EMAIL.AsString;
  Begin
      Visible:=False;
      frm_MovEmail:=Tfrm_MovEmail.Create(self);
  End;

 

Estou usando o SQLConection da paleta DBexpress e seus componentes para fazer conexão com o BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O DBGrid serve perfeitamente para essa tipo de função, o usuário seleciona o registro e pronto, mas no seu caso me parece q você está fechando a conexão com a tabela antes de copiar a ID para variável, não entendi ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o BD ACCESS com os componentes ADO, funciona assim:

procedure Tfrm_ConsultaUsuario.DBGrid1DblClick(Sender: TObject);
 var
   codigo_usuario, usuario :String;
begin
  codigo_usuario := DM.QRY_usuarioID_LOGIN.AsString;

  Visible:=False;
  frm_MovUsuario:=Tfrm_MovUsuario.Create(self);

end;

Mas agora que tô mudando p o firebird e usando os componentes DBExpress e DataACess fica dando erro, quando vou debugando o erro aparece logo quando passar por:

 

codigo_usuario := DM.QRY_usuarioID_LOGIN.AsString;

 

Pode ser alguma instrução q ñ estou sabendo qual é.

 

 

 

O DBGrid serve perfeitamente para essa tipo de função, o usuário seleciona o registro e pronto, mas no seu caso me parece q você está fechando a conexão com a tabela antes de copiar a ID para variável, não entendi ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

levando em consideração que você esta usando DBExpress, seria melhor você adicionar um ClientDataSet, DataSetProvider, assim fk mais fácil de transitar entre os registros pois os componentes da DBExpress não são bidirecionais.

 

Qual a MSG de erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já uso o DataSetProvider e o ClienteDataSet, pois fiz uma pesquisa e nela dizia q para usar o DbGrid seria melhor com eles.

O erro é esse:

'Cannot perform this operation on a close database'.

 

Ou tô fazendo assim:

TSQLQuery

- SQLConnection está setado para o TSQLConnection

- SQL -> SELECT * FROM TABELA

- ACTIVE -> FALSE

 

DATASOURCE

- DataSet -> Está setado para o ClienteDataSet

 

DataSetProvider

- DataSet -> Setado para o TSQLQuery

 

ClientDataSet

- ProviderName -> Setado para DataSetProvider

- Active -> True

- No Evento ClientDataSet_BeforeRefresh - ClientDataSet.ApplyUpdates(-1);

 

A configuração está assim, será q está faltando algo ?

 

levando em consideração que você esta usando DBExpress, seria melhor você adicionar um ClientDataSet, DataSetProvider, assim fk mais fácil de transitar entre os registros pois os componentes da DBExpress não são bidirecionais.

 

Qual a MSG de erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No data module ele está como active = true.

Na rotina propriamente dita eu nem uso o ClienteDataSet, mas caso eu use e o coloque como active := true, ele sempre pegar o Id do primeiro registro.

 

Acho q o clientdataset está fechado na durante a execução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.