Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-12-2008
chalao chalao is offline
Miembro
 
Registrado: sep 2008
Posts: 26
Poder: 0
chalao Va por buen camino
Question Donde se almacena el resultado de un Select en un TQuery?

En mi base de datos hay una tabla (usuarios) que contiene una columna nombre y otra conectado. En la columna conectado se guarda un entero 0 o 1 dependiendo si esta o no conectado.

Utilizando TZQuery de los componentes Zeos (similar a TQuery) hago una consulta sencilla:
Código SQL [-]
SELECT nombre FROM usuarios WHERE conectado=1;
Con esta consulta pretendo saber los nombres de los usuarios conectados. Pero realizando un ejemplo donde en mi tabla hay tres usuarios conectados tan sólo me devuelve uno de ellos en la propiedad
Código Delphi [-]
Query.Fieldvalues['nombre'];

Tambien me he fijado en los valores de Recordcount y Fieldcount siendo los resultados 3 y 1 respectivamente. Por lo que intuyo que el resultado es correcto y que se almacena en 3 records de 1 field cada uno y que lo que yo consulto es el field del primer record. Con lo cual si todas estas suposiciones son correctas mi problema es que no se cambiar de record para obtener los tres resultados.
He estado probando con First, Next, Prior y Last y despues consulto el valor de Fieldvalues y sigue siendo el mismo.

Gracias por adelantado
Un saludo
Responder Con Cita
  #2  
Antiguo 17-12-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola chalao, si enlazas tu DataSet(ZQuery) a un DBGrid veras el resultado que te ha devuelto, también puedes hacer esta prueba para ver los valores de tu consulta.

Código Delphi [-]
 //antes debe estar ejecutada tu consulta
 ZQuery.First;
 While Not ZQuery.Eof Do
  begin
   Showmessage(ZQuery.FieldByName('nombre').AsString);
   ZQuery.Next;
  end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 17-12-2008
chalao chalao is offline
Miembro
 
Registrado: sep 2008
Posts: 26
Poder: 0
chalao Va por buen camino
Muchas gracias por tu pronta respuesta.

En realidad el código que tu has puesto era similar a lo que yo estaba probando pero al verlo caí en el error, me explico.
Tengo una función:
Código Delphi [-]
function Query( Peticion : string ) : TZQuery;
Que ejecuta la peticion en mi componente ZQuery.
Yo lo que hacía era algo similar a:
Código Delphi [-]
  Peticion := 'SELECT nombre FROM usuarios WHERE conectado=1';
  Query( Peticion ).First;
  While Not Query( Peticion ).Eof Do begin
    Showmessage( Query( Peticion ).FieldByName('nombre').AsString);
    Query( Peticion ).Next;
  end;

Con lo cual al hacer la peticion en todas las sentencias siempre obtenia el primer campo.

Ahora lo cambié a:
Código Delphi [-]
  var
  ZQuery : TZQuery;
............
  Peticion := 'SELECT nombre FROM usuarios WHERE conectado=1';
  ZQuery := Query( Peticion );
  ZQuery.First;
  While Not ZQuery.Eof Do begin
    Showmessage( ZQuery.FieldByName('nombre').AsString);
    ZQuery.Next;
  end;

Y perfecto, el error no estaba en el mal uso de first y next sino en el mal uso de mi propia function.

Gracias
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
Resultado tquery johurgi SQL 5 19-06-2008 15:03:35
Donde se almacena el valor MAX ilichhernandez SQL 5 16-08-2007 23:18:05
Resultado vacío [TQuery] senda SQL 9 29-06-2007 21:53:20
Resultado TQuery tabla de PostgreSQL jomf PostgreSQL 2 03-01-2005 18:25:43
Resultado de un select HugoH Conexión con bases de datos 1 29-04-2004 00:56:47


La franja horaria es GMT +2. Ahora son las 22:53:04.


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