Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-02-2004
Avatar de haron
haron haron is offline
Miembro
 
Registrado: may 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 310
Poder: 24
haron Va por buen camino
tu jefe te habra pedido que muestre los 10 primeros resgistros porque la consulta pude devolver una gran cantidad y esto saturaria la red.

dile a tu jefe que la mejor solucion es indicar un filtro mas exhaustivo, de manera que el conjunto sea menor.

otra forma que se me ocurre, mediante un procedimiento almacenado:

Código:
set term^;
create procedure CONSULTA returns(campo1, campo2, ..) as
declare variable cont integer;
begin
  cont:=0;
  FOR select campo1, campo2, .. from tabla into :campo1, :campo2, .. DO
  begin
    // aqui devuelve un registro
    suspend;
    // sale del bucle cuando supera los 10 registros
    cont:=cont+1;
    if cont>10 then break;
  end;
end^
set term;^
luego lo unico que tienes que hacer es

Código:
select * from CONSULTA;
no estoy seguro de que sea correcta la sintaxis del procedimiento anterior, no tengo interbase delante para comprobarlo.
posiblemente haya una forma mas sencilla de hacerlo.

si encuentras alguna otra forma mas sencilla, nos lo comentas.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda”
(Confucio)
Responder Con Cita
  #2  
Antiguo 19-02-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 24
Giniromero Va por buen camino
Hola a todos,

Yo tengo un problema parecido, ¿no hay entonces ninguna forma que sustituya la clausula TOP por otro en interbase 7? yo lo que tengo es una consulta en la que sólo tienen que aparecer los últimos 10 o 15 registros de una tabla, el resto de los registros no me hacen falta.

Muchas gracias

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #3  
Antiguo 19-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Consulta la cláusula ROWS en la documentación. Se pone al final de la instrucción (no a continuación del SELECT como hace el TOP de SQL Server).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 19-02-2004
Avatar de haron
haron haron is offline
Miembro
 
Registrado: may 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 310
Poder: 24
haron Va por buen camino
Cita:
Empezado por Giniromero
Hola a todos,

Yo tengo un problema parecido, ¿no hay entonces ninguna forma que sustituya la clausula TOP por otro en interbase 7? yo lo que tengo es una consulta en la que sólo tienen que aparecer los últimos 10 o 15 registros de una tabla, el resto de los registros no me hacen falta.

Muchas gracias

Virginia
recuerdo que un TADOQuery tenia un parametro para no devolver todos los registros, sino que se los iba trayendo del servidor uno a uno cada vez que se ejecutaba el metodo 'next'.

lo que puedes hacer es lo siguiente:

Código:
select campo1, campo2, ...
from tabla
order by campo_i DESC
con la opcion DESC obtengo los ultimos registros al principio.

luego lo que tienes que hacer es recorrer estos registros:

Código:
cont:=0;
while not query.eof do 
begin
  // me traigo un registro
  query.next;
  // hago lo que tenga que hacer, como insertarlo en un TStringGrid
  ....
  // si supero los quince registros, me salgo del bucle
  cont:=cont+1;
  if cont>15 then break;
end;
si quieres presentarlo en una grilla, deberas usar en este caso un TStringGrid.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda”
(Confucio)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 14:48:57.


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