Comando al no estar en lista

Cuando introduzco el código que os muestro, no me funciona, no se abre el formulario. ¿Debo poner el nombre de la tabla y no el formulario? ¿Qué hago mal? Lo que quiero es que me abra el formulario de contactos para introducir un nuevo registro. ¿Hay qué tener el formulario que ha de abrirse con alguna característica especial? ¿O la tabla?
Gracias.
Private Sub Contacte_NotInList(NewData As String, Response As Integer)
    Me.Contacte = 0
    Dim Mensaje, Estilo, Titulo, Respuesta, MiCadena
    Mensaje = "No està a la llista, vols afegir-lo?"
    Estilo = vbYesNo + vbCritical + vbDfaultButton1
    Titulo = "CONTACTES"
    Respuesta = MsgBox(Mensaje, Estilo, Titulo)

    If Respuesta = vbYes Then
        DoCmd.OpenForm "FormContacte"
    Else
        DoCmd.GoToControl "Contacte"
    End If

    Response = acDataErrContinue
End Sub

1 respuesta

Respuesta
1
Lo que no entiendo es porque le colocas el inicio: Me. Contacte = 0. Por otra parte: ¿Tienes en las propiedades del cuadro combinado puesto su característica de "limitar a la lista" a "SI". Por que de lo contrario no se dispara el "newdata" del cuadro combinado.
Un saludo. Me cuentas.
Sinceramente, el código lo cogí de una pregunta hecha en esta página y simplemente, cambié los nombres de los comandos adaptándolos a mi base de datos. Sí tengo limitado a la lista el cuadro combinado.
De todas formas, me estoy dando cuenta de que quizá el código no está correcto porque no veo por ningún lado ni el NewData ni MiCadena.
Cómo podéis ver, no tengo mucha idea, aunque intento ir aprendiendo cada día un poco más.
Gracias.
Alexia
Te paso mi contestación a otro hilo en Todoexpertos, muy parecido a este, puedes leerlo:
http://www.todoexpertos.com/mitodoexpertos/expert/questions/view/2593020/agregar-valores-a-un-cuadro-combinado

Este es el fin de la contestación:
Private Sub Mi_cuadro_combinado_NotInList(NewData As String, Response As Integer) 
  If MsgBox("Quiere agregar un nuevo registro" & vbCr & vbCr, vbExclamation + vbDefaultButton2 + vbYesNo) = vbYes Then 
    DoCmd.OpenForm "Mi_formulario", acNormal, , , , acDialog 
    Me.Mi_cuadro_combinado.Text = "" 
    Me.Refresh 
 End If 
   Response = acDataErrAdded 
End Sub 
En el formulario "mi formulario", pones en el evento al abrir: 
Private Sub Form_Open(Cancel As Integer) 
DoCmd.GoToRecord , , acNewRec 
End Sub 
Lógicamente, en lo que esta en negrita, lo cambias por el nombre de tu cuadro combinado y de tu formulario.
Te explico: lo que hace esto, es que al no existir lo que introduces en el campo combinado, te abre el formulario de donde coge los datos para que lo rellenes. Una ve rellenado aparecerá en el cuadro combinado. Juega con el "newdata" y el "response".

Mira a ver si te sirve.
Pues... no me funciona. Introduzco el código donde me dices y al ejecutar, abre el formulario, introduzco los datos del nuevo registro, pero, al cerrarlo, me sale el error de que el dato introducido no es de la lista, la lista en blanco, en cambio, al ir a la tabla de los contactos, sí que está el que he introducido. ¿Qué hago mal?
Gracias.
Pues lo que haces mal, yo no lo se... Ese código funciona y como puedes comprobar en el hilo que te pase no sólo a mi sino a quien lo utiliza. Entiendo que todo te funciona, te abre el formulario, introduces el nuevo valor y este lo guarda en la tabla correspondiente.
¿Tienes bien puesto el me.mi_cuadro_combinado.text = ""?
¿Qué valor es al que se refiere el cuadro combinado, numero, texto, fecha...?
Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas