Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Primeros n registros paradox (https://www.clubdelphi.com/foros/showthread.php?t=96250)

marilinspi 02-06-2023 23:19:35

Primeros n registros paradox
 
Hola, quiero obtener los primeros N registros de una tabla, uso delphi 7 y paradox
ya probé TOP, FIRST, LIMIT... nada me funciono
alguna idea?
gracias desde ya

brakaman 03-06-2023 09:50:18

Hola amigo:

No se si te he entendido bien, sino es esto perdona. pero...
Código Delphi [-]
Var 
  N, i : Integer;
begin
N := 20;  // Primeros 20 registros.
// Ya teniendo la tabla creada y abierta (claro). 
Tabla1.First;
    for i := 1 to N do
    begin
      if not Tabla1.EOF then
      begin
        // Acceder a los campos.
        // Por Ejemplo: Memo1.Lines.Add(Tabla1.FieldByName('Campo1').AsString);
        
        Tabla1.Next;
      end
      else
        Break; 
    end;
end;
// Cerrar tabla. Tabla1.Close, liberar recursos ....

Saludos.

Jose.

Casimiro Notevi 03-06-2023 11:53:06

Se supone que quiere hacerlo con SQL. Desconozco sin con paradox es posible.

manelb 03-06-2023 20:12:51

Nosotros hemos trabajado con paradox durante muchos años y hemos ido descubriendo características realmente interesantes y sorprendentes para lo que es paradox(ahora me viene a la cabeza la revolución que representó para mi el descubrimiento de las vistas en paradox), pero no creo que en sql para paradox exista el equivalente de FIRST, TOP, LIMIT de otros sistemas.

Casimiro Notevi 03-06-2023 23:27:52

Puede crear un store procedure que devuelva el número de registros que se quiera, se le puede pasar la sentencia y el número.
Algo similar a esto:


Código SQL [-]
SET TERM ^ ;

CREATE PROCEDURE SelectWithLimit (
  p_SelectStatement VARCHAR(1000),
  p_RecordCount INTEGER
)
RETURNS (
  ResultField1 ,
  ResultField2 ,
  -- Agrega más campos según tus necesidades
)
AS
DECLARE VARIABLE RowCount INTEGER;
BEGIN
  RowCount = 0;

  FOR EXECUTE STATEMENT p_SelectStatement INTO :ResultField1, :ResultField2
  DO
  BEGIN
    RowCount = RowCount + 1;
    SUSPEND;

    IF (RowCount >= p_RecordCount) THEN
      EXIT;
  END
END^

SET TERM ; ^

Casimiro Notevi 03-06-2023 23:29:06

Para usarlo, con un ejemplo se entiende:


Código SQL [-]
SELECT * FROM SelectWithLimit('SELECT * FROM tu_tabla', 10);


La franja horaria es GMT +2. Ahora son las 15:53:50.

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