none
Asignar adjunto a un campo de otra tabla mediante VBA RRS feed

  • Pregunta

  • Hola, buenas a todos.

    En Access, tengo una tabla con un campo (denominado Foto) del tipo Datos adjuntos. En esta tabla, tengo varios registros creados y, en cada uno, asignado un fichero al campo Foto. Lo que quiero hacer es, mediante código, asignar el archivo adjunto de ese campo a otro campo idéntico de otra tabla, es decir, hacer una asignación así: TABLA2.FOTO = TABLA1.FOTO

    He provado con los siguiente. Desde un formulario asociado a la Tabla2, busco el valor del campo Foto del registro correspondiente (a través del campo IdEjercicio) en la Tabla1 (EJERCICIOS) para asignárselo al campo FotoPersonal de la Tabla2:

    1        Dim dbs As Database
    2        Dim rsParent, rsChild As Recordset
    3        Dim tabla As Recordset
    4        
    5        Set dbs = CurrentDb
    6        Set rsParent = Me.Recordset
    7   
    8        rsParent.Edit
    9   
    10       Set rsChild = rsParent.Fields("FotoPersonal").Value
    11       Set tabla = dbs.OpenRecordset("SELECT * FROM EJERCICIOS WHERE IdEjercicio=" & IdEjercicio.Value)
    12      
    13       rsChild.AddNew
    14       rsChild.Fields("FileData").Value = tabla.Fields("Foto").Value.Fields("FileData").Value
    15       rsChild.Update
    16        
    17       rsParent.Update

    18

    19        rsChild.Close
    20        rsParent.Close
    21        dbs.Close
           
            Set rsChild = Nothing
            Set rsParent = Nothing
            Set dbs = Nothing

    Al ejecutar el proceso, me aparece un error cuando llega  a la línea 15:

    "Se ha producido el error 3058 en tiempo de ejecución"

    El índice o la clave principal no puede contener un valor Null.

    Alguien sabe que estoy haciendo mal?

    miércoles, 6 de agosto de 2014 8:11

Todas las respuestas

  • Hola!

    Emperezaré por decirte que desde mi punto de vista estás cometiendo dos errores conceptuales garrafales, uno, nunca guardes una foto en una tabla, dos, nunca repitas un dato almacenado en una base de datos.

    En cuanto a tu error, creo que el mensaje lo deja claro, la tabla FotoPersonal tiene un campo que no permite valores nulos y no estás escribiendo nada en el, razón por la que no pasa la validación al tratar de guardarlo..


    Saludos a todos desde Huelva Emilio http://www.mvp-access.es/emilio/

    miércoles, 6 de agosto de 2014 19:49
  • Hola Emilio.

    Desde mi punto de vista estoy de acuerdo con tus comentarios sobre los errores pero, donde manda patrón no manda marinero. Son especificaciones del cliente que no puedo cambiar aunque le explique todos los inconvenientes que puede llevar a cabo este planteamiento.

    Dicho esto, no entiendo lo que me especificas sobre el error: FotoPersonal es un campo, no una tabla. Y dicho campo es un campo de la tabla asociada al formulario donde tengo este código, cuyos campos restantes ya tengo asignados. Es decir, que estoy en Tabla2 donde he asignado, por ejemplo, el IdEjercicio = 1, NombreEjercicio = 'Nombre ejercicio" y me falta asignar el valor del campo FotoPersonal. Dicho valor quiero que sea igual al archivo adjunto en la Tabla1 que tiene como valor IdEjercicio = 1, valor que busco en el recordset tabla.

    Gracias por tu comentario

    jueves, 7 de agosto de 2014 5:29