Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-01-2011
jlrdz jlrdz is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 50
Poder: 14
jlrdz Va por buen camino
Question Avanzar de registro en consulta a MySQL

Como puedo avanzar de registro en la consulta que hice a la base de datos?

Estoy utilizando el componente Mydac para conectarme a MySQL, envio mi consulta de la siguiente manera:

Código Delphi [-]
procedure TfrmUsuarios.FormCreate(Sender: TObject);
var
  total:integer;

begin
//esta consulta a la base de datos la hago bien y me regresa datos
frmLogin.query.Close;
frmLogin.query.SQL.Clear;
frmLogin.query.SQL.Text:='select * from usuarios';
frmLogin.query.Open;

total:=frmLogin.query.RecordCount;

  if total>=0 then
  begin
  edtNumero.Text:=frmLogin.query.FieldValues['numero_usuario'];
  edtNombre.Text:=frmLogin.query.FieldValues['nombre_usuario'];
  edtTipo.Text:=frmLogin.query.FieldValues['tipo'];
  btnCambiarpass.Visible:=True;
  end
  else
  begin
  
    showmessage('No existen usuarios');

  end;

end;

Quiero crear mis propios botones como los que se usan en DBNavigator, uno en el cual yo de click me avanze al siguiente registro de todos los que me regresó la consulta y así poderlos mostrar en los TEdit

Código Delphi [-]
procedure TfrmUsuarios.bitSiguienteClick(Sender: TObject);
begin

edtNumero.Text:=frmLogin.query.FieldValues['numero_usuario'];
  edtNombre.Text:=frmLogin.query.FieldValues['nombre_usuario'];
  edtTipo.Text:=frmLogin.query.FieldValues['tipo'];
  btnCambiarpass.Visible:=True;
end;

Si lo dejo así como está, me llena los campos pero siempre con el primer registro y lo que quiero es que avanze al siguiente, de misma manera quiero hacer los demas botones para el registro anterior,primero y último.

Espero haberme explicado bien.

Saludos.
Responder Con Cita
  #2  
Antiguo 06-01-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Normalmente debiera funcionar:
Código Delphi [-]
Query.Prior
Query.Next;
Query.First;
Query.Last;


Un Saludo
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 07-01-2011
jlrdz jlrdz is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 50
Poder: 14
jlrdz Va por buen camino
Ya lo hice de la siguiente manera, me avanza al siguiente registro y me llena los campos pero solamente un registro y cuando presiono nuevamente el botón ya no lo hace, ya no me avanza a la siguiente registro de la columna.
Código Delphi [-]
procedure TfrmUsuarios.bitSiguienteClick(Sender: TObject);
begin

frmLogin.query.Next;
 edtNumero.Text:=frmLogin.query.FieldValues['numero_usuario'];
  edtNombre.Text:=frmLogin.query.FieldValues['nombre_usuario'];
  edtTipo.Text:=frmLogin.query.FieldValues['tipo'];
  btnCambiarpass.Visible:=True;
  
end;

en que estaré mal?
Responder Con Cita
  #4  
Antiguo 07-01-2011
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Sera que solo tiene un registro como resultado de tu consulta?

Verifica cual es el valor de RecordCount!!

O talvez ya esta al fin de archivo...Verifica con

Código Delphi [-]
If frmLogin.query.Eof then
   Showmessage('Fin registros..');

Saludos
Responder Con Cita
  #5  
Antiguo 07-01-2011
jlrdz jlrdz is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 50
Poder: 14
jlrdz Va por buen camino
Lo hice hecho ya verifique con

If frmLogin.query.Eof then
Showmessage('Fin registros..');

y al dar click para que me muestre el segundo registro lo hace y aparece el mensaje "Fin de registros..", pero puse un Label donde se escribiera el numero de registros con RecordCount y me salen 5, revisé en la base de datos y efectivamente solo tengo 5.

Saludos y gracias por tu respuesta.

#Editado#

en el label con RecordCount me sale 1, pero yo en mi base de datos tengo 5, la consulta a mysql que hago es "select * from usuarios", esta consulta la hago en un formulario al momento de crearse, ahi hago un RecordCount con el showmessage y ahi es donde si me indica que tengo 5 registros, pero cuando hago click en el boton siguiente ya solo me marca 1 registro.

Última edición por jlrdz fecha: 07-01-2011 a las 18:22:23.
Responder Con Cita
  #6  
Antiguo 07-01-2011
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
por alguna razón talvez no estas al principio de los registros...

Asegurate que estas al inicio cuando comienzas a recorrerlos...

Cita:
frmLogin.query.Open;

frmLogin.query.First;
Un poquito de codigo para que controle el avance de registros y el retrocezo.

Código Delphi [-]
procedure tform1.cmdNextClick(Sender:TObject);
begin
       cmdNext.Enabled:=Not frmLogin.query.Eof;
       if cmdNext.Enabled then
         frmLogin.query.Next; 

       cmdPrev.Enabled:=Not frmLogin.query.Bof;
end;

procedure tform1.cmdPrevClick(Sender:TObject);
begin
       //verifica que no es fin de registros...
       cmdPrev.Enabled:=Not frmLogin.query.Bof;
       if cmdPrev.Enabled then
         frmLogin.query.Prior; //Avanza al siguiente

      cmdNext.Enabled:=Not frmLogin.query.Eof;
end;
Responder Con Cita
  #7  
Antiguo 07-01-2011
jlrdz jlrdz is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 50
Poder: 14
jlrdz Va por buen camino
Lo hice con ese codigo pero me sigue apareciendo lo mismo, doy click y solo me muestra el siguiente registro despues doy clic nuevamente y ya no me muestra el siguiente, sabiendo que en la base de datos tengo 5 registros y estoy seleccionandolos todos con "select * from usuarios"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Avanzar y Retroceder porpárrafos sac OOP 5 16-07-2010 16:04:00
Avanzar una pagina, por cada registro alcides Impresión 5 31-03-2010 21:34:27
Avanzar a la próxima línea de error Crandel Varios 5 27-11-2006 17:35:49
Comparar un registro de un edit con un registro de una tabla en una consulta Damian666 SQL 10 01-10-2005 00:43:20
Avanzar Edits con Enter lbidi Varios 3 30-03-2005 16:53:56


La franja horaria es GMT +2. Ahora son las 07:03:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi