Botón de comando que grabe todos los datos de una consulta en una tabla en access

Según voy avanzando me van surgiendo más problemas, menos mal que con la ayuda que facilitáis, creo que llegaré al final

Mi pregunta es: tengo un formulario en blanco donde tengo diferente botones que llaman a otros formularios, pero quiero crear uno que tome algunos campos de una consulta de selección con campos agrupados y los guarde en una tabla

Por ejemplo:

La consulta Ctotalesventas los campos [numped][nombre][totalbultos][totaliva]... Los pase a una tabla FACTURAS a los campos [numfac] [nombre][bultos][ivaven]...

1 respuesta

Respuesta
1

Una opción, podría ser crear una consulta de datos anexados para eso.

1º/ Haces una copia de tu consulta Ctotalesventas

2º/ La abres en Vista diseño, y en el ribbon, en "tipo de consulta" seleccionas "Anexar"

3º/ Te pedirá la tabla a la que quieres anexar los datos (en tu caso FACTURAS)

4º/ Luego sólo tienes que ir seleccionando los campos de destino en la fila "Anexar a:" que aparece en la parte de abajo del diseño de la consulta.

Ups, me olvidaba. En el botón de comando, le generas este código:

DoCmd.SetWarnings False 'Para desactivar los avisos de confirmación

DoCmd.OpenQuery "qryAnexarCompras"

DoCmd.SetWarnings True

Sólo tendrás que cambiar el nombre de la consulta, de qryAnexarCompras al que tu le hayas puesto.

Hola Sveinbjorn El Rojo siempre estas ahí para echarme una mano.

Veras lo que me dices es lo primero que pensé pero llevo todo el fin de semana intentando hacerlo y no lo consigo me da el siguiente error

Microsoft Access ha establecido 0 campos en nulo debido a un error en la conversión de tipos y no ha agregado 22 registros a la tabla debido a infracciones de claves, 0 registros debido a infracciones de bloqueos y 0 registros debido a infracciones de reglas de validación.

22 son los registros de prueba que tengo en la consulta.

De verdad lo he hecho de todas las maneras, he comprobado los tipos de datos, los formatos y son iguales.

Estoy completamente atascada porque no encuentro explicación a lo que yo creía que seria lo más sencillo.

Gracias por tu paciencia

Lo que te dice el mensaje de error es que al intentar copiar los 22 registros infringes alguna regla del campo clave de la tabla de destino (FACTURAS), por ejemplo, intentas asignarle un valor a un campo autonumérico, no le asignas valor al campo clave o le asignas valores repetidos y el campo clave no los permite.

Sin ver la BD no te puedo decir nada más concreto, pero imagino que el problema está en que tu campo [numfac] es clave principal (y por tanto no permite duplicados), pero no es autonumérico.

Revisa esas cosas y me cuentas.

Muchas gracias, el campo que me estaba dando el error era el del [Cifcliente] que estaba puesto en sin duplicados, eso me vale en la tabla Clientes pero en la de Facturas sino llega a ser porque me has dado la orientación me estaba volviendo loca.

Repito muchas gracias

Ahora el problema lo tengo en que al anexar, el campo [clave] lo tengo sin duplicados, hay alguna forma que al anexar, si hay registros que ya han sido anexados que no se vea el mensaje de error y se pueda continuar.

Tengo otra duda pero haré una nueva pregunta.

Gracias

Si pusiste en el código el DoCmd. SetWarnings False antes de ejecutar la consulta, ya no te deberían aparecer los mensajes de access. Si ejecutas la consulta directamente te seguirán apareciendo.

Tendrías la posibilidad de desactivar todos los mensajes de Access (pero no te lo recomiendo): saca las propiedades de la BD (botón de office/pestaña archivo -> opciones de access -> Avanzadas y desmarcas la casilla confirmar consultas de acción.

Buenos días,

entiendo en tu respuesta que no me aconsejas el desactivar todos los mensajes y por el contrario si ejecuto la consulta directamente me seguirán apareciendo.

Ves alguna forma de poder hacerlo que tu me recomiendes?

Es correcto, no te aconsejo desactivar todos los mensajes porque en caso de que te ocurra algún error en otro proceso o lo que sea, no te vas a enterar.

Mi consejo es que ejecutes siempre la consulta desde un botón en un formulario, con el DoCmd.SetWarnings False antes de ejecutarla y DoCmd. SetWarnings True después, para que así, te desactive sólo los avisos en el momento de ejecutarla y los vuelva a activar después.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas