** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Error Sentencia Update
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoError Sentencia Update

 Responder Responder
Autor
Mensaje
arcangelcaos Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 15/Noviembre/2012
Localización: España
Estado: Sin conexión
Puntos: 236
Enlace directo a este mensaje Tema: Error Sentencia Update
    Enviado: 25/Octubre/2015 a las 10:18
Hola, estoy intentado actualizar una base datos para adaptarla a los cambios que necesito.
Uso el siguiente código

Dim db As Database
Dim rsCompras As Recordset
Dim rsGasto As Recordset
Dim sql As String
Dim rsArticulos As Recordset
Dim numero As Double

Set db = CurrentDb
sql = "SELECT IdArticulo FROM Articulos WHERE Fitosanitario = " & -1 & ""
Set rsArticulos = db.OpenRecordset(sql)

Do Until rsArticulos.EOF
    sql = "SELECT Albaran.FechaAlb, AlbaranDetalle.Articulo, AlbaranDetalle.Cantidad, AlbaranDetalle.Precio, AlbaranDetalle.IdDetaAlbaran, AlbaranDetalle.Usado, AlbaranDetalle.Gastado " _
       & "FROM Albaran INNER JOIN AlbaranDetalle ON Albaran.IdAlbaran = AlbaranDetalle.IdAlbaran " _
       & "WHERE AlbaranDetalle.Articulo = " & rsArticulos![IdArticulo] & " ORDER BY Albaran.FechaAlb "
    Set rsCompras = db.OpenRecordset(sql)

    TotalGastado = Nz(DSum("[Cantidad]", "TratamientosSub", "Producto = " & rsArticulos![IdArticulo]), 0)
    If TotalGastado > 0 Then
     Gastado = 0
        Do Until Gastado >= TotalGastado Or rsCompras.EOF
            Gastado = rsCompras![Cantidad]
                If Gastado <= TotalGastado Then
                    db.Execute "UPDATE AlbaranDetalle SET Usado = " & rsCompras![Cantidad] & " , Gastado =" & -1 & " WHERE IdDetaAlbaran = " & rsCompras![IdDetaAlbaran] & ""
                Else
                    numero = rsCompras![Cantidad] - (Gastado - TotalGastado)
                    db.Execute "UPDATE AlbaranDetalle SET Usado = " & numero & "  WHERE [IdDetaAlbaran] = " & rsCompras!IdDetaAlbaran & ""
                End If
        rsCompras.MoveNext
        Loop
    End If
rsArticulos.MoveNext
Loop

En la línea roja me da el error. Me dice error de sintaxis. Y no tengo ni idea de por que.
La tabla AlbaranDetalle existe. El Campo Usado existe y es tipo double.
La cosa es que sí en vez de poner   "& numero &"  pongo  un numero de verdad  "& 5 &" si que me hace el update, pero no me quiere reconocer esa variable. Y tiene valor, y esta declara como double.

Me estoy volviendo loco, seguro que será alguna cosilla y no consigo verla.

Gracias.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10931
Enlace directo a este mensaje Enviado: 25/Octubre/2015 a las 11:08
Prueba a declarar numero como long en vez de como double.





Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
arcangelcaos Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 15/Noviembre/2012
Localización: España
Estado: Sin conexión
Puntos: 236
Enlace directo a este mensaje Enviado: 25/Octubre/2015 a las 11:33
Gracias, como long si que funciona, pero lo necesito doble, y estoy mas que seguro que esta como doble en la tabla. Porque ya lo comprobé 4 veces mirando y mirando.

No lo entiendo.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10931
Enlace directo a este mensaje Enviado: 25/Octubre/2015 a las 11:44
¿Tiene decimales? ... en ese caso lo que tienes que adecuar el número al formato yanki, es decir, el separador decimal tiene que ser un punto, no una coma (que es lo que hace que la sentencia casque).

Algo así como:

... Usado = " & Replace(CDbl(Numero), ",", ".")  & " WHERE ....



Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
arcangelcaos Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 15/Noviembre/2012
Localización: España
Estado: Sin conexión
Puntos: 236
Enlace directo a este mensaje Enviado: 25/Octubre/2015 a las 12:14
Gracias, al final era eso, no sabia que había que reemplazar la "," por el ".". En las fechas si hay que cambiar el formato, pero en número...

Gracias de verdad

He usado

Replace(numero,",",".")  y funcionado perfectamente

Se puede cerrar
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable