Operaciones con filas en tablas access

A ver si me puedes echar un cable.
Tengo una tabla access con dos campos: código y fecha. Necesito generar un tercer campo que contenga la diferencia entre una fecha y la anterior siempre que los códigos coincidan. Es decir, calcular la diferencia entre dos registros consecutivos en el mismo campo ¿eso puede hacerse en una consulta? ¿Tengo qué meterme en el Visual Basic?

1 Respuesta

Respuesta
1
¿Es para un relog horario verdad?
Acabo de contestar parte y te la copio
02/03/2010
Usuario
Hola tengo una columna de un formulario con hoas de entrada y horas de salida pero todas en la misma columna y quisiera saber la diferencia de horas al sacar el formulario.
Ejemplo
09:00
14:00
16:00
19:00
El total de horas tendría que ser 8 horas trabajadas
04/03/2010
Experto
Hola deberías tener una manera de distinguir entre entradas y salidas
si puedes cambia la estructura a hora ingreso y salida
así seria fácil
avisame si puedes
04/03/2010
Usuario
Es lo que me temía. A ver si me puedes ayudar a pasar de columna a fila, te pongo un ejemplo.
Los datos me entran de un reloj y me entran de la siguiente manera
empleado fecha hora
01 20100101 060000
01 20100101 140000
02 20100101 060000
02 20100101 140000
Yo ya los paso de texto a date o time pero lo bueno sria con vb que me los pasara a fila agrupados por empleado y fecha
ejemplo:
Empleado fecha hora1 hora2 hora3 hora4 etc...
01 20100101 060000 140000
02 20100101 060000 140000
Y si el empleado tiene otra fecha pues otra fila, si quieres te mando un ejemplo en access.
04/03/2010
Experto
Hola
Claro, crea varias columnas, ¿por ejemplo 8 4 entradas y 4 salidas ese seria ti limite
lo de pasarlo seria fácil
lo sabes hacer?
En definitiva vamos a crear una tabla con los datos mejor puestos para sacar mejor los reportes y estadística, esto facilitara mucho el resto del programa
Avisa si te sirve
Hola de nuevo. Muchas gracias por tu respuesta.
En realidad no es para un reloj. Te lo explico un poco mejor. Cada código corresponde a un punto donde se realiza un análisis químico, y después hay más campos con los resultados del análisis. Algo así
Código Fecha Resultados
1 1-1-10 blablabla
1 10-1-10 blablabla
1 1-2-10 blablabla
2 15-1-10 blablabla
2 17-1-10 blablabla
Ahora bien, para que dos análisis sean considerados diferentes, deben distar al menos 20 días en el tiempo. Si no, nos quedamos con el primero que aparezca. En este ejemplo, del punto 1 nos quedaríamos por tanto con los análisis de los días 1-1-10 y 1-2-10. El análisis del 10-1-10 lo quitaríamos porque está demasiado cerca del del 1-1-10. Del mismo modo, del punto 2 nos quedaríamos sólo con el análisis del 15-1-10.
Necesito, por tanto, ver que la fila tiene el mismo código que la anterior, y después calcular la diferencia entre su fecha y la anterior, para después evaluar si esta diferencia es mayor que 20 días. Esto lo tenía hecho con un código Visual Basic para Excel y me funcionaba bien ¿puede hacerse lo mismo en Access? ¿Pueden asignarse índices a las filas?
  Mil gracias, experto.
Si el vb de excel es casi igual al de access si quiere me lo envía si no lo hacemos de nuevo
la pregunta mía es
1 1-1-10 blablabla
1 10-1-10 blablabla
1 20-1-10 blablabla
1 25-1-10 blablabla
En este caso agarrarías la primera y la 3ra o la cuarta
1 1-1-10 blablabla
1 10-1-10 blablabla
1 20-1-10 blablabla
1 25-1-10 blablabla
1 1-2-10 blablabla
1 10-2-10 blablabla
1 20-2-10 blablabla
1 25-2-¿10 blablabla
y en este después de agarrar la 3ra o 4ta puede haber más? Siempre para el 1
para empezar
Hola de nuevo. Muchas gracias por tu ayuda.
En el primer ejemplo me quedaría con la primera y con la cuarta. La tercera no porque dista menos de 20 días (19) de la primera. En el segundo ejemplo, me quedaría con la primera, luego con la cuarta y finalmente con la penúltima, porque, como está a más de 20 días de la anterior válida (que es la cuarta), pues ya se considera otro análisis. Es algo que se hace muy fácil en VB con Excel, pero con Access no sé cómo referirme a filas además de a columnas.
Mientras contestaba, me ha surgido otra duda con la que quizá puedas ayudarme también. Resulta que tengo una tabla con campos tipo número doble. En una consulta hago ciertas operaciones sencillas con esos números: dividir por constantes, sumar y dividir, nada más. Pues bien, en una posterior consulta pretendo mostrar el resultado de dichas operaciones, pero, si le meto un criterio tan sencillo como <10, me da "desbordamiento". Es decir, el cálculo lo hace bien, pero si comparo el resultado con algo ya se desborda.
  Saludos.
Access tiene vb igualito
Así puedes recorrer una tabla
set r = currentdb.openrecordset("Select * from Tabla")
if r.recordcount>0 then
    r.movelast
     r.movefirst
    for a=1 to r.recordcount
        r.edit       
        r!Stock=nz(r!stock)+cantidad
        r.update
        r.movenext
     next
end if
Conrespecto a tu 2da pregunata
Normalmente es por cambios de campos texto a numéricos
Aaahh, eso era justo lo que necesitaba: un ejemplo a partir del cual poder ir cambiando cosas. Lo que pasa es que no sé muy bien dónde meter el código ¿cómo lo ejecuto? ¿tengo que meterlo en una function o en una sub?
Sobre la segunda pregunta, me tiene loco porque los campos son todos double ¿necesito poner otro?
Muchas gracias, experto.
En un botón
En el código vb que crea
Es una manera

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas