| |||
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 |
| |||
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 |
| ||||
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])) |
| |||
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. |
| |||
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 |
| ||||
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 ^_^ |