Programación General > Visual Basic 6.0 e inferiores

 Re: Clonar registros a otra tabla

(1/2) > >>

Jordi_BCN:
Hola, mi pregunta es la siguiente:

Mi base de datos, tiene 2 tablas identicas, y me gustaria saber como poder "clonar" datos de una tabla a otra, sin que se borren de la primera, es decir, me quedaria el registro clonado en las dos tablas. Podriamos decir que seria la facturacion automatica de un programa de facturacion ( coges un albaran y lo facturas, es decir clona ese registro a la tabla de las facturas, es parecido a lo que quiero.

Muchas gracias amigos:)

Brroz:
Sería tan sencillo como leer el registro de una tabla y grabarlo en la otra con AddNew (si el registro no existe) o Edit (si existe) o con un SQL (INSERT o UPDATE).

Si lo que necesitas es actualizar la tabla con los registros de la otra que no existen en la primera y sin saber que registros son estos (o cuántos son), podrías hacer un proceso de actualización con un SQL de este estilo:

INSERT INTO Tabla2 SELECT * FROM Tabla1 WHERE CampoTabla1 NOT IN (SELECT CampoTabla2 FROM Tabla2)

A ver si te vale.
Sort.

Jordi_BCN:
A ver si he entendido bien:

CampoTabla1, es el registro q se clonara, verdad?

Si quiero copiar 6 campos, seria asi:
campotabla1,campotabla12,campotabla13 ( separeado por "," )

CampoTabla2 es donde se clonara campotabla1 si?
Gracias .

Brroz:
La 'traducción' del SQL sería algo así como...

Añade a TABLA2 todos los registros de TABLA1 que cumplan la condición de que el valor de su CAMPO CLAVE (o no clave, o varios campos en vez de uno,... pero no nos liemos) no se encuentre en el CAMPO equivalente de la TABLA2.

Es decir:

Tabla1 = Tabla original
Tabla2 = Clon de Tabla1
CampoTabla1 = Campo de Tabla1 que identifica el registro (podrías usar varios campos, vaya clave unica.)
CampoTabla2 = equivalente a CampoTabla1 pero en Tabla2.

Pero ojo con una cosa: este SQL no te garantiza que las dos tablas vayan a contener los mismos registros (pudiera ser que Tabla2 tuviera otros registros que no están en  Tabla1). Podrías usar un SQL similar pero a la inversa, actualizando Tabla1.

También podrías hacer otra cosa (santo remedio) si el número de registros te lo permite):

DELETE FROM Tabla2

INSERT INTO Tabla2 SELECT * FROM Tabla1

Espero haberme expresado con algo más de claridad.

Sort.

J.M.Movilla:
Si yo fuera catedrático, ten por seguro, amigo Brroz, que te daría un 10 por lo bien que te has explicado para que Jordi_BCN entienda la SQL con la que pasarán los registros de la Tabla1 a la Tabla2.  Pero me da la impresión de que Jordi lo que tiene es una Tabla1 de Albaranes servidos y no facturados, y una Tabla2 de los mismos datos cuando ya hayan sido facturados...

Vamos a ver, Jordi...  ¿Y no te resultaría más simple añadir a esa Tabla1 un campo de FechaFactura, e incluso otro campo de FechaAbono?

Si tú tienes FechaFactura con valor = Null, ES UN ALBARÁN (no facturado)... El día que lo facturas actualizas FechaFactura y YA ES FACTURA (como si lo hubieras pasado a Tabla2, pero con sólo ponerle la fecha al campo FechaFactura)...  Igual harías con la FechaAbono, para luego hacer las consultas con WHERE FechaFactura = Null para extraer los Albaranes, con WHERE FechaFactura <> Null And FechaAbono = Null para obtener las Facturas pendientes de abonar y WHERE FechaFactura <> Null And FechaAbono <> Null para saber lo Factura y ya Cobrado...

Creo que te lías mucho con lo de dos tablas para un mismo concepto...

Saludos y suerte

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa