• Domingo 22 de Diciembre de 2024, 14:44

Autor Tema:  Insertar De Una Tabla A Otra Por Sql  (Leído 4848 veces)

   

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Insertar De Una Tabla A Otra Por Sql
« en: Miércoles 20 de Octubre de 2004, 17:29 »
0
Saludos comunidad

Tengo el problema de buscar registros de varias tablas y meter esos datos que encuentre en una tabla vacia.
Las tablas de donde se obtendra la informacion son Masivos, Contratados, Dist Masiva y Servicios Internacionales.  La Tabla a menter los registros encontrados en esas tablas se llama REPORTE.

Como seria la sentencia SQL de INSERT INTO para buscar en 4 tablas los registros que se buscaran por Rango de Fecha y que esos registros encontrados los meta en la tabla REPORTE.

La siguiente sentencia SQL me busca por Rango de Fechas y otros parametros y me lo muestra en una rejilla MSFlexGrid que esta en un Form llamado Reporte, hasta ahi todo bien:

Código: Text
  1.  
  2. SQL1 = "SELECT Gestion, Fecha, Cantidad, Oficina, Servicio FROM MASIVOS WHERE Fecha BETWEEN '" & ReporteFechaDesde & "' AND '" & ReporteFechaHasta & "' AND Oficina= '" & Oficina & "' AND Servicio= '" & Servicio & "'"
  3.  
  4.  

Pero como meto estos registros encontrados en la Tabla REPORTE que esta vacia con los mismos campos esperando la informacion.

Nuevamente muchas gracias por toda la ayuda que me puedan aportar.
Saludos.

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Insertar De Una Tabla A Otra Por Sql
« Respuesta #1 en: Miércoles 20 de Octubre de 2004, 18:48 »
0
Hola.
La consulta tendría esta forma:

INSERT INTO NombreTabla ( lista campos) SELECT lista tabla.campo FROM lista tablas WHERE condiciones

Por ejemplo:

INSERT INTO resultados (Nombre, Apellido, NotaF) SELECT Alumno.Nombre,Alumno.Apellido,Notas.NotaF FROM Alumno,Notas WHERE Alumno.Id=COD and Notas.Id=COD

   

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Re: Insertar De Una Tabla A Otra Por Sql
« Respuesta #2 en: Miércoles 20 de Octubre de 2004, 19:44 »
0
Saludos que tal DiabloRojo,

Muy agradecido por tu ayuda amigo, he indicado la sintaxis que me has indicado, la ha escrito en base a mi sentencia SQL, de esta forma:

Código: Text
  1.  
  2. SQL3 = "INSERT INTO REPORTE (Gestion, Fecha, Cantidad, Oficina, Servicio) SELECT MASIVOS.Gestion, MASIVOS.Fecha, MASIVOS.Cantidad, MASIVOS.Oficina, MASIVOS.Servicio WHERE Fecha BETWEEN '" & ReporteFechaDesde & "' AND '" & ReporteFechaHasta & "' AND Oficina= '" & Oficina & "' AND Servicio= '" & Servicio & "'"
  3.  
  4.  

Pero me indica el siguiente error:
Citar
Error de sintaxis (falta operador) en la expresion de consulta 'MASIVOS.Service WHERE Fecha BETWEEN '19/10/2004' AND '19/10/2004' AND Oficina='MBO' AND Servicio='MASIVOS'

El error hace referencia a MASIVOS.Service aunque en la sentencia SQL esta indicado como MASIVOS.Servicio, no sabria a que se debe el error de la sentencia, pero pienso que la sintaxis de la variable SQL3 es casi correcta al menos en un 95% pero en que seccion corregiria la sintaxis para que funcione la sql.

Nuevamente muchas gracias a la comunidad y a los participantes en particular por la ayuda.

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Insertar De Una Tabla A Otra Por Sql
« Respuesta #3 en: Miércoles 20 de Octubre de 2004, 21:08 »
0
Qué tal?
Pues no veo la cláusula FROM en ninguna parte de tu consulta. Imagino que debe ser eso. Por cierto, ¿con qué manejador de base de datos estás trabajando?.


DiabloRojo

   

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Re: Insertar De Una Tabla A Otra Por Sql
« Respuesta #4 en: Jueves 21 de Octubre de 2004, 18:53 »
0
Disculpa, si efectivamente falto el FROM al momento de colocarlo en el post, pero si aparece en el código, ya el visual había indicado sobre este error de sintaxis en la sql, pero igual no he logrado que funcione como deberia.  Se agregaron unos campos más a las tablas.

Esta es la sentencia SQL que conecto a un Data control hacia una BD Access:

Código: Text
  1.  
  2. SQL3 = "INSERT INTO REPORTE (Fecha, Dias_Habiles, Mes, Oficina, Servicio, Remesados, Recibidos, No_Entregados, Faltante, Equivocados, Cantidad, Gestion) SELECT MASIVOS.Fecha, MASIVOS.Dias_Habiles, MASIVOS.Mes, MASIVOS.Oficina, MASIVOS.Servicio, MASIVOS.Remesados, MASIVOS.Recibidos, MASIVOS.No_Entregados, MASIVOS.Faltante, MASIVOS.Equivocados, MASIVOS.Cantidad, MASIVOS.Gestion FROM MASIVOS WHERE Fecha BETWEEN '" & ReporteFechaDesde & "' AND '" & ReporteFechaHasta & "' AND Oficina= '" & Oficina & "' AND Servicio= '" & Servicio & "'"
  3.  
  4.  

Data1.RecordSource = SQL3
El Data se encuentra conectado a un MSFlexGrid en la ventana mostrando el resultado de su ejecución sql

Pero al momento de ejecutarlo, indica el error de: Operación no valida

La SQL ha funcionado solo en el VisData del VB en la parte donde se escriben sentencias SQL para ejecutar.
Esta es la misma SQL de arriba pero quitando las variables y cambiandola por valores:

Código: Text
  1.  
  2. INSERT INTO REPORTE (Fecha, Dias_Habiles, Mes, Oficina, Servicio, Remesados, Recibidos, No_Entregados, Faltante, Equivocados, Cantidad, Gestion) SELECT MASIVOS.Fecha, MASIVOS.Dias_Habiles, MASIVOS.Mes, MASIVOS.Oficina, MASIVOS.Servicio, MASIVOS.Remesados, MASIVOS.Recibidos, MASIVOS.No_Entregados, MASIVOS.Faltante, MASIVOS.Equivocados, MASIVOS.Cantidad, MASIVOS.Gestion FROM MASIVOS WHERE Fecha BETWEEN '16/10/2004' AND '18/10/2004' AND Oficina= 'MBO' AND Servicio= 'MASIVOS'
  3.  
  4.  

Esta SQL al ejecutarse en el VisData si toma los registros de la Tabla MASIVOS por rango de fecha y por Oficina y Gestion y si los Guarda en la Tabla REPORTE que se inicia vacia.  Pero al usarla nuevamente en el código del VB con las variables Servicio, Oficina, ReporteFechaDesde y ReporteFechaHasta las cuales traen sus datos desde otras ventanas anteriores antes de llegar a la de Reporte, no se ejecuta la SQL apareciendo el error: Operación no valida

Entonces, porque sucede el que la SQL si se ejecuta en el VisData en su ventana de Instrucción SQL pero produce error en el VB.

   

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Re: Insertar De Una Tabla A Otra Por Sql
« Respuesta #5 en: Jueves 21 de Octubre de 2004, 19:45 »
0
Todo arreglado:

BD.Execute (SQL3)

SQL3 inserta todos los registros encontrados en base a los parametros ya indicados (rango de fecha, oficina y tipo de servicio) en la Tabla REPORTE que se inicia vacia y otra sentencia SQL se encarga de mostrar el contenido de la Tabla Reporte.

Muchas gracias por darle seguimiento al problema amigo DiabloRojo, es un muy buen foro.... saludos.