Ver Mensaje Individual
  #7  
Antiguo 16-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 28
Lepe Va por buen camino
Siguiendo la línea de roman, usa FlushBuffers en el AfterPost, despues cierra la tabla y la copias.

Si aún sigue dando fallos, puedes ir por la caché de escritura de windows en segundo plano, por defecto está activa y no fuerza la escritura a disco.

Acabo de subir el truco 352 que permite ver el estado de la caché en windows y desactivarla.

En cuanto al TBatchMove, es un método del TTable, simplemente tienes que darle un Dataset con los datos a insertar, y el método de inserción, (la tabla de destino debe existir, es decir, usa el Database desktop para copiarla, y despues borra sus registros):

En el siguiente ejemplo, creo una Qry seleccionando los datos, y despues se añaden a la tabla tblFacturasH (histórico de facturas).

Ten cuidado con el orden al insertar registros si usas relaciones Master-Detail, como siempre, primero se inserta en el Maestro y despues en el Detalle:
Código Delphi [-]

    qry := Tquery.Create(NIL);
    try
      qry.DatabaseName := DTM.tblFacturas.DatabaseName;
      qry.SessionName  := DTM.tblFacturas.SessionName;
      qry.SQL.Clear;
      qry.SQL.Add('select * from  Factura where nfactura = ' + QuotedStr('22235') + ';');
      qry.Prepare;
      qry.Open;
      if not qry.IsEmpty then
        dtmH.tblFacturasH.BatchMove(qry, batAppendUpdate); 
// pasamos la factura desde el qry al tblFacturasH
      qry.Close;
    finally
      FreeAndNil(qry);
    end; // finally

Estudia los parámetros que lleva el BatchMove para usar el que necesites.

Saludos y suerte.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 16-07-2006 a las 10:28:00.
Responder Con Cita