Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Providers (https://www.clubdelphi.com/foros/forumdisplay.php?f=10)
-   -   Actualizar ClientDaset en otra base de datos (https://www.clubdelphi.com/foros/showthread.php?t=78257)

StartKill 02-04-2012 18:11:06

Actualizar ClientDaset en otra base de datos
 
Buenas foro.:cool:

Saludarlos y solicitarles ayuda.

- Estoy con Dephi XE.
- Sql Server 2008.
- Tengo 2 bases de datos en el mismo servidor (Movil-1 y Movil-2).
- Basicamente las dos base de datos son identicas en la estructura.

Aqui mi duda: :confused:
- Hay una tabla llamada "Almacenes" en cada base de datos.
- Uso un ClientDataSet para "Almacenes" de Movil-1 (el resultado de una query)
* Existe algun metodo/forma para utilizar el "resultado/filas" del ClientDataSet para añadir las filas a la tabla "Almacenes" de la base de datos Movil-2

- Basicamente mi deseo no es solo añadir el resultado de este clientDataset, tambien deseo hacer update o delete de las filas de este clientDaset a la otra tabla de la otra base de datos. (segun sea el caso a una condicion que manejariá)


Your friend

Startkill
Lima-Perú

gatosoft 26-04-2012 22:13:47

StartKill,

Lo que buscas es una replicación en línea... para esto la mayoría de las bases traen esta funcionalidad para que se haga de forma automática en línea o periódicamente, pero esperando que la base destino no sea transaccional, es decir, solo es un repositorio de replciación como medida de seguridad....

Pero creo que lo que tu esperas es algo diferente ¿no es cierto?, pues estoy suponiendo que tus bases Movil-1 y Movil-2 son ambas transaccionales, lo cual querría decir que lo que buscas es una Sincronización o conciliación de datos entre las bases....

Todo lo que sea "en línea" tiene un costo, por lo menos de procesamiento, y es algo que debes evaluar....

Hay un articulo muy interesante de Pablo Reyes en "Embarcadero Developer Network" llamado Reconciliación de errores de actualización. revisa especialmente el apartado: "Registros modificados", en este muestra una forma para Visualizar los registros que han sufrido modificaciones en el ClientDataset.... el código clave es:

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  stStatusFiler: TUpdateStatusSet;
begin
  stStatusFiler := [];
  if CHKModified.Checked then
    stStatusFiler := stStatusFiler + [usModified];
  if CHKInserted.Checked then
    stStatusFiler := stStatusFiler + [usInserted];
  if CHKDeleted.Checked then
    stStatusFiler := stStatusFiler + [usDeleted];
  (DSParts.DataSet as TClientDataSet).StatusFilter := stStatusFiler;
end;

Esto tal vez te de una idea de como podrías conocer los cambios de tu ClientDataset antes de aplicarlos en una base, para intentar replicarlos en la otra....

Espero que te haya servido...

Un saludo,

StartKill 05-06-2012 02:39:00

Excelente respuesta

Startkill dice:
Cita:

... Aqui mi duda:
- Hay una tabla llamada "Almacenes" en cada base de datos.
- Uso un ClientDataSet para "Almacenes" de Movil-1 (el resultado de una query)
* Existe algun metodo/forma para utilizar el "resultado/filas" del ClientDataSet para añadir las filas a la tabla "Almacenes" de la base de datos Movil-2

- Basicamente mi deseo no es solo añadir el resultado de este clientDataset, tambien deseo hacer update o delete de las filas de este clientDaset a la otra tabla de la otra base de datos. (segun sea el caso a una condicion que manejariá) ...
gatosoft responde:
Cita:

Lo que buscas es una replicación en línea... para esto la mayoría de las bases traen esta funcionalidad para que se haga de forma automática en línea o periódicamente, pero esperando que la base destino no sea transaccional, es decir, solo es un repositorio de replciación como medida de seguridad....

Hay un articulo muy interesante de Pablo Reyes en "Embarcadero Developer Network" llamado Reconciliación de errores de actualización. revisa especialmente el apartado: "Registros modificados", en este muestra una forma para Visualizar los registros que han sufrido modificaciones en el ClientDataset.... el código clave es:

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  stStatusFiler: TUpdateStatusSet;
begin
  stStatusFiler := [];
  if CHKModified.Checked then
    stStatusFiler := stStatusFiler + [usModified];
  if CHKInserted.Checked then
    stStatusFiler := stStatusFiler + [usInserted];
  if CHKDeleted.Checked then
    stStatusFiler := stStatusFiler + [usDeleted];
  (DSParts.DataSet as TClientDataSet).StatusFilter := stStatusFiler;
end;


Gracias gatosoft

Your friend

Startkill
Lima-Perú


La franja horaria es GMT +2. Ahora son las 18:14:34.

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