Ir para conteúdo

Arquivado

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

Dell

utilizando adoquery delphi XE3

Recommended Posts

Não tenho muita experiência e ainda sou iniciante em delphi.

Eu gostaria de listar um texto dentro de um TLabel, vindo de um banco de dados access

Essa parte eu consegui, faço a consulta e pega os valores certinho.

 

Utilizo um ADOConnection e um ADOQuery.

 

 

[inline]with ADOQuery do begin



if (IntToStr(versao_atual)='')then
begin
versao_atual:=0;
end;

Close;
Active:=false;
SQL.Clear;
Sql.Add(' SELECT * FROM livros');
SQL.Add(' WHERE ver_livro = :vlivro');
SQL.Add(' and ver_capitulo = :vcapitulo');
SQL.Add(' and ver_vrs_id = :vversao');
Parameters.ParamByName('vlivro').Value :=ETLivro.Text;
Parameters.ParamByName('vcapitulo').Value :=ETCapitulo.Text;
Parameters.ParamByName('vversao').Value :=versao_atual;
Active:=true;
Open;


exibelivro.Caption:=fieldByName('ver_livro').AsString;[/inline]

 

 

Essa parte funciona eu consigo listar certinho, meu problema é que agora quero listar o próximo quando clicar em um botão.

Não vou utilizar dbgrid nem aquela barra de navegação.

 

Quero apenas dois botões próximo e anterior. Ja tentei vários códigos mas nada acontece, não da erro mas também não avança os registros.

 

ADOQuery.Prior (Nada)

ADOQuery.recordset.movenext (Nada)

 

Falta algum outro componente para eu conseguir avançar e retroceder entre os registros encontrados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está o seu código nos botões? Pode postar para darmos uma analisada? Outra dúvida: sua pesquisa está retornando mais de um registro e está ainda ativa quando clica nos botões?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está bem simples:

 

if not ADOQuery.Eof then
ADOQuery.Recordset.MoveNext
Não apresenta erros, provavelmente está vazio por isso não executa.
Dei um showmessage para listar o conteudo do sql e está normal com todos os parametros.
Na busca eu mandei listar o livro,capitulo e versao. Ele encontra o capitulo 1 como mandei porém não passa para o capitulo 2 quando dou next.
Tá certo que mandei buscar o capitulo 1, porém se eu quiser continuar listando capitulo 2 3 4 ele não permite?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está bem simples:

 

if not ADOQuery.Eof then
ADOQuery.Recordset.MoveNext
Não apresenta erros, provavelmente está vazio por isso não executa.
Dei um showmessage para listar o conteudo do sql e está normal com todos os parametros.
Na busca eu mandei listar o livro,capitulo e versao. Ele encontra o capitulo 1 como mandei porém não passa para o capitulo 2 quando dou next.
Tá certo que mandei buscar o capitulo 1, porém se eu quiser continuar listando capitulo 2 3 4 ele não permite?

Está bem simples:

 

if not ADOQuery.Eof then
ADOQuery.Recordset.MoveNext
Não apresenta erros, provavelmente está vazio por isso não executa.
Dei um showmessage para listar o conteudo do sql e está normal com todos os parametros.
Na busca eu mandei listar o livro,capitulo e versao. Ele encontra o capitulo 1 como mandei porém não passa para o capitulo 2 quando dou next.
Tá certo que mandei buscar o capitulo 1, porém se eu quiser continuar listando capitulo 2 3 4 ele não permite?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai que está a questão do porque perguntei quantos registros trás a sua pesquisa.... se você jogar a sql que usa no BD e executar, e ela só retornar um registro, não há como navegar para o próximo ou anterior porque não há mais registros a serem exibidos, entende? Para navegar entre registros, obrigatoriamente, temos que ter mais de um registro a exibir... outra coisa... se vai navegar entre eles, terá que por no seu código também, além do comando para mover para o próximo ou o anterior, o de atribuição ao label.

 

Outra coisa... não se usa o next do recordset do Adoquery para o que quer fazer... precisa rever duas coisas:

 

1. Se o seu select está trazendo múltiplos registros. Se estiver trazendo apenas 1, não adianta ter botões para pegar o próximo ou o anterior.

2. Adequar o código dos botões para algo do tipo abaixo.

 

 

//pegar o próximo registro
with ADOQuery do
begin
    if not Eof then
    begin
         Next;
         exibelivro.Caption:=fieldByName('ver_livro').AsString;
    end;
end;

 

 

//pegar o registro anterior
with ADOQuery do
begin
    if not First then
    begin
         Prior;
         exibelivro.Caption:=fieldByName('ver_livro').AsString;
    end;
end;

 

Dê uma lida neste link, pode ajudar: http://www.subrotina.com.br/conhecendo-o-componente-query/

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.