• Lunes 29 de Abril de 2024, 05:40

Autor Tema:  Re: Clonar registros a otra tabla  (Leído 2931 veces)

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Clonar registros a otra tabla
« en: Lunes 25 de Agosto de 2003, 10:30 »
0
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:)
Jordi_BCN ···· Barcelona

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Clonar registros a otra tabla
« Respuesta #1 en: Lunes 25 de Agosto de 2003, 10:56 »
0
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

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Clonar registros a otra tabla
« Respuesta #2 en: Lunes 25 de Agosto de 2003, 12:02 »
0
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 .
Jordi_BCN ···· Barcelona

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Clonar registros a otra tabla
« Respuesta #3 en: Lunes 25 de Agosto de 2003, 12:14 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: Clonar registros a otra tabla
« Respuesta #4 en: Lunes 25 de Agosto de 2003, 13:15 »
0
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

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Clonar registros a otra tabla
« Respuesta #5 en: Lunes 25 de Agosto de 2003, 15:27 »
0
Gracias por tu idea J.M. Movilla, pero creo q deberia utilizar 2 tablas, ya que en la tabla 2 ( facturas ) habra de clonadas y otras q he hecho yo sin facturar, y en albaranes, habria todos los que he hecho a mano. ademas, a parte de albaranes, tb pensaba en facturar los presupuestos...

:-s No se como debo seguir... :question:

Gracias por su ayuda!
Jordi_BCN ···· Barcelona

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Clonar registros a otra tabla
« Respuesta #6 en: Lunes 25 de Agosto de 2003, 16:19 »
0
Ya sabes que cada maestrillo tiene su librillo, pero teóricamente deberías llevar el orden que habitualmente se viene empleando:

1.- Presupuesto (no obligatorio).  Cuando éste se acepta pasan sus datos a

2.- Albarán (siempre debe haber un albarán que controle las salidas de artículos y/o trabajos realizados), y

3.- Factura (para gestionar la contabilidad de los albaranes)

Si a la Tabla1 le añades un campo de NúmPresup y otro de FechaPresup ya tienes la posibilidad de incorporar los presupuestos en la misma tabla general, pudiendo dejar esos dos campos en blanco cuando no hubo presupuesto previo.  Igualmente puedes hacer facturas directas, sin previo albarán (no recomendable) simplemente dejando vacíos los campos NúmAlbarán y FechaAlbarán...

Pero, repito, tú has diseñado tu aplicación de otro modo, pues tú tienes el 100 de razón, y los de fuera (como en el mus...) a callar y dar tabaco...

Que te salga bonito.