Insertar un valor en un campo mediante VBA

He creado un inputbox para que me pregunte por un dato, que posteriormente tendrá que añadir en un campo de una tabla en cuestión. Este es el código:

Private Sub Etiqueta134_Click()
    Dim valoracion As String
    valoracion = InputBox("Valoración")
    CurrentDb.Execute "Insert into CLeyendo ([Valoracion]) Values ('" & valoracion & "')"
End Sub

El problema que me encuentro es que, claro, ¿cómo sabe Access qué registro es? Había pensado en utilizar WHERE, pero no sé muy bien cómo especificarlo. Había pensado algo similar a esto:

WHERE TLibros.Titulo=Me.Titulo

Sí, eso no puede ir así, pero no sé cómo escribirlo.

1 Respuesta

Respuesta
2

Si usas una SQL de tipo INSERT te añadirá un registro nuevo siempre cada vez que se ejecute, por lo que no tiene sentido (ni se puede) usar un WHERE en ella.

Si lo que quieres es actualizar un registro existente debes usar una SQL de tipo UPDATE, en cuyo caso debes usar obligatoriamente un WHERE, salvo que quieras actualizar toda la tabla.

En tu caso, como supongo que quieres actualizar la valoración de un libro existente, este sería e código:

Private Sub Etiqueta134_Click()
    Dim valoracion As String
    valoracion = InputBox("Valoración")
    CurrentDb.Execute "UPDATE CLeyendo SET [Valoracion]='" & valoracion & "' WHERE Titulo='" & Me.Titulo & "'"
End Sub

Eso suponiendo que valoración sea un dato de texto, al igual que Titulo

Hola.

Me da error "El objeto no admite esta propiedad o método".

La valoración es un número. Sin embargo, he probado con una cadena de texto en otro campo que sí es texto, y también me da el mismo error.

No sé qué estaré haciendo mal.

¡Gracias!

Pues quitando lo de que valoración no es texto, la SQL presuntamente está bien, pero el código deberías ajustarlo al tipo de dato que manejas:

Private Sub Etiqueta134_Click()
    Dim valoracion As Integer 'O Long, Double... el mismo que hayas puesto en el campo valoración en la tabla
    valoracion = InputBox("Valoración")
    CurrentDb.Execute "UPDATE CLeyendo SET [Valoracion]=" & valoracion & " WHERE Titulo='" & Me.Titulo & "'"
End Sub

Ahora bien, digo que la SQL está presuntamente bien (https://www.w3schools.com/sql/sql_update.asp ), porque me quedan varias dudas:

.- CLeyendo supongo que es una consulta y que es editable, si no, tendrás que cambiarlo por el nombre de la tabla donde tengas el campo valoracion

.- La consulta CLeyendo (o la tabla por la que la cambies) tiene un campo de texto llamado Titulo

.- En el formulario donde tienes el botón también existe un control llamado Titulo, que tiene un valor de texto

Solucionado.

El error era doble por mi parte. Primero, para la Valoracion, no estaba poniendo Double. En segundo lugar, no había un campo con el título en el formulario.

Arreglado eso, ya funciona. Además, he probado con texto y también.

Muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas