Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Como Clonar un ibDataset???? (https://www.clubdelphi.com/foros/showthread.php?t=15315)

AGAG4 18-10-2004 22:52:46

Como Clonar un ibDataset????
 
Alguien sabe como Clonar un ibDataset, esto lo quiero con la finalidad de hacer busquedas a un ibDataset sin mover el Cursor.

Agradezco cualquier sugerencia.

Neftali [Germán.Estévez] 19-10-2004 10:26:39

Cita:

Empezado por AGAG4
Alguien sabe como Clonar un ibDataset, esto lo quiero con la finalidad de hacer busquedas a un ibDataset sin mover el Cursor.

No hay que clonarlo, simplemente crea un nuevo componente de la misma clase que el primero y asignale las mismas propiedades (conexión, nombre de tabla/consulta SQL,...) con ésto obtendrás otro DataSet sobre los mismos datos que el primero.

AGAG4 19-10-2004 16:24:30

ok. Gracias Neftali.

gendelphi 20-10-2004 07:34:35

Buen dia.

Otra forma de hacer busquedas, o mover el cursor, sinque los controles visuales lo reflejen es asi:
Código Delphi [-]
IBDataSet1.DisableControls;
y se regresan con:
Código Delphi [-]
IBDataset1.EnableControls;

frudolph 28-10-2004 17:21:36

Otra opción es utilizando un Componente TDatalink (es mucho más rápido ya que se mueve por el Buffer del DataSet y sin estar conectado a control alguno):

Código:

procedure Tform1.Recorrer(DataSet: TDataSet);
var
  D: TDataLink;
  n: Integer;
begin
  D := TDataLink.Create; // No recuerdo si hacía falta algún parámetro
  D.DataSource := TDataSource.Create(nil);
  try
          D.DataSource.DataSet := DataSet;
          D.BufferCount := DataSet.RecordCount; // Esto es necesario para poder recorrer todos los registros
          for n := 0 to D.BufferCount - 1 do
                begin
                        ActiveRecord := n; // Funciona como el DataSet.Next;
                        // Para ver los valores de los campos utiliza
                        // D.DataSet['nombre_del_campo'] ó
                        // D.DataSet.FieldByName('nombre_del_campo').As..., etc.
                end;
  finally
          D.DataSource.Free;
          D.Free;
  end;
end;

(Disculpá la demora en constestar, pero recién volví a l foro la semana pasada. Espero que te sirva...) ;)


La franja horaria es GMT +2. Ahora son las 20:57:40.

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