Access - Insertar datos seleccionados de una consulta a una tabla

 
Vista:
sin imagen de perfil
Val: 38
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por Angel (113 intervenciones) el 08/03/2019 19:38:19
Hola a todos los foreros y muchas gracias desde ya por la ayuda!
Tengo un formuario con una consulta incrustada. El mismo al abrirse y mostrar la consulta muestra por ejemplo 1000 registros. El usuario al ir aplicando filtros puede terminar teniendo 10 registros. Pregunta cómo puedo insertar estos registros directamente a una tabla?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por Norberto (753 intervenciones) el 12/03/2019 10:14:08
Hola:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Private Sub cmdExportar_Click()
    Dim RstO As DAO.Recordset, RstD As DAO.Recordset 'Definimos las variables para los recordsets
    Dim Campo As DAO.Field
 
    On Error GoTo cmdExportar_Click_Err
 
    Set RstO = Me.RecordsetClone    'Cargamos la variable RstO con el clon del recordset del formulario
                                    'así tendremos los registros que se muestran en este momento
 
    Set RstD = CurrentDb.OpenRecordset("Tabla Destino") 'Abrimos la tabla de destino
 
    If RstO.RecordCount > 0 Then RstO.MoveFirst 'Vamos al primer registro
 
    Do Until RstO.EOF   'Repetiremos hasta llegar al final del recordset de origen
        RstD.AddNew 'Añadimos un nuevo registro a la tabla de destino
        For Each Campo In RstO.Fields   'Para cada campo del origen
            If (Campo.Attributes And dbAutoIncrField) = 0 Then 'Si el campo no es autoincrementado
                RstD.Fields(Campo.Name) = Campo 'Cargamos el valor del campo al equivalente de la tabla de destino
            End If
        Next Campo  'Repetimos para cada campo
        RstD.Update 'Guardamos los cambios del registro
 
        RstO.MoveNext   'Vamos al siguiente registro del origen
        DoEvents
    Loop
 
    GoTo cmdExportar_Click_Fin
 
cmdExportar_Click_Err:
    If Err = 3022 Then 'No se puede añadir porque ya existe ese registro
        RstD.CancelUpdate   'Cancelamos la actualización y seguimos
        Resume Next
    ElseIf Err = 3078 Then  'No existe la tabla de destino
        MsgBox "No existe la tabla de destino."
        RstO.Close
        Set RstO = Nothing
        Exit Sub
    ElseIf Err = 3265 Then
        MsgBox "La estructura de la tabla de estino no es válida. No existe el campo '" & Campo.Name & "."
        RstD.CancelUpdate
        GoTo cmdExportar_Click_Fin
    Else
        MsgBox "Error " & Err & ": " & Err.Description
    End If
 
cmdExportar_Click_Fin:
 
    'Cerramos los recordsets
    RstO.Close
    RstD.Close
 
    'Vaciamos las variables de objeto usadas
    Set Campo = Nothing
    Set RstO = Nothing
    Set RstD = Nothing
 
End Sub

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 38
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por Angel Andrés (113 intervenciones) el 13/03/2019 14:08:50
Hola Norberto. Muchas gracias por tu solidaridad. Verás no sé si logré explicarme bien. Yo he logrado el fin no sé si de la mejor forma pero logré hacer lo que necesitaba. Comparto contigo un pdf dónde te muestro lo que me quedó. verás son más de 30 campos a los que el usuario puedo aplicar filtros. (Tipo Excel). Espero con la ilustación quede más claro mi pedidio. Acepto recomendaciones luego de ver como lo hice. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de miguel
Val: 501
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por miguel (306 intervenciones) el 12/03/2019 13:45:49
simplemente crea una consulta de datos agregados con los filtros seleccionados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por Norberto (753 intervenciones) el 12/03/2019 13:58:08
¿Con los datos filtrados de un formulario? ¿Cómo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de miguel
Val: 501
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por miguel (306 intervenciones) el 12/03/2019 20:45:44
Vamos a ver como te lo explico:
vamos a suponer una tabla de clientes con diferentes campos y otra tabla clientes2 con algunos campos similares a la anterior, por ejemplo, codigo, nombre y dni.
creas un formulario para seleccionar los datos que quieres ver y donde aplicar la seleccion (adjunto imagen)
el formulario esta basado en el siguiente select
1
2
3
SELECT Cliente.Id_cliente, Cliente.Nombre_cliente, Cliente.Nit
FROM Cliente
WHERE (((Cliente.Id_cliente) Like "*" & Formularios!VCLIENTES!CODIGOL & "*") And ((Cliente.Nombre_cliente) Like "*" & Formularios!VCLIENTES!CLINOML & "*") And ((Cliente.Nit) Like "*" & Formularios!VCLIENTES!CLIDNIL & "*"));

esto te permite seleccionar los registros que te interesan.
creas una segunda consulta igual que la integras en un boton y cuando tengas en pantalla los datos que te interesan lo pulsas y agregas a la segunda tabla los datos seleccionados.
el select de la segunda consulta seria por ejemplo:
1
2
3
4
INSERT INTO Cliente2 ( Id_cliente, Nombre_cliente, Nit )
SELECT Cliente.Id_cliente, Cliente.Nombre_cliente, Cliente.Nit
FROM Cliente
WHERE (((Cliente.Id_cliente) Like "*" & [Formularios]![VCLIENTES]![CODIGOL] & "*") AND ((Cliente.Nombre_cliente) Like "*" & [Formularios]![VCLIENTES]![CLINOML] & "*") AND ((Cliente.Nit) Like "*" & [Formularios]![VCLIENTES]![CLIDNIL] & "*"));

si no se entiende enviadme una direccion de email y os envio un ejemplo practico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 38
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por Angel Andrés (113 intervenciones) el 13/03/2019 13:50:20
Hola Miguel cómo estás. No sé si me logré explicar bien. Por ahora tengo una solución que la compartiré contigo dado tu solidaridad conmigo. Verás te envío un PDF en dónde te muestro por pasos cómo tengo hoy armado lo que deseaba hacer. Logré el fin, ahora acepto buenos concejos de gente como vos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de miguel
Val: 501
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por miguel (306 intervenciones) el 13/03/2019 14:24:09
Hola Angel, no se si has visto la respuesta que le di a Norberto que se extrañaba que se pudiera hacer como yo decia. Esta claro que la mejor forma de comprobar algo es haciendo una prueba.
En la forma que yo digo es cuestion de crear el formulario con todos los filtros que vayas a utilizar y una vez que tienes la seleccion con un botos se agrega a la otra tabla.
Logicamente si vas aplicar filtros a todos los campos de una tabla es engorroso cuando hay muchos campos pero si la seleccion suele ser siempre mediante filtros a unos determinados campos es facil de hacer.
si me envias tu email te mando un ejemplo o si me envias las dos tablas te preparo el ejemplo con tus tablas para que lo veas mejor, el unico requisito es que tienes que enviarmelo en formato 2007.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 38
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por Angel Andrés (113 intervenciones) el 13/03/2019 15:31:06
Miguel: Mi problema es que no sé nunca de ante mano que campos se pueden filtrar. Puedo ser de 1 a 32. Es muy dificil saber de ante mano que campos comprondrán el filtro. Lo de Norberto es excelente y lo estoy usando en otros formularios dónde el filtrado siempre se hace por campos determinados. Te dejo mi mail porque me gustaría ver tu ejemplo: [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por Norberto (753 intervenciones) el 20/03/2019 13:30:34
Hola de nuevo:

Ante todo gracias por la respuesta. Sigo sin ver cómo resolver la pregunta original:

Tengo un formuario con una consulta incrustada. El mismo al abrirse y mostrar la consulta muestra por ejemplo 1000 registros. El usuario al ir aplicando filtros puede terminar teniendo 10 registros. Pregunta cómo puedo insertar estos registros directamente a una tabla?

Se supone que el formulario muestra los datos de una consulta (un montonazo de ellos) y el usuario va aplicando filtros de forma que queden unos pocos. Angel no especifica cómo se van filtrando los datos por lo que me imagino que tirando de botón derecho en varios campos y filtrando por contenido. Si es así, tendríamos por un lado la propiedad RecordSource con el nombre de la consulta o la expresión SQL y por otro lado la propiedad Filter. Mi duda es cómo generamos una consulta uniendo ambas dos para luego usarla en una consulta de anexar datos. Como no encontré ninguna propiedad del Recorset resultante de aplicar los filtros (Me.Recordset) es por lo que usé VBA para añadir los registros.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de miguel
Val: 501
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por miguel (306 intervenciones) el 24/03/2019 17:42:53
Pido disculpas por el retraso en responder.
adjunto un ejemplo de un fichero de clientes donde mediante un formulario y subformulario se van seleccionando los registros que cumplen unas determinadas condiciones. Logicamente mediante un formulario no se puede hacer todo lo que podemos hacer trabajando de forma directa con una tabla o con una consulta pero un formulario es una programacion y entonces tiene que estar mas limitado puesto que cuando hacemos un formulario es para que lo utilice un usuario y debe de estar condicionado pero de todas formas se pueden poner tantos filtros como queramos y podamos.
Como he dicho, es solo un ejemplo. Esta totalmente abierto y podeis ver las consultas que he utilizado.
Espero que os pueda servir.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 38
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por Angel (113 intervenciones) el 26/03/2019 17:07:24
Hola a todos y muchas gracias por la colaboración. Finalmente lo que más práctico me quedó es el subform en vista hoja de datos con origen de datos una consulta. El usuario aplica los filtros de manera fácil cómo lo hace en excel y luego cuando tiene los requisitos que considera necesita hace click en un botón que ejecuta una consulta de datos agregado con los campos del subform.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Insertar datos seleccionados de una consulta a una tabla

Publicado por Norberto (753 intervenciones) el 27/03/2019 14:12:55
Hola de nuevo.

Ante todo agradecerte el ejemplo. Es muy útil para filtrar por los campos más habituales y seguro que lo uso más de una vez. El problema que le veo es que si el usuario, por su cuenta realiza un filtro de Access sobre un campo, este no es tenido a la hora de exportar.

Captura

En este caso lo ideal sería poner la propiedad Permitir filtros del formulario en No y obligar a que el usuario realice los filtros a través de los cuadros de texto existentes para ello.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar