Dell 0 Denunciar post Postado Outubro 16, 2014 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 beginif (IntToStr(versao_atual)='')thenbeginversao_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
Chrnos 30 Denunciar post Postado Outubro 16, 2014 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
Dell 0 Denunciar post Postado Outubro 16, 2014 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
Dell 0 Denunciar post Postado Outubro 16, 2014 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
Chrnos 30 Denunciar post Postado Outubro 16, 2014 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