Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-06-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
¿Pero el TClientDataSet necesita tener todos los datos en memoria o pueden ser leídos poco a poco?
Responder Con Cita
  #2  
Antiguo 24-06-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

Pues para eso precisamente tiene la propiedad PacketRecords donde se puede definir la cantidad de registros que traerá desde el servidor.
Si quieres más información, pues en el otro hilo en cuestion he puesto algunos enlaces muy pero muy interesantes.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 24-06-2010 a las 23:04:26.
Responder Con Cita
  #3  
Antiguo 24-06-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
No había leído el otro hilo "ayuda con consulta"
Los Tclientdataset los he usado alguna vez como tablas temporales en memoria, sé que son muy potentes, vi un video de ¿jachguate? donde se explicaban cosas muy interesantes.
Pero, es que son tantas cosas para aprender, no da tiempo, todavía me siento un inútil analfabeto e inculto, puede que dentro de otros 25 años haya aprendido lo básico
Responder Con Cita
  #4  
Antiguo 24-06-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Los componentes ClientDataSet tienen una propiedad llamada PacketRecord la cual determina cuandos registros se van a almacenar en memoria. Por defecto tiene configurado -1 lo que significa que se van a cargar todos los registros en la tabla. Como eso no me interesa en el listado general del formulario principal lo que vamos a hacer es poner esta propiedad a 100.

Por eso he ordenado la lista por el campo ID descendentemente para que se vean sólo los últimos 100 registros insertados. Una de las cosas que más me gustan de los componentes ClientDataSet es que se trae los 100 últimos registros y desconecta la tabla y la transacción quitándole trabajo al motor de bases de datos. Si el usuario que maneja el programa llega hasta el registro número 100 el propio componente conecta automáticamente con el servidor, se trae otros 100 registros y vuelve desconectar.
IMPRESIONANTE
Responder Con Cita
  #5  
Antiguo 24-06-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

Así es Casimiro... la verdad es que el ClientDataSet es uno de los componentes más robustos que he encontrado entre los componentes que vienen con Delphi , por lo cual me di cuenta que para que nuestra aplicacion esté bien diseñada es necesaria dividirla en capas, tal cual como menciona el autor de la página donde extraiste ese párrafo anterior.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 24-06-2010 a las 23:49:50.
Responder Con Cita
  #6  
Antiguo 25-06-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 23
AzidRain Va camino a la fama
Mas que potente este componente es de los mas subutilizados de Delphi el detalle es que encontramos muchos tutoriales e informaciones distintas para cada utilización, pero no hay un compendio que abarque todo lo que este componente puede hacer, muchos nos quedamos nomas con la idea de que nos sirve para hacer entre otras cosas tablas en memoria, pero como se ve hay mucho todavía por explorar.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #7  
Antiguo 25-06-2010
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 364
Poder: 20
Jose Roman Va por buen camino
Bueno ya hice lo que me han propuesto y sale perfecto, solo tengo una problema, alguien se le ocurre como controlar los registros, es decir:

he hecho algo al llegar al registro numero 100 y pasa perfectamente al siguiente registro, pero tengo problemas al dar clic en el boton PRIOR del DBNavigator. Si alguien me corrige lo realizado o me da una idea mejor gracias.

Nota: lo hice con 10 registros para ver mas rapido lo que pasa.

Código Delphi [-]
procedure TwConsigna.bsSkinDBNavigator1Click(Sender: TObject;
  Button: TbsNavigateBtn);
begin
  zqReg.Open; // Query que da el numero de registros
  if Button in [nbLast,nbFirst] then
  begin
    zqConsi.Close;
    zqConsi.SQL.Clear;
    zqConsi.SQL.Add(MiSQL);
    zqConsi.SQL.Add('ORDER BY ID_CG DESC');
    if Button = nbLast then
    begin
      zqConsi.ParamByName('R').Value := zqRegCOUNT.Value - 9;
      zqConsi.Open;
      zqConsi.Last;
    end else
    begin
      zqConsi.ParamByName('R').Value := 0;
      zqConsi.Open;
    end;
  end else
    if Button = nbNext then
    begin
      if (zqConsi.Eof) and (Bloque < (zqRegCOUNT.Value div 10)) then
      begin
        Inc(Bloque,10);
        zqConsi.Close;
        zqConsi.ParamByName('R').Value := Bloque;
        zqConsi.Open;
      end;
    end else
      if Button = nbPrior then
        if (zqConsi.Bof) and (Bloque > 0) then
        begin
          Dec(Bloque,10);
          zqConsi.Close;
          zqConsi.ParamByName('R').Value := Bloque;
          zqConsi.Open;
          zqConsi.Last;
        end;
  zqReg.Close;
end;
// Bloque variable que determina en que bloque de registro esta
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo evitar ejecutar bloques en el IDE Eyewitness Varios 9 03-08-2013 12:55:04
Interconexion de bloques astwin OOP 19 15-04-2009 17:50:31
Generar bloques de números Natasha Nortman Varios 8 30-03-2008 15:47:54
Esquemas de bloques david.rguez Gráficos 1 01-09-2007 00:05:01
Bloques De Numeros Consecutivos dany2006 C++ Builder 5 15-11-2006 21:06:16


La franja horaria es GMT +2. Ahora son las 23:38:05.


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