Programación de botones en Access

Estoy comenzando a utilizar access y tengo una duda con las macros que a diferencia de Excel no encontré la forma de grabar acciones como habitualmente lo hacia en Excel, lo que necesito básicamente es copiar y pegar unos registros en otros... Que al presionar el botón "traer datos inferiores" copie los datos de los registros numerados con 4, 5, 6 y los copie en los registros 1, 2, 3, o que cuando presione "traer datos superiores" copie los registros 1, 2, 3 y los pegue en 4, 5, 6, esto me evitaría tener que copiarlos manualmente, muchas gracias.

1 Respuesta

Respuesta
2

Quiero dejar claro que no entiendo el diseño de lo que pones en pantalla, ni como tienes construidas las tablas, pero si tengo la tabla Otra

Donde puedes ver el orden.

También tengo una tabla Aux

Con ella hago un formulario donde le añado los dos botones que dices

Si pulso el botón de la izquierda

Si pulso el botón de la derecha

El código de los botones es

Private Sub Comando10_Click()
DoCmd.SetWarnings False
DoCmd. RunSQL "insert into aux(idcliente, nombrecliente, pais, nombrecontacto)SELECT TOP 3 idcliente, NombreCliente, Pais, NombreContacto FROM Otra ORDER BY IdCliente asc"
Me.Requery
End Sub
Private Sub Comando9_Click()
DoCmd.SetWarnings False
DoCmd. RunSQL "insert into aux(idcliente, nombrecliente, pais, nombrecontacto)SELECT TOP 3 idcliente, NombreCliente, Pais, NombreContacto FROM Otra ORDER BY IdCliente DESC"
Me. Requery
End Sub

Hola Icue, gracias por tu respuesta.

Los datos que intento mover de arriba a abajo y viceversa están en el mismo formulario, y van cambiando en cada búsqueda, en el formulario tienen que estar los 6 cuadros de texto , 3 arriba y 3 abajo, esos datos cambian constantemente en cada búsqueda sobre una tabla de miles de registros,  los números en rojo no indican el numero de ID, solo los puse para una mejor comprensión, gracias nuevamente.

¿Pero qué es lo que debe buscar el botón? Es que no me hago a la idea. ¿Acaso es que si pulsas el botón de Traer datos inferiores, en los cuadros de texto de arriba te los rellene con los datos del registro que tenga menor Id(por poner algo) que cumpla una condición y si pulsas Traer datos superiores te ponga los del registro de mayor Id?

Los 3 registros superiores corresponden a:  numero de cliente, fecha de alquiler, y numero de reparto, son datos actuales.

Los 3 registros inferiores corresponden al movimiento anterior, quien fue el cliente anterior, que fecha y que numero de reparto, es lo mismo pero del cliente anterior, o sea... ahora está en el cliente N° 12 y antes estuvo en el cliente N° 91,  los botones no buscan nada en las tablas, solo deberían copiar los 3 registros superiores y pegarlos en los 3 inferiores, nada más, seguramente hay alguna forma mas efectiva de hacerlo, pero bueno... no se hacerlo en access,  en excel lo hice sin problemas, pero las macros funcionan de otra manera.

Básicamente si tuviese que hacerlo en excel, pondría a grabar una macro y después copiaría los registros 1, 2, 3 y los pegaría en 4, 5, 6 y listo... asigno esa macro al botón correspondiente, lo mismo hago con el otro botón, copio 4 ,5, 6 y lo pego en 1, 2, 3, y listo ahí termina todo. la diferencia es que esto es access y esos datos están en un formulario, el mismo que publique al principio y en la misma posición. Gracias Icue!!!

Vamos a ver si lo he entendido. Si tengo una tabla Clientes como la de la imagen

En el formulario voy a "buscar" ese registro y el anterior o posterior. Si tengo un formulario donde en un combinado llamado Elegir selecciono el cliente

Una vez seleccionado

Si ahora pulso Anterior

Es decir, me pone primero los datos del registro anterior y abajo los de el registro seleccionado. Por el contrario, si pulso Posterior

Primero el seleccionado y abajo el posterior

El código del botón Anterior es

Private Sub Comando15_Click()
Texto1 = DLookup("nombrecliente", "clientes", "idcliente=" & Me.Elegir & "-1")
Texto3 = DLookup("pais", "clientes", "idcliente=" & Me.Elegir & "-1")
Texto5 = DLookup("nombrecontacto", "clientes", "idcliente=" & Me.Elegir & "-1")
Texto7 = DLookup("nombrecliente", "clientes", "idcliente=" & Me.Elegir & "")
Texto9 = DLookup("pais", "clientes", "idcliente=" & Me.Elegir & "")
Texto11 = DLookup("nombrecontacto", "clientes", "idcliente=" & Me.Elegir & "")
End Sub

El código del botón Anterior es

Vamos a ver si lo he entendido. Si tengo una tabla Clientes, donde voy a "usar" el marcado con la flecha

En un formulario tengo un "buscador", que es un combinado Elegir, donde en sus propiedades-Datos-Origen de la fila le tengo puesto

SELECT IdCliente, NombreCliente FROM Clientes;

Si selecciono ese cliente

El formulario me queda

Cuando pulso Anterior

Es decir, arriba el registro anterior al cliente ese, y si por el contrario pulso Posterior

O sea, abajo el posterior

El código del botón Anterior es

Private Sub Comando15_Click()
Texto1 = DLookup("nombrecliente", "clientes", "idcliente=" & Me.Elegir & "-1")
Texto3 = DLookup("pais", "clientes", "idcliente=" & Me.Elegir & "-1")
Texto5 = DLookup("nombrecontacto", "clientes", "idcliente=" & Me.Elegir & "-1")
Texto7 = DLookup("nombrecliente", "clientes", "idcliente=" & Me.Elegir & "")
Texto9 = DLookup("pais", "clientes", "idcliente=" & Me.Elegir & "")
Texto11 = DLookup("nombrecontacto", "clientes", "idcliente=" & Me.Elegir & "")
End Sub

Y el código del botón Posterior es

Private Sub Comando16_Click()
Texto1 = DLookup("nombrecliente", "clientes", "idcliente=" & Me.Elegir & "")
Texto3 = DLookup("pais", "clientes", "idcliente=" & Me.Elegir & "")
Texto5 = DLookup("nombrecontacto", "clientes", "idcliente=" & Me.Elegir & "")
Texto7 = DLookup("nombrecliente", "clientes", "idcliente=" & Me.Elegir & "+1")
Texto9 = DLookup("pais", "clientes", "idcliente=" & Me.Elegir & "+1")
Texto11 = DLookup("nombrecontacto", "clientes", "idcliente=" & Me.Elegir & "+1")
End Sub

Como te decía al principio, al no saber como está construida tu tabla uso el Idcliente, pero podría ser cualquier otro valor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas