La plataforma de Yahoo Respuestas cerrará definitivamente el próximo 4 de mayo de 2021 y solo estará disponible en modo de lectura. Ningún otro producto de Yahoo ni tu cuenta personal se verán afectados por este cambio. Si necesitas más información sobre el cierre de Yahoo Respuestas y cómo descargar tus datos puedes acceder a esta página de ayuda.

Ayuda por favor con INSERT INTO desde VB para Access 2007?

Tengo el siguiente código:

Private Sub BtnGuardar_Click()

Dim dbs As Database

Set dbs = OpenDatabase("F:\Inventarios\Almacen.accdb")

DoCmd.OpenForm "Partes Nuevas", acNormal

dbs.Execute "INSERT INTO '__InputDet' (Modelo, Qty) " _

& "VALUES (" & Me.Modelo.Text & "', '0');"

dbs.Close

Me.Modelo.Text = ""

End Sub

pero a la hora de la ejecución me lanza el siguiente error:

Se ha producido el error '2185' en tiempo de ejecución:

No se puede hacer referencia a una propiedad o a un método para un control a menos que el control tenga el enfoque.

Qué es lo que puedo hacer para solucionar mi problema?

Por cierto al momento de seleccionar depurar me resalta con color amarillo el parrafo del dbs.Execute, donde esta el INSERT INTO.

1 respuesta

Calificación
  • hace 1 década
    Respuesta preferida

    Sí, es algo común y conocido. Puedes intentar solucionarlo de dos formas distintas:

    1ª Dale el foco de ejecución al control antes de invocar la propiedad, me explico:

    Antes de la instrucción:

    dbs.Execute "INSERT INTO '__InputDet' (Modelo, Qty) " _

    & "VALUES (" & Me.Modelo.Text & "', '0');"

    Escribe:

    Me.Modelo.SetFocus

    En el caso en que no te deje hacer esto anterior, o bien no desees que al volver al formulario te encuentres con el foco de ejecución en un cuadro de texto en el que no quieres que esté, recurre al método 2:

    2º: Usar la propiedad por defecto: La propiedad por defecto de un control de tipo textBox es la propiedad Text, por tanto, no hagas referencia a ella. Y en la sentencia de inserción escribe:

    dbs.Execute "INSERT INTO '__InputDet' (Modelo, Qty) " _

    & "VALUES (" & Me.Modelo & "', '0');"

    Es decir: no hagas referencia a la propiedad Text, que es lo que parece que le molesta al compilador de VBA de Access.

    Date cuenta que esta es una de las limitaciones que Microsoft nos impone en VBA, ya que si no las impusiera, todo el mundo desarrollaríamos sobre Access en vez de emplear los Visual Studio.

    Espero que vaya todo bien, un Saludo.

    Fuente(s): Fuente: Experiencia personal.
¿Aún tienes preguntas? Pregunta ahora para obtener respuestas.