Como copiar datos al seleccionar un combor

Tengo el siguiente código:

Private Sub Cuadro_combinado50_AfterUpdate()
    Dim vMatr As String
    Dim vNom As String
    vMatr = Me.Cuadro_combinado50.Value
    If IsNull(vMatr) Then Exit Sub
    vNom = DLookup("[CARP]", "DatosVarios", "[Responsable]='" & vEnc & "'")

    Me.Responsable.Value = vNom
End Sub

Al ejecutarlo me da el siguiente error: 94 en tiempo de ejecución, uso no válido de Null, ya intenté re definir ambas vmatr y vnom a variant entonces no me da error pero no copia nada.

¿Alguien puede ayudarme?.

2 Respuestas

Respuesta
2

Tienes dos opciones alternativas:

1º/ Cambia " Dim vMatr As String" por "Dim vMatr As Variant"

o

2º/ Cambia las lineas:

  vMatr = Me.Cuadro_combinado50.Value
    If IsNull(vMatr) Then Exit Sub

por estas otras:

  vMatr = Nz(Me.Cuadro_combinado50.Value,"")
    If vMatr="" Then Exit Sub

Una disculpa la redacción estaba mal:

Private Sub Cuadro_combinado56_AfterUpdate()
    Dim vMatr As String
    Dim vNom As String
    vMatr = Me.Cuadro_combinado56.Value
    If IsNull(vMatr) Then Exit Sub
    vNom = DLookup("[CARP]", "DatosCARP", "[Encargado]='" & vNom & "'")

    Me.Responsable.Value = vNom

End Sub

Lo que estoy entendiendo es que vMatr no es null pues lo estoy escogiendo de un combo y siempre tiene un valor pero hice una nueva tabla donde no hay nada nulo es decir todas las celdas están llenas y me sigue dando el mismo error, que podría ser?, lo que quiero es que me copie el valor de encargado de la tabla Datos CARP a la tabla actual en Responsable.

Muchas gracias y saludos!:

Si declaras una variable como String, no le puedes pasar un valor Nulo.

No dices en qué línea te marca el error, pero supondré que es en la del DLookup, que no devuelve ningún valor, y supondré además, que vuelves a tener mal la redacción, porque esta línea tiene poco sentido:

vNom = DLookup("[CARP]", "DatosCARP", "[Encargado]='" & vNom & "'")

y querrías poner:

vNom = DLookup("[CARP]", "DatosCARP", "[Encargado]='" & vMatr & "'")

Resumiendo, y para que puedas comprobar si el dlookup te devuelve valor o no y puedas analizar si es o no correcto:

Private Sub Cuadro_combinado56_AfterUpdate()
    Dim vMatr As String
    Dim vNom As String
    vMatr = Nz(Me.Cuadro_combinado56,"")
    If vMatr="" Then 
      MsgBox "No has seleccionado nada"
      Exit Sub
    End If
    vNom = Nz(DLookup("[CARP]", "DatosCARP", "[Encargado]='" & vMatr& "'"),"")
    If vNom="" Then
        Msgbox "No se ha encontrado el responsable"
    Else
        Me.Responsable.Value = vNom
    End If
End Sub

Un favor ahora me pone que hay un error de compilación: se esperaba separador de listas o ) en la línea de

vNom = Nz(DLookup("[CARP]", "DatosCARP", "[Encargado]='" & vMatr& "'"),"")

Ya procedió, ahora lo que me pone es "no se ha encontrado al responsable" por lo que el que está devolviendo null es Dlook up, pero no entiendo porque?

Pues la explicación es bien sencilla, no hay ningún valor en la tabla DatosCARP cuyo campo [Encargado] sea igual al valor que has seleccionado en el combo y tienes en vMatr.

Si la construcción del DLookUp es correcta o no, yo no lo puedo saber. Comprueba que el valor que devuelve el combo sea un dato tipo string (es decir, que no te devuelva un número como puede ser el id del encargado) y además que sean los que se corresponden con el campo Encargado de tu tabla...

Respuesta
1

No acabo de entender la lógica, analizas vMatr y en cambio usas vEnc que no tiene ningún control previo y puede ser el nulo, ... lo suyo sería proteger todos los posibles valores con la función Nz:

 vNom = Nz(DLookup("[CARP]", "DatosVarios", "[Responsable]='" & Nz(vEnc,"") & "'"),"")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas