Cómo recuperar los elementos seleccionados en un cuadro de lista de selección múltiple como una cadena delimitada por comas en Microsoft Access
Este artículo se aplica a archivos de base de datos de Microsoft Access (.mdb o .accdb), o de proyecto de Microsoft Access (.adp).
Moderado: requiere aptitudes básicas de macro, codificación e interoperabilidad.
Resumen
En este artículo se describe cómo recuperar elementos seleccionados de un cuadro de lista de selección múltiple y, a continuación, almacenar los elementos seleccionados como una cadena delimitada por comas en Microsoft Access.
Más información
En Microsoft Access, el valor de la propiedad MultiSelect del cuadro de lista en un formulario o en un informe determina si el cuadro de lista es un único cuadro de lista de selección o un cuadro de lista de selección múltiple. En un cuadro de lista de selección múltiple, puede seleccionar varios elementos de lista a la vez.
Puede usar la propiedad Value del cuadro de lista para recuperar el elemento seleccionado del cuadro de lista. Sin embargo, al usar un cuadro de lista de selección múltiple e intentar recuperar los elementos seleccionados mediante la propiedad Value, la propiedad Value devuelve Null.
Puede recuperar los elementos seleccionados en un cuadro de lista de selección múltiple y, a continuación, almacenar los elementos seleccionados como una cadena delimitada por comas mediante programación. Para ello, siga estos pasos:
Inicie Microsoft Access.
Abra la base de datos de ejemplo Northwind.
En la sección Objetos de la ventana Base de datos, haga clic en Formularios.
Nota En Access 2007, haga clic en Diseño de formulario en el grupo Formularios de la pestaña Crear .
En el panel derecho, haga doble clic en Crear formulario en la vista Diseño.
Nota En Access 2007, omita este paso.
Agregue los siguientes controles al formulario y, a continuación, establezca las propiedades de los controles según lo especificado:
List Box ---------------------------------------------------- Name : NamesList Row Source Type : Table/Query Row Source : SELECT First Name FROM Employees Multi Select : Extended Width : 3.5" Height : 0.75" Text Box ----------------------- Name : mySelections Width : 3.5" Height : 0.25" Command Button ---------------------------------- Name : testmultiselect Caption : Display Selected Items Width : 1.375" Height : 0.3" Command Button ---------------------- Name : ClrList Caption : Clear List Width : 1.375" Height : 0.3"
En el menú Ver, haga clic en Código.
Nota En Access 2007, haga clic en Ver código en el grupo Herramientas de la pestaña Diseño .
Pegue el código siguiente en la Editor de Visual Basic:
Option Compare Database
Option Explicit
Private Sub Form_Current()
Dim oItem As Variant
Dim bFound As Boolean
Dim sTemp As String
Dim sValue As String
Dim sChar As String
Dim iCount As Integer
Dim iListItemsCount As Integer
sTemp = Nz(Me!mySelections.Value, " ")
iListItemsCount = 0
bFound = False
iCount = 0
Call clearListBox
For iCount = 1 To Len(sTemp) + 1
sChar = Mid(sTemp, iCount, 1)
If StrComp(sChar, ",") = 0 Or iCount = Len(sTemp) + 1 Then
bFound = False
Do
If StrComp(Trim(Me!NamesList.ItemData(iListItemsCount)), Trim(sValue)) = 0 Then
Me!NamesList.Selected(iListItemsCount) = True
bFound = True
End If
iListItemsCount = iListItemsCount + 1
Loop Until bFound = True Or iListItemsCount = Me!NamesList.ListCount
sValue = ""
Else
sValue = sValue & sChar
End If
Next iCount
End Sub
Private Sub clearListBox()
Dim iCount As Integer
For iCount = 0 To Me!NamesList.ListCount
Me!NamesList.Selected(iCount) = False
Next iCount
End Sub
Private Sub testmultiselect_Click()
Dim oItem As Variant
Dim sTemp As String
Dim iCount As Integer
iCount = 0
If Me!NamesList.ItemsSelected.Count <> 0 Then
For Each oItem In Me!NamesList.ItemsSelected
If iCount = 0 Then
sTemp = sTemp & Me!NamesList.ItemData(oItem)
iCount = iCount + 1
Else
sTemp = sTemp & "," & Me!NamesList.ItemData(oItem)
iCount = iCount + 1
End If
Next oItem
Else
MsgBox "Nothing was selected from the list", vbInformation
Exit Sub 'Nothing was selected
End If
Me!mySelections.Value = sTemp
End Sub
Private Sub clrList_Click()
Call clearListBox
Me!mySelections.Value = Null
End Sub
Cierre el editor de Visual Basic.
Guarde el formulario como Form1.
Cierre el formulario.
Abra el formulario Form1 en la vista Formulario:
En la sección Objetos de la ventana Base de datos , haga clic en Formularios.
Nota En Access 2007, en el panel de navegación, haga clic en el grupo Formularios .
En el panel derecho, haga clic con el botón derecho en Form1 y, a continuación, haga clic en Abrir.
Nota En Access 2007, haga clic con el botón derecho en Form1 y, a continuación, haga clic en Abrir.
Seleccione varios elementos en el cuadro de lista. Para ello, haga clic en un elemento del cuadro de lista, mantenga presionada la tecla CTRL y, a continuación, haga clic en más elementos del cuadro de lista.
Haga clic en Mostrar elementos seleccionados.
Los elementos seleccionados en el cuadro de lista de selección múltiple se muestran como una cadena delimitada por comas en el cuadro de texto.
Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía, ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Se considera que está familiarizado con el lenguaje de programación que se muestra y con las herramientas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de