** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Seleccionar registros
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Seleccionar registros

 Responder Responder
Autor
Mensaje
Algodondulce Ver desplegable
Nuevo
Nuevo


Unido: 15/Septiembre/2024
Localización: España
Estado: Sin conexión
Puntos: 26
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Algodondulce Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Seleccionar registros
    Enviado: 11/Octubre/2024 a las 23:01
Buenas tardes, necesito vuestra ayuda.
Tengo un formulario con un subformulario continuo. Me gustaria que los usuarios pudieran seleccionar uno o varios registros. ¿como lo hago?

Había pensado en poner una casila de verficación, para saber que registros estan seleccionados, el problema es que el subformulario toma los datos de una tabla alojada en un servidor a la tengo acceso de lectura, es decir, que puedo añadir campos a la tabla.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 11/Octubre/2024 a las 23:19
Podrías copiar los registros a una tabla local y ahí añadir el campo que te falta.

Yo no usaría un subformulario, pondría los datos en un cuadro de lista y habilitando la selección múltiple ya tienes el problema resuelto.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 12/Octubre/2024 a las 12:18
Hola,

Si los registros con continuos también se puede tener mostrado el selector de registros y se podrán seleccionar con el ratón.

Si los registros con discontinuos, casi mejor la opción de Jesús.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
Algodondulce Ver desplegable
Nuevo
Nuevo


Unido: 15/Septiembre/2024
Localización: España
Estado: Sin conexión
Puntos: 26
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Algodondulce Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Octubre/2024 a las 09:04
Si habilito el selector de registros, ¿Como se cuales estan seleccionados por vba?
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Octubre/2024 a las 09:30
¿Qué tal andamos de VBA? Porque las soluciones que he visto son todas parecidas y se basan en este código de Dev Ashish Forms: Determine selected records in datasheet view (mvps.org)

(visto eso, la solución de Jesús parece bastante más simple)

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
Algodondulce Ver desplegable
Nuevo
Nuevo


Unido: 15/Septiembre/2024
Localización: España
Estado: Sin conexión
Puntos: 26
Opciones de entrada Opciones de entrada   Gracias (1) Gracias(1)   Cita Algodondulce Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Octubre/2024 a las 13:50
Xavi en el enlace dice..."Lamentablemente, el evento que ejecuta este código debe estar presente detrás del evento OnTimer del formulario o una barra de herramientas personalizada separada. Esto se debe a la hecho de que la selección es válida sólo mientras el foco de control esté en la hoja de datos. Tan pronto como el foco se mueve a otro control (por ejemplo, cuando hace clic en un botón de comando), la selección se invalida y las propiedades antes mencionadas no ser de alguna utilidad."

Adaptando el código sería:

Option Compare Database
Dim PrimerRegistro, Seleccionados As Integer

Private Sub Form_Timer()
PrimerRegistro = Me.SelTop
Seleccionados = Me.SelHeight
Me.TimerInterval = 3000
End Sub

Private Sub btn_calcular_Click()
MsgBox "Total registros seleccionados: " & Seleccionados & Chr(13) & _
            "Primer registro seleccionado: " & PrimerRegistro & Chr(13) & _
            "Ultimo registro seleccionado: " & PrimerRegistro + Seleccionados - 1
End Sub

Me puede valer Xavi. 
Gracias a los dos por responder tan rápido.


Editado por Algodondulce - 13/Octubre/2024 a las 13:53
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Octubre/2024 a las 14:07
Bien por esa solución Wink
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Algodondulce Ver desplegable
Nuevo
Nuevo


Unido: 15/Septiembre/2024
Localización: España
Estado: Sin conexión
Puntos: 26
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Algodondulce Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Octubre/2024 a las 19:10
He encontrado una solución a mi problema de seleccionar registros. recuerdo mi problema:
1. No puedo crear una casilla de verficación en el subformulario pq al marcar 1 se marcarian todas.
2. No puedo crear una casilla en el origen de datos pq no tengo permiso de escritura.

Solución:
 ¿Y si engaño al usuario con un formato condicional?
Si pinto la fila de un color, el usuario creera la fila esta seleccionada.
Luego, recorro todas las filas y me quedo con las que estan del color rojo.

Requisitos:
En el formulario principal vamos a crear dos objetos:
- una casilla de verificación (llamada 'casilla_seleccionada') 
- un cuadro de texto (llamado 'txt_fila_Seleccionada') oculto.

La logica del procedimiento es:
Si el usuario quiere seleccionar filas, que marque la casilla Seleccionar filas.
Cuando haga clic sobre un registro este se coloreará de color rojo, y si estaba rojo, volverá a su color original.
Para conseguir esto uso un cuadro de texto oculto, donde iré anotando los registros seleccionados separados por un espacio.

Formato condicional de los campos del subformulario
Pinto de rojo si el [id] del registro esta contenido en el txt_fila_Seleccionada
EnCad(1;Formularios![Frm_Personas]![txt_Fila_Seleccionada];[idPersona])

En el evento al activar un registro del Subformulario:
If Parent.casilla_seleccionada = True Then
    If InStr(1, Parent.txt_Fila_Seleccionada, IdPersona) > 0 Then
        Parent.txt_Fila_Seleccionada = Replace(Parent.txt_Fila_Seleccionada, IdPersona, "")
    Else
        Parent.txt_Fila_Seleccionada = Parent.txt_Fila_Seleccionada & " " & IdPersona
    End If
End If
Me.Recalc



Editado por Algodondulce - 13/Octubre/2024 a las 19:26
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Octubre/2024 a las 19:39
Si tienes un ratito prueba lo de usar una lista con selección múltiple, que se inventaron para lo que tú estás montando.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Algodondulce Ver desplegable
Nuevo
Nuevo


Unido: 15/Septiembre/2024
Localización: España
Estado: Sin conexión
Puntos: 26
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Algodondulce Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Octubre/2024 a las 19:43
tambien es verdad. Gracias
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable