Programación General > Visual Basic 6.0 e inferiores
Re: Clonar registros a otra tabla
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
[#] Página Siguiente
Ir a la versión completa