Insertar x registros en una tabla |
Responder | Página 12> |
Autor | ||
mfafa
Asiduo Unido: 23/Septiembre/2009 Localización: España Estado: Sin conexión Puntos: 497 |
Tema: Insertar x registros en una tabla Enviado: 30/Mayo/2019 a las 18:58 |
|
Hola, Buenas tardes!
Tengo dos tablas (Tabla1 y Tabla2) con los siguientes campos: Id (autonumérico)y Nombre. La Tabla2: Id y Adjunto. Para copiar los Id y los nombres (8 registros en total) de la Tabla1 a la Tabla2, esto lo consigo con el siguiente código:
Pero me salta el error 3021 no hay reg. Activo. Lo que necesito que me copie estos dos items tantas veces que tiene un mes, es decir, si el mes es enero que me repita 3 veces los registros y se pare en 7º registro. La idea final es crear un calendario anual y ajustar los nombres a los días del calendario. Muchas Gracias. |
||
mfafa
Asiduo Unido: 23/Septiembre/2009 Localización: España Estado: Sin conexión Puntos: 497 |
Enviado: 30/Mayo/2019 a las 23:19 | |
Hola!
Voy a subir el archivo en la nube a ve r si alguien me pueda echar una mano. http://www.filebig.net/files/vCksgcibCK como se observa que hay dos tablas 1 y 2. en la tabla2 hay 365 registros (el año 2019), lo que necesito es llenar los otros campos por los otros 8 registros. Lo he conseguido en parte pero me falta repetir los mismos 8 registros hasta el final de año. Muchas Gracias. |
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14017 |
Enviado: 31/Mayo/2019 a las 10:03 | |
Vamos a comentar el código:
Antes de poner líneas de código aquí y allá, a ver si por casualidad funcionan, lo que hay que hacer es un esquema, paso a paso, de lo que queremos que haga un código, una vez que eso funcione (de un modo lógico) es cuando empezaremos a codificar en el lenguaje de programación que estemos usando. Empieza por el principio, y haz este esquema que te digo, con él conseguirás tu propósito, ... cuando seas un 'perro viejo' en esto de la programación podrás escribir código mirando a la pantalla directamente (yo todavía me hago esquemas de procesos en algunas rutinas 'chungas' de programar). |
||
mfafa
Asiduo Unido: 23/Septiembre/2009 Localización: España Estado: Sin conexión Puntos: 497 |
Enviado: 31/Mayo/2019 a las 20:46 | |
Hola!
Muchas gracias por responder Jesús! He conseguido con este código que me copie los 8 registros que existen en la tabla1 en la tabla2, pero no consigo que se vuelva a copiar tantas veces como registros tenga esta tabla que son 365 registros (Fecha del 1-01-2019 al 31-12-2019)
Seguiré investigando. |
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14017 |
Enviado: 31/Mayo/2019 a las 21:15 | |
¿Podrías poner el código que has puesto comentando lo que hace cada línea?
|
||
mfafa
Asiduo Unido: 23/Septiembre/2009 Localización: España Estado: Sin conexión Puntos: 497 |
Enviado: 31/Mayo/2019 a las 21:56 | |
Hola!
De nuevo Muchas gracias por responder Jesús!
Gracias |
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14017 |
Enviado: 31/Mayo/2019 a las 23:16 | |
Traducido al cristiano: - pone los campos id y nombre del registro 1 de la tabla1 en el registro 1 de la tabla 2 - pone los campos id y nombre del registro 2 de la tabla1 en el registro 2 de la tabla 2 ... A tener en cuenta: - si en la tabla 2 hay menos registros que en la tabla1, solo se copiarán este número de registros ignorándose el resto de los que tenga la tabla1 - además te cascará el rs2.Edit ya que no tendrá registro que editar Por cierto, si la tabla1 tiene registros ese bucle no se va a ejecutar nunca ya que: Do Until Not rs.eof -> Not Rs.eof es True ... y supongo que eso no es lo que quieres que haga ¿no?... Veamos, plantéate que quieres hacer y cómo quieres hacerlo, escribe en pseudocódigo la secuencia de acciones que hay que realizar para conseguir lo que quieres y una vez que lo tengas hecho y sea correcto, pasas a codificarlo. |
||
mfafa
Asiduo Unido: 23/Septiembre/2009 Localización: España Estado: Sin conexión Puntos: 497 |
Enviado: 01/Junio/2019 a las 00:13 | |
Hola!
Lo que quiero hacer me lo sé, pero no tengo ni idea como se hace. Seguiré probando! Gracias de nuevo. |
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14017 |
Enviado: 01/Junio/2019 a las 09:33 | |
Si quieres seguir con el método de ir probando códigos a ver si alguno funciona ... es una opción, pero dudo muchísimo que encuentres uno que haga exactamente lo que quieres.
De todas formas te voy a proponer dos opciones: www.mvp-access.com/foro/curso-de-access-y-vba_forum19.html">Curso de Eduardo Olaz http://www.mvp-access.com/foro/para-empresas-contrate-aqu-profesionales_forum21.html">Contrate a profesionales
Editado por Mihura - 01/Junio/2019 a las 09:49 |
||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14734 |
Enviado: 01/Junio/2019 a las 10:52 | |
Yo creo que algo más falta en esa demanda.
Lo que yo he entendido: - tienes 8 registros en la tabla1 (pueden se 8 o 80, para el caso en lo mismo) - quieres insertar esos 8 registros en una tabla2 365 veces (una por cada día del año) Si es así, en la tabla 2 creo que falta un campo Fecha porque si no obtendrás 8 veces 365 registros iguales.. Con esas premisas cogemos papel y lapiz y empezamos a hacer un esquema de lo que queremos. Seria algo así: - abrir recordsets. El de la tabla1 (rs1) como solo lectura, el de la tabla2 (rs2) solo para añadir, - abrir un bucle de 365 iteraciones (dias) - en cada iteración: - situarte en el primer registro del rs1 - iterar por los 8 registros de rs1 - en cada iteración: - lanzar un addnew en el rs2 - crear una fecha - guardar los valores: Id, nombre y fecha - guardar el registro del rs2 - moverte al siguiente registro de rs1 - siguiente dia - cerrar recordsets Una vez queda claro y lo hemos repasado para ver que no nos dejamos nada lo trasladamos a código. El paso de papel a código no lo deberias hacer completo. Empieza con las acciones más "exteriores" y ves llegando al "centro". Más o menos: - declarar variables - abrir y cerrar recordsets - bucle 365 - bucle por rs1 - inserción de datos en rs2 Cada ejecución de código la haces paso a paso y analizas el contenido de las variables en la ventana de inmediato y/o inspección. Esa técnica aplica a TODO en programación. Un saludo
|
||
mfafa
Asiduo Unido: 23/Septiembre/2009 Localización: España Estado: Sin conexión Puntos: 497 |
Enviado: 06/Junio/2019 a las 17:46 | |
Buenas!
Me fue difícil conseguirlo con el metodo RecordSet DAO,. lo maximo que he conseguido es rellenar toada la tabla con un nombre sólo. Gracias a la ayuda que he recibido de otra fuente he podido conseguirlo con consultas. Si alguien es capaz de conseguirlo como le planteado inicialmente le agradecería que me lo compartiera conmigo. Os dejo el enlace de como le he conseguido. http://www.filebig.net/files/4TpyrsiZVM |
||
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: en línea Puntos: 3859 |
Enviado: 06/Junio/2019 a las 19:29 | |
Pues solo por sugerir
Numero ="select count(*) from tabla1" for n = 1 to Numero rs.MoveFirst next n Un saludo. Luis |
||
El Búho es un pajarraco
|
||
mfafa
Asiduo Unido: 23/Septiembre/2009 Localización: España Estado: Sin conexión Puntos: 497 |
Enviado: 06/Junio/2019 a las 22:28 | |
Buenas!
Nada, me sigue dando el el mismo resultado, sólo en inserta una vez los 8 nombres. Gracias Luis. |
||
jilo
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador Unido: 19/Diciembre/2004 Localización: TAFALLA Estado: Sin conexión Puntos: 959 |
Enviado: 07/Junio/2019 a las 10:35 | |
Hola Me he bajado tu ejemplo y la verdad me pierdo con las consultas. Yo cuando hay que crear algo como lo que tu quieres suelo hacerlo con tablas. Me creo una tabla (Como una tabla auxiliar) con los campos como los necesito y borro o actualizo o lo que sea, a mi antojo. Así que partiendo de esta premisa en vez de explicartelo te dejo tu ejemplo apañado, a ver si es lo que necesitas. https://1drv.ms/u/s!AlIYhsQ9-og1gRsl6JZL5GosQKrI?e=FJJSxs Saludos
|
||
Espero te sirva !!!!!!
Iñaki |
||
mfafa
Asiduo Unido: 23/Septiembre/2009 Localización: España Estado: Sin conexión Puntos: 497 |
Enviado: 09/Junio/2019 a las 22:06 | |
Buenas!
Muchísimas gracias Iñaki por la solución, me sirve y es otra opción más para solucionar mi duda. De tanto darle vueltas por fin encontré la solución como lo había planteado inicialmente. Dejo el código aquí para añadir otra opción más.
Muchas gracias a todos. Un saludo. |
||
Responder | Página 12> |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |