Imprimir página | Cerrar ventana

Seleccionar registros

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86992
Fecha de impresión: 26/Marzo/2026 a las 17:27


Tema: Seleccionar registros
Publicado por: Algodondulce
Asunto: Seleccionar registros
Fecha de publicación: 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.



Respuestas:
Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: xavi
Fecha de publicación: 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

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Algodondulce
Fecha de publicación: 13/Octubre/2024 a las 09:04
Si habilito el selector de registros, ¿Como se cuales estan seleccionados por vba?


Publicado por: xavi
Fecha de publicación: 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  http://access.mvps.org/access/forms/frm0033.htm" rel="nofollow - 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

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Algodondulce
Fecha de publicación: 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.


Publicado por: Mihura
Fecha de publicación: 13/Octubre/2024 a las 14:07
Bien por esa solución Wink

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

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Algodondulce
Fecha de publicación: 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



Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Algodondulce
Fecha de publicación: 13/Octubre/2024 a las 19:43
tambien es verdad. Gracias



Imprimir página | Cerrar ventana