Array
(
)

Navegando para o Registro anterior usando dbexpress e clientdataset

Alexandre Rodrigues
   - 10 nov 2009

Pessoal estou com uma dúvida que não estou conseguindo resolver,

é o seguinte eu nao estou conseguindo navegar para o registro anterior de uma tabela no banco de dados estou usando clientdataset+dbexpress+firebird 1.5

alguem saberia me dizer como resolver esse problema? segue abaixo o meu código.

procedure Anterior();
begin
 frmGrupoProdutos.cdsGrupoProdutos.Active := False;
 frmGrupoProdutos.cdsGrupoProdutos.Active := True;
 frmGrupoProdutos.cdsGrupoProdutos.Prior;
 frmGrupoProdutos.txtCod.Text := frmGrupoProdutos.cdsGrupoProdutos.FieldValues['COD_GRUPO_PRODUTO'];
 frmGrupoProdutos.txtNome.Text := frmGrupoProdutos.cdsGrupoProdutos.FieldValues['NOME_GRUPO_PRODUTO'];
 frmGrupoProdutos.txtDesc.Text := frmGrupoProdutos.cdsGrupoProdutos.FieldValues['DESCRICAO'];
 {Procedimento Anterior = seleciona o registro anterior}
end;

procedure TfrmGrupoProdutos.TbtnAnteriorClick(Sender: TObject);
  var
Cod,Nome,Desc:string;
Nomepesquisa:integer;
begin
{Nomepesquisa := 0;
   frmGrupoProdutos.cdsGrupoProdutos.Active:=false;
   frmGrupoProdutos.cdsGrupoProdutos.Active:=true;
   frmGrupoProdutos.QueryGrupos.Active:=false;
   frmGrupoProdutos.QueryGrupos.SQL.Clear;
   frmGrupoProdutos.QueryGrupos.SQL.Add('select COUNT(grupo_produtos.nome_grupo_produto) from GRUPO_PRODUTOS');
   frmGrupoProdutos.QueryGrupos.ExecSQL;
   frmGrupoProdutos.cdsGrupoProdutos.Active:=false;
   frmGrupoProdutos.cdsGrupoProdutos.Active:=true;
   Nomepesquisa := frmGrupoProdutos.cdsGrupoProdutos.FieldByName('COUNT').AsInteger;
if (Nomepesquisa > 0 ) then
  begin}
    frmGrupoProdutos.cdsGrupoProdutos.Active:=false;
    frmGrupoProdutos.cdsGrupoProdutos.Active:=true;
    frmGrupoProdutos.QueryGrupos.Active:=false;
    frmGrupoProdutos.QueryGrupos.SQL.Clear;
    frmGrupoProdutos.QueryGrupos.SQL.Add('select * from GRUPO_PRODUTOS');
    frmGrupoProdutos.QueryGrupos.ExecSQL;
    frmGrupoProdutos.cdsGrupoProdutos.Active:=false;
    frmGrupoProdutos.cdsGrupoProdutos.Active:=true; //Verifica se o Banco de Dados não esta Vazio
    Cod:='';
    Nome:='';
    Desc:='';
    {   Primeiro(Cod,Nome,Desc);}
    txtCod.Text:=Cod;
    txtNome.Text:=Nome;
    txtDesc.Text:=Desc;
    Anterior(Cod,Nome,Desc); //Chama a Procedure Anterior
  end;
else
  begin
    Showmessage('O Cadastro está vazio, é impossivel mover para o primeiro registro.');
    frmGrupoProdutos.cdsGrupoProdutos.Active:=false;
    frmGrupoProdutos.cdsGrupoProdutos.Active:=true;
    frmGrupoProdutos.QueryGrupos.Active:=false;
    frmGrupoProdutos.QueryGrupos.SQL.Clear;
    frmGrupoProdutos.QueryGrupos.SQL.Add('select * from GRUPO_PRODUTOS');
    frmGrupoProdutos.QueryGrupos.ExecSQL;
    frmGrupoProdutos.cdsGrupoProdutos.Active:=false;
    frmGrupoProdutos.cdsGrupoProdutos.Active:=true;
   end;
end;

Alguém saberia me dizer porque não consigo mover para o registro anterior, ele vai direto para o primeiro registro.

Alexandre Rodrigues
   - 10 nov 2009

Pessoal Consegui resolver o Problema....

eu estava atualizando o clientdataset quando não deveria na parte de verificação dos registros

Obrigado pela ajuda de todos,

vida de programador junior é assim mesmo!!!

Como dizem é de pequeno que se torçe o pepino!!!!