Vba Access como referenciar Campos Multivalor con varias columnas

Tengo una tabla con un campo multivalor estoy intentando cargar los datos en un formulario desde un recordset, pero me da error 64224. He creado un recordset especifico para leer el campo multivalor y lo estoy intentando cargar al formulario mediante esta asignación.

[Forms]![frmAnalisisRiesgos]![frmAnalisisRiesgosSUB]![Riesgo1].[Column](1).Value = Riesgo1

2 Respuestas

Respuesta
2

Yo no creo que los campos multivalor sean una m..., pero hay que entenderlos bien para sacarles todo el jugo, porque muchas veces se quieren usar para hacer cosas que serían más sencillas de otra forma...

En la instrucción que pones yo no veo dónde usas el recordset que dices que recoge los valores del campo multivalor... Si el recordset es Riesgo1, para utilizarlo tienes que hacer referencia a su propiedad Value, algo así:

[Forms]![frmAnalisisRiesgos]![frmAnalisisRiesgosSUB]!Form![Riesgo1]= Riesgo1!Value

Además, como te comenta acertadamente Icue, y como parece que el campo está en un subformulario, debes usar la sintaxis que el te indica (es decir, añadir un .Form después del nombre del subformulario)

Neckkito hace tiempo que preparó en su web dos ejemplos para explicar los campos multivalor y su manejo, tanto a través de consultas como de recordsets. A ellos te remito a ver si logras dar con la solución a tu problema, viendo los códigos que usa para manejar lso recordsets de los campos multivalor:

http://neckkito.xyz/nck/index.php/ejemplos/16-controles/125-campos-multivalor 

http://neckkito.xyz/nck/index.php/ejemplos/13-formularios/93-campos-multivalor-en-cascada 

Un saludo.


Hola Sveinbjorn El Rojo, gracias por la respuesta, intento explicarme mejor.

Riesgo1 es el campo Multivalor.  Tomo un RercordSet llamado rstMultivalor y le asigno el campo almacenado en otro recordset llamado rstReg

Set rstMultiValor = rstReg("Riesgo1").Value 

lo que pretendo hacer después es colocarlo en el formulario mediante el bucle, el valor lo coge pero no me permite asignarlo al campo de formulario llamado Riesgo1, que es lo que pretendo hacer con este bucle.

    Do Until rstMultiValor.EOF
        Riesgo1 = rstMultiValor!Value
            [Forms]![frmAnalisisRiesgos]![frmAnalisisRiesgosSUB].Form [Riesgo1] = rstMultiValor!Value
        rstMultiValor.MoveNext
    Loop

Pero me da error me dice que no se admite esta propiedad o método, pero no veo el fallo.

Como no conozco tu BD, y me pierdo un poco con la explicación, creo que te resultará más práctico (y sencillo) cambiar un poco el enfoque y en vez de pasar el valor directamente al control del formulario, pasarlo a la tabla sobre la que trabaja el formulario.

Te adjunto un pequeño ejemplo sacado de una aplicación que llevo usando 3 años en mi trabajo para que lo veas en funcionamiento, y me parece que es algo similar a lo que pretendes conseguir: http://www.filebig.net/files/vi57UTRwgD

¡Gracias! voy a probar a ver si me entero creo que cambiando el enfoque lo puedo conseguir.

Muchas gracias por tu ayuda, finalmente gracias al código que me has mandado lo he conseguido. Gran trabajo. 

Me alegra que te sirviera el ejemplo.

Respuesta
2

Antes de nada, permíteme que te dé mi modesta opinión sobre esos campos. Son una auténtica mierd...

Dicho esto, la instrucción esa no la entiendo. Si Riesgo1 es un control(que supongo que es un combinado) de un formulario tendrías que referirte a el como

Forms! Nombredelformulario! Riesgo1

Por el contrario, si ese control estuviera en un subformulario sería

Forms! Nombredelformulario! Nombredelsubformulario.form! Riesgo1

Desde luego que son una verdadera mierda, pero ya estoy metido en este lio y a ver si consigo salir.

He hecho lo que me comentas, he cambiado la forma de referirme al campo por:

Forms!frmAnalisisRiesgos!frmAnalisisRiesgosSUB.Form!Riesgo1.Value = Riesgo1

Pero me dice que no se puede realizar esta operación

¿Dónde pones la instrucción? ¿Dónde está ese campo multivalor? ¿En qué tabla?

Es que no entiendo que en el evento al cargar de un formulario le digas que el valor de la segunda columna del combinado riesgo1 del subformulario sea igual a riesgo1, ¿y la primera que?

Por ejemplo, yo podría decirle que el valor que muestre un combinado del subformulario sea igual a algo

me.nombredelsubform.form!riesgos1=dlookup(".....

Pero honestamente no entiendo en absoluto esa instrucción.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas