Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Numero de registro (https://www.clubdelphi.com/foros/showthread.php?t=39628)

glopez 25-01-2007 19:06:20

Numero de registro
 
Necesito hacer una consulta SQL con Firebird 1.5 omo la siguiente

select rownum, nombre, apellidos
from clientes

1 Pedro Lopez
2 antonio Fernandez
3
.
.

El problema es que no encuentro una funcion en firebird 1.5 que sea equivalente al rownum. Lo que quiero que me devuelva es el numero de registro según la consulta que yo haya hecho no la posición que ocupa en la base de datos.
Gracias.

pborges36 07-02-2007 17:52:39

Podrias usar algo como esto?

Código Delphi [-]
Query1.RecNo

Lepe 07-02-2007 19:59:12

RecNo solo funciona en tablas planas (paradox, dbase, etc) en Firebird devolverá -1. (Creo que ha de hacerse un .last para obtener el valor, aunque no estoy seguro).

Lo que se suele hacer en estos casos es un procedimiento almacenado, declarando una variable contador que se va aumentando en cada select.

Ej:
Código SQL [-]
declare procedure ClientesNumerados()
returning( numrow integer,
              nombre varchar(80),
              Apellidos varchar(80))
as
begin 

 numrow = 0;
 for select nombre, apellidos from tabla 
 into :nombre, :Apellidos do
 begin 
   numrow := numrow + 1;
   suspend; 
 end;
end.

Está escrito de memoria, fijo que tiene errores.

Ahora en delphi:
Código Delphi [-]
query1.sql.text := 'select * from clientes_numerados order by nombre';
query1.Open;
Asociado a un Grid debería funcionar.

Saludos

glopez 12-02-2007 11:22:40

Aún no he problado lo del procedimiento almacenador pero creo que funcionará bien, ¿Habría alguna forma de pasarle los campos mediante un parametro, sobre los que quiero hacer la consulta?.

Para llamarlo tedré que poner execute procedure ... no?

Lepe 12-02-2007 12:10:29

El Store Procedure debe saber de antemano los parámetros de salida que usas, por tanto deben ser fijos.

Quizás podrías añadir una columna más en el grid, y programarlo en delphi.

El SP, lleva la palabra "suspend" por tanto es un SP de selección, que quiere decir que devuelve datos, por tanto hay que usarlo como si fuera una tabla más.

Saludos


La franja horaria es GMT +2. Ahora son las 12:13:56.

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