Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Horas por precio

Estas en el tema de Horas por precio en el foro de Bases de Datos General en Foros del Web. Veamos, en una base de datos de access, tengo un informe en el que en un campo de texto sin formato me suma unas horas ...
  #1 (permalink)  
Antiguo 12/05/2008, 05:53
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 3 meses
Puntos: 1
Horas por precio

Veamos, en una base de datos de access, tengo un informe en el que en un campo de texto sin formato me suma unas horas totales (superando las 24 horas). Luego tengo otro campo que me indica el precio de cada hora en formato de euro. Ahora bien, lo que quiero es que haga la multiplicación de horas*precio porque por más que lo intento no me sale.
__________________
Cámara Oscura
Etheria
  #2 (permalink)  
Antiguo 12/05/2008, 10:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Re: Horas por precio

El formato del campo horas en la tabla ha de tener formato numerico, si no creo que hay una funcion que te devolvera el valor de un texto si este es un numero (value(txt) creo)

En el origen de datos del objeto del informe tienes que poner =hora*precio o =value(horas)*precio si no puedes canviar el formato de horas, el objeto del informe no se puede llamar ni horas ni precio... y luego le das formato euro al objeto del informe....


Quim
  #3 (permalink)  
Antiguo 13/05/2008, 00:32
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: Horas por precio

con el value no me vale
__________________
Cámara Oscura
Etheria
  #4 (permalink)  
Antiguo 13/05/2008, 01:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: Horas por precio

si tienes ya las horas en formato 14:25:15, recuerda que en el campo lo que se guarda es un número con decimales. Conviertes primero a CDoble, es decir, a número decimal y luego lo multiplicas por 24, el resultado es el equivalente decimal de las horas. Luego multiplicas ese decimal por el precio por hora y ya está. Pruébalo

CDoble([hora])*24*preciohora
en inglés CDbl([hora])*24*preciohora

Última edición por jurena; 13/05/2008 a las 07:27
  #5 (permalink)  
Antiguo 13/05/2008, 01:37
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: Horas por precio

Creo que así no me vale (he probado de las dos formas). Veamos, en donde me muestra las horas totales, está puesto para que sobrepase las 24 horas. Para que te hagas una idea, en el origen de control tengo puesto lo siguiente:

=TimeToString(Suma([HorasM])+Suma([HorasT]))
__________________
Cámara Oscura
Etheria
  #6 (permalink)  
Antiguo 13/05/2008, 02:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: Horas por precio

y ¿por qué no lo sacas como número doble todo, sumas y luego multiplicas por 24 y por precio hora? No lo he probado, pero la lógica, creo, se sostiene. No cambias a cadena de texto sino a número decimal, sumas todo y luego multiplico por 24 para obtener el número de horas en decimal y luego multiplicas por el precio hora. Quita el TimetoString.
(Suma(CDoble([HorasM]))+Suma(CDoble([HorasT])))*24*preciohora

No lo he probado y ya hace tiempo que dejé Access, muchos años, la verdad. No sé si funcionará, pues no sé cómo te llegan los datos, pero este no es tal vez mal camino.
  #7 (permalink)  
Antiguo 13/05/2008, 02:50
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: Horas por precio

error no me da, pero tampoco me muestra nada, se queda el campo en blanco >.<
__________________
Cámara Oscura
Etheria
  #8 (permalink)  
Antiguo 13/05/2008, 05:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: Horas por precio

primero haz esto en una consulta donde tengas HorasM:
HorasMdecimal: CDoble([HorasM])*24
Si ves un número decimal donde haya HorasMdecimal y que corresponde al número de horas en decimal es que empezamos bien...

He probado que al convertir en decimal y sumar puedes pasar las 24 horas sin problema.

Por otra parte, he observado ahora que ni siquiera es necesario usar el CDoble.
En el SQL pones
SELECT SUM([campohora].[nombretabla])*24*preciohora AS totalprecio
FROM nombretabla;
y al menos en mi Access 2002 funciona.

La razón es que la fecha se almacena como número decimal, pero la unidad corresponde a día; por eso hay que multiplicar por 24 para hacer horas, pues una hora es 1/24.

Última edición por jurena; 14/05/2008 a las 00:51
  #9 (permalink)  
Antiguo 14/05/2008, 00:28
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: Horas por precio

Antes de leer tu mensaje conseguimos entre dos dar con la solución al problema. Es algo parecido a lo que me has sugerido. Lo primero que hice fue en un campo de texto hacer la suma de las horas sin poner "TimeToString" y después multiplicarlo por 24. Una vez calculado eso, cogia ese campo de texto y lo multiplicaba por el precio.

El problema que había es que no cogía directamente el campo en el que estaba colocada la primera suma (el que tenía puesto "TimeToString").

Gracias por la ayuda ^_^
__________________
Cámara Oscura
Etheria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:49.