Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > PostgreSQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-08-2022
dape dape is offline
Miembro
 
Registrado: ene 2004
Ubicación: Tacna - Perú
Posts: 138
Poder: 21
dape Va por buen camino
Mostrar conjunto de registros

Hola, luego de muchos años vuelvo a programar algo y como resultado de esta inactividad hay muchas cosas que he olvidado y me he esta costando.

Resulta que tengo una función en la que realizo una búsqueda según la cadena ingresada, la muestro a continuación:

Código SQL [-]
CREATE OR REPLACE FUNCTION public.sp_buscar_persona(in bapel character varying, OUT codigo character varying, OUT nombre character varying, 
OUT apelpat character varying, OUT apelmat character varying, OUT dpto character varying)
 RETURNS SETOF record
 LANGUAGE plpgsql
AS $function$
declare reg record;
begin
if (bapel != '') then 
    for reg in select tbl_persona.cod_persona,tbl_persona.appat_persona,tbl_persona.apmat_persona,tbl_persona.nom_persona,  tbl_dpto.nom_dpto
    FROM  tbl_dpto INNER JOIN tbl_persona ON tbl_dpto.id_dpto = tbl_persona.id_dpto where appat_persona like bapel||'%' loop
    codigo:=reg.cod_persona;
    nombre:=reg.nom_persona;
    apelpat:=reg.appat_persona;
    apelmat:=reg.apmat_persona;
    dpto:=reg.nom_dpto;
    return next; end loop; return;      
    if (codigo is null) then 
      codigo = '';
    end if;
  end if
end
$function$
;

luego, en lazarus llamo la función usando un TZStoredProc de ZEOS para mostrarlos en un StringGrid, para lo que uso el siguiente código:

Código Delphi [-]
x:=1
sp_buscar_persona.ParamByName('bapel').AsString:=ed_busqueda.Text;
sp_buscar_persona.Prepare;
sp_buscar_persona.ExecProc;
codigo:=sp_buscar_persona.ParamByName('codigo').Value;
sp_buscar_persona.Active:=true; 
for j := 0 to sp_buscar_persona.RecordCount - 1 do
     if not sp_buscar_persona.EOF then
     Begin
             sg_persona.RowCount:=x+1;
             For i := 0 to sp_buscar_persona.Fields.Count - 1 do
             begin
                     sg_persona.Cells[1,x]:=sp_buscar_persona.ParamByName('codigo').Value;
                     sg_persona.Cells[2,x]:=sp_buscar_persona.ParamByName('nombre').Value;
                     sg_persona.Cells[3,x]:=sp_buscar_persona.ParamByName('apelpat').Value;
                     sg_persona.Cells[4,x]:=sp_buscar_persona.ParamByName('apelmat').Value;
                     sg_persona.Cells[5,x]:=sp_buscar_persona.ParamByName('dpto').Value;
             end;
             inc(x);
             sp_buscar_persona.Next;
     end

Pero en lugar de mostrarme todos los registros que da la función SQL, sólo me muestra un registro y ¡encima lo duplica!, si alguien puede darme una idea para poder mostrar todos los registros que satisfagan la consulta les estaré muy agradecido.

Por cierto, utilizo la mezcla de FOR con el IF THEN porque cuando uso

Código Delphi [-]
while not sp_buscar_persona.EOF do

se cuelga el programita.

Saludos,

David
Responder Con Cita
 



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
Función de Postgres que devuelve conjunto de registros rmoraglez PostgreSQL 2 17-10-2011 22:20:48
Error al mostrar registros Fenareth Conexión con bases de datos 5 09-04-2008 19:18:53
Mostrar los últimos 100 registros dade SQL 4 19-10-2006 04:22:45
mostrar 15 registros por paginas alachaise PHP 7 22-10-2004 16:03:15
mostrar los registros chona Firebird e Interbase 5 27-07-2004 17:20:45


La franja horaria es GMT +2. Ahora son las 22:33:31.


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