Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2009
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
creo que no se puede hacer, igual hay otros datos que necesito obtener mientras voy recorriendo el TClientDataSet
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #2  
Antiguo 14-04-2009
cecam cecam is offline
Miembro
 
Registrado: may 2006
Ubicación: Girona
Posts: 47
Poder: 0
cecam Va por buen camino
Hoooola!!

Hace tiempo hice algo parecido para ver las diferencias que tenia entre un Paradox y un MySQL :

Código:
  TComparaCDS = class
    cdsDiferencies:TClientDataSet;
    constructor Create;
    procedure Compara(const taula:string; cdsOrigen, cdsDesti:TClientDataSet);
    destructor Destroy;override;
  private
  public
  end;

constructor TComparaCDS.Create;
begin
  inherited Create;
  cdsDiferencies:=TClientDataSet.Create(Application);
  with cdsDiferencies.FieldDefs do begin
       Clear;
       Add('taula',   ftString,   15,False);
       Add('clau',    ftString,   100,False);
       Add('origen',  ftString,   2,False);
       Add('desti',   ftString,   2,False);
  end;
  cdsDiferencies.CreateDataSet;
  cdsDiferencies.FieldByName('clau').DisplayWidth:=15;
  cdsDiferencies.Open;
  cdsDiferencies.IndexFieldNames:='taula;clau';
end;

procedure TComparaCDS.Compara(const taula:string; cdsOrigen, cdsDesti:TClientDataSet);
var
  o:string;
  d:string;
begin
  cdsOrigen.First;
  cdsDesti.First;
  while not cdsOrigen.Eof
     or not cdsDesti.Eof do begin
        if   cdsOrigen.Eof
        then o:='ZZZZZZZZZZZZZZZZZZZZZZ'
        else o:=registreAsString(cdsOrigen);
        if   cdsDesti.Eof
        then d:='ZZZZZZZZZZZZZZZZZZZZZZ'
        else d:=registreAsString(cdsDesti);

        if   o=d
        then begin
             cdsOrigen.Next;
             cdsDesti.Next;
        end
        else
        if  (o<d)
        then begin
             cdsdiferencies.Insert;
             cdsDiferencies.FieldByName('taula').AsString:=taula;
             cdsDiferencies.FieldByName('clau').AsString:=o;
             cdsdiferencies.FieldByName('origen').AsString:='->';
             cdsdiferencies.FieldByName('desti').Clear;
             cdsdiferencies.Post;
             cdsOrigen.Next;
        end
        else
        if  (o>d)
        then begin
             cdsdiferencies.Insert;
             cdsDiferencies.FieldByName('taula').AsString:=taula;             
             cdsdiferencies.FieldByName('clau').AsString:=d;
             cdsdiferencies.FieldByName('origen').Clear;
             cdsdiferencies.FieldByName('desti').AsString:='<-';
             cdsdiferencies.Post;
             cdsDesti.Next;
        end;
  end;
end;

destructor TComparaCDS.Destroy;
begin
  if   cdsDiferencies.Active
  then cdsDiferencies.EmptyDataSet;
  cdsDiferencies.Free;
  inherited Destroy;
end;
La funcion registreAsString(cdsDesti) ahora mismo no la encuentro, pero es muy facil de hacer y basicamente lo que hace es transformar todos los campos de un registro en un string.

Para que funcione necesitas tener ordenados los clientdataset por el mismo indice.

Con este objeto lo que tengo es un registro de las diferencias, no hace la sincronización, pero es facil de modificar para que la haga.


Saludos!!
Responder Con Cita
Respuesta



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
¿Una alternativa a win98? FGarcia Windows 3 16-06-2008 08:39:44
Alternativa TStringGrid lightningdd Gráficos 4 01-03-2008 07:44:23
Alternativa OutLook Io Varios 4 26-12-2007 11:08:19
Alternativa SQL*Plus Alfonsoft Oracle 4 07-10-2007 17:31:14
Alternativa a DbGrid JULIOCTORRESG Varios 2 12-03-2007 15:24:47


La franja horaria es GMT +2. Ahora son las 12:17:22.


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