Imprimir página | Cerrar ventana

Error Sentencia Update

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=81148
Fecha de impresión: 19/Octubre/2019 a las 14:06


Tema: Error Sentencia Update
Publicado por: arcangelcaos
Asunto: Error Sentencia Update
Fecha de publicación: 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.



Respuestas:
Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: arcangelcaos
Fecha de publicación: 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.


Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: arcangelcaos
Fecha de publicación: 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



Imprimir página | Cerrar ventana