Restar filas de una misma columna

En Access (¿con SQL?), de una TABLA por, restar registros (filas) de una misma columna, de la siguiente forma:
Restar valor segundo - valor primero
Restar valor tercero - valor segundo
... Y así sucesivamente
Gracias de antemano

1 respuesta

Respuesta
1
Lo que pides está clarísimo, pero si me pudieras dar algún detalle de la finalidad de esta operación podría ser un poco más concreto en la respuesta.
Ya me dirás.
Hola,
En una base de datos cualquiera. Hay una TABLA en la que cada una de las filas de la misma COLUMNA, posee un valor que incrementa cada día, semana, mes,... da igual. Necesito calcular la diferencia del valor entre las fechas. La COLUMNA esta ordenada de menor a mayor fecha. Por eso, restar la fila 2 - fila 1, y por ejemplo generar resultado en una nueva TABLA o mediante una CONSULTA, restar fila 3 - fila 2, añadir resultado a la TABLA anterior y así sucesivamente.
Siento si no me explico bien, acabo de iniciarme en ésto de Access.
Gracias!
Lamento la tardanza en contestar, pero he estado de exámenes. ¡Ayer hice el último!
Te contesto a lo que quieres hacer, a ver si la solución que te propongo te es útil:
1.- Coges la tabla donde tienes los datos (yo la he llamado Tabla1) y le añades un campo, que llamaremos [Dif], y que será de tipo numérico.
2.- Creas un formulario en blanco y lo pones en vista diseño. En él pones un botón de comando (cancelas el asistente). Haces click con la derecha sobre él y seleccionas "Generar evento...", y en la ventana que te aparece le dices que quieres generar código.
3.- Se te abrirá el editor de VB. Entre las dos líneas que te salen por defecto (que debes dejar como están) pones el siguiente código:
---
Private Sub Comando0_Click()
Dim rst As Recordset
Dim vIni, vFin As Variant
Set rst = CurrentDb.OpenRecordset("Tabla1", dbOpenTable)
If rst.RecordCount = 0 Then Exit Sub
'---Rellenamos el primer registro
rst.MoveFirst
With rst
.Edit
.Fields("Dif").Value = 0
.Update
End With
vIni = rst.Fields("Valor").Value
rst.MoveNext
'---Cálculo para el resto de registros
Do Until rst.EOF
vFin = rst.Fields("Valor").Value
vFin = vFin - vIni
With rst
.Edit
.Fields("Dif").Value = vFin
.Update
End With
vIni = rst.Fields("Valor").Value
rst.MoveNext
Loop
MsgBox "Proceso realizado correctamente", vbInformation, "OK"
rst.Close
Set rst = Nothing
End Sub
---
Y eso es todo. Si pones el formulario en vista formulario y haces click sobre el botón te rellenará el campo Dif con la diferencia de días entre las fechas.
Recuerda que si tienes otros nombres debes cambiar Tabla1 por el nombre de tu tabla, y valor por el nombre de tu campo con la fecha (te lo he marcado en negrita en el código).
Ya me dirás qué tal te ha ido.
No he recibido noticias tuyas. ¿Ha ido todo bien?
Ya me dirás.
Siento no haber podido contestar antes, he estado fuera.
Funciona perfectamente. Muchas gracias, eres un crack
Quizás te moleste en breves, con alguna pequeña duda, respecto al tema. Espero no te importe.
Gracias de nuevo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas