Club Delphi  
    FTP   CCD     Enlaces   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 Desplegado
  #1  
Antiguo 10-11-2005
majosf majosf is offline
Miembro
 
Registrado: jun 2005
Posts: 27
majosf Va por buen camino
Recorrido de dos bases de datos.

Hola, necesito ayuda urgentemente. Tengo dos bases de datos bda1 ybda2. Las dos con un tabla Socios. Pues bien, la bda1 no la quiero tocar, quiero recorrer la bda2 una vez al día, si la recorro y veo que tiene filas que no tiene la bda1, borrar las de la bda 2, si veo que la bda 2 tiene filas de menos, añadirle las que tiene de más la bda1 y si las dos bases de datos tiene las mismas filas dejarlo como esta.
¿Cómo lo hago?

Gracias.
Responder Con Cita
  #2  
Antiguo 10-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Moderador
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.186
marcoszorrilla Va por buen camino
Tienes que decirnos que tipo de tablas estás utilizando, porque la solución puede variar de unas a otras.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 10-11-2005
Avatar de jachguate
jachguate jachguate is offline
Usuario registrado
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.241
jachguate Va por buen camino
en general, suponiendo que qc1 está asociado a bd1 y qc2 a bd2, y ambos tienen algo como
Código SQL [-]
select * from Socio order by codigo
, simplemente podría hacerse un recorrido de ambas tablas:

Código Delphi [-]
Procedure IgualaSocios;

  function siguientecodigo(cod : integer) : integer;
  begin
    //qsiguiente esta asociado a db2 y tiene algo como:
    //select min(codigo) from socio where codigo > :codigo
    qsiguiente.parambyname('codigo').AsInteger := cod;
    qsiguiente.open;
    try
      result := qsiguienteSIGUIENTE.AsInteger;
    finally
      qsiguiente.close;
    end;
  end;

begin
  //inserta en qc2 los que no estén de qc1
  qc1.first;
  while not qc1.eof do
  begin
    if not qc2.locate('codigo', qc1codigo.asinteger, []) then
    begin
      qc2.insert;
      qc2codigo.value := qc1codigo.value;
      //el resto de campos se copia igual
      qc2.post;
    end
    qc1.next;
  end;
  //borra de qc2 los que no esten en qc1
  qc2.first;
  while not qc2.eof do
  begin
    if not qc1.locate('codigo', qc2codigo.AsInteger, []) then
    begin
      CodigoBorrado := qc2Codigo.AsInteger;
      qc2.Delete;
      if not qc2.locate('codigo', siguientecodigo(CodigoBorrado), []) then
        qc2.Last; {no hay mas códigos}
    end;
  end;
end;

No es muy eficiente, pero si las tablas de socios no son grandes, funcionará aceptablemente bien.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 10-11-2005
majosf majosf is offline
Miembro
 
Registrado: jun 2005
Posts: 27
majosf Va por buen camino
Recorrido Bases de Datos.

las Bases de Datos están en Acces y estoy acciendo a ellas mediante odbc. Muchas gracias. por cierto que es qc1.
Responder Con Cita
  #5  
Antiguo 10-11-2005
Avatar de jachguate
jachguate jachguate is offline
Usuario registrado
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.241
jachguate Va por buen camino
Cita:
Empezado por majosf
por cierto que es qc1.
interpretalo a tu conveniencia, podría ser un: TQuery, TADOQuery, TADODataSet, TIBQuery, TDBQuery, TSQLQuery, TDOAQuery, y una larga lista de etceteras

Cita:
Empezado por majosf
estoy acciendo a ellas mediante odbc.
Con lo que nos quedamos casi en las mismas. Podría ser ado+odbc, bde+odbc, dbexpress+odbc...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta


Herramientas
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


La franja horaria es GMT +2. Ahora son las 01:50:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi