Access Visual Basic actualizar un valor de una tabla

Tengo una pequeña duda. Tengo un formulario de facturación. Al seleccionar un cliente, establece automáticamente el valor del % de IVA (obteniéndolo de la ficha del cliente de la Tabla_Cliente) en un campo de texto para calcular el total factura.

Lo que quiero hacer es que si el usuario actualiza el % de IVA en este formulario, lo actualice automáticamente en la tabla "Clientes" para este cliente. He puesto el siguiente código:

Var_IVA = Me![%_IVA]

Var_Referencia = Me![Cliente_Id]

CurrentDb.Execute "UPDATE Tabla_Clientes SET [Tipo IVA]=" & Var_IVA & " WHERE Referencia = " & Var_Referencia

Pero me da error "3144" en tiempo de ejecución, Error de sintaxis en la instrucción UPDATE

¿A qué puede deberse?

3 Respuestas

Respuesta
1

Jon: Dices que la Tabla se llama "Clientes" y le dices que actualice la Tabla_Clientes. Al principio también haces referencia a Tabla_Cliente

Lo primero, es repasar todos los Nombres y asegurar que se llaman así.

Por último si el Cliente_Id fuera Texto el final sería ..= '" & Var_Referencia & "'"

Un saludo >> Jacinto

Respuesta
1

Pregunto ¿para qué definir unas variables si van a ser iguales al valor de un cuadro de texto?

No sería más cómodo poner

Docmd.runsql"update clientes set [tipo_iva]=" & me.[%iva] & " where referencia=" & me.[cliente_id] & ""

Permíteme un consejo, no le pongas nunca ni a lo campos ni al resto de objetos, con nombres separados. Al hacerlo así, tienes que estar encerrando el nombre entre corchetes. Por otro lado, si a un control le pones, por ejemplo, Nombre Cliente, en el editor de VB, por defecto, lo pone como Nombre_cliente y luego no sabes, si era de la primera forma o de la segunda.

La tabla se denomina Tabla_Clientes y el campo ID_Cliente es autonumérico. ¿Igual me falta poner al final &", es decir:

CurrentDb.Execute "UPDATE Tabla_Clientes SET [Tipo IVA]=" & Var_IVA & " WHERE Referencia = " & Var_Referencia &"

He revisado los nombres y están bien escritos.

Un saludo

Tienes que cerrar con dobles comillas. Una es la que cierra lo de var_referencia y la otra es la que cierra la instrucción Update, o sea

...Var_referencia & ""

Siempre y cuando var referencia sea numérico. Si fuera texto sería

='" &var_referencia & "'"

O sea, apostrofe comillas y cierra comillas apostrofe comillas

Respuesta
1

El error 3144 corresponde a sintaxis de la cláusula UPDATE, primero revisa bien los nombres de los campos, segundo, si el campo Var_IVA contiene decimales Access arroja este error, toda vez, que si la configuración regional de tu Windows tienes definido el separador de decimales la coma (,) dará error, es decir si anotas % de IVA como 2,5 obtendrás el error, este valor debe ser en formato USA, algo como 2.5 . Igualmente no olvides que cuando hagas referencia a campos texto en UPDATE estos deben ir encerrados en entre comillas.

Te paso una función que elaboré hace un tiempo para actualizar campos que contengan decimales. Debes crear un modulo VBA y adicionarla.

Public Function CambiaDecimal(mstrtxt As Variant) As String

'función para suprimir la "," y cambiar por "." en la sentecia UPDATE y evitar error
'Elaborada por: EDUARDO PEREZ FERNANDEZ -República de Colombia
'Fecha: 01/02/2002

    Dim encuentra As Integer
    Dim tem As String

    encuentra = InStrRev(mstrtxt, ",")

    If encuentra > 0 Then    ' hay decimal
        tem = Replace(mstrtxt, ",", ".", 1)
        CambiaDecimal = tem
    Else
        CambiaDecimal = mstrtxt
    End If

End Function

En este caso puedes llamarla desde el UPDATE de la siguiente forma:

CurrentDb.Execute "UPDATE Tabla_Clientes SET [Tipo IVA]=" & CambiaDecimal(Var_IVA) & " WHERE Referencia = " & Var_Referencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas