CodeCharge Studio
search Register Login  

Web Reports

Visually create Web Reports in PHP, ASP, .NET, Java, Perl and ColdFusion.
CodeCharge.com

YesSoftware Forums -> CodeCharge Studio -> Español

 [SOLVED] Expression en Visual Query Builder

Print topic Send  topic

Author Message
Animetal

Posts: 27
Posted: 06/06/2009, 10:56 AM

Buenos Días,

He estado buscando en inglés y español la respuesta de este problema:

Mi base de datos MySQL guarda las fecha en formato unix y tengo un reporte en el cual necesito colocar un rango de fecha obviamente en otro formato comprendible para el usuario.

Llegue con la solución de utilizar UNIX_TIMESTAMP pero si en el Visual Query Builder con la opción TABLE en el WHERE coloco este Condition Type Expression:

cdate > UNIX_TIMESTAMP('{s_cdate} 00:00:00')

CCS me lee el tag {s_cdate} tal como está escrito y no lo convierte al valor del campo s_cdate, entonces opte por cambiar la opción de en vez de TABLE poner SQL pero el problema está en que esta opción no permite que yo deje condiciones WHERE con valores en blanco como lo hace TABLE automáticamente si no llenas ese campo no agrega esa condición al QUERY.

Saludos,
View profile  Send private message
melvyn


Posts: 333
Posted: 06/06/2009, 11:49 AM

Espera. Vamos por partes.

Cuando diseñaste tu tabla especificaste que dicho campo era del tipo DATE o TIMESTAMP ?
Si el campo es del tipo DATE no importa en que formato lo hayas guardado. eso se convierte en el momento de calcular.

Si estas dentor del visual query builder puedes especificar los parametros y formatos en dicha ventana. Vuelve al formato table y en tu campo s_cdate fijate que tenga tipo de datos fecha y coloca el formato a tu gusto y luego debajo hay otro campo que es DBFormat en el cual puedes especificar el formato en la base de datos.

Revisa bien, mas tarde podria darte un shot.
_________________
Melvyn Perez
Puro Codigo
http://purocodigo.com
View profile  Send private message
melvyn


Posts: 333
Posted: 06/06/2009, 12:04 PM

Aqui vamos:
Tu campo de busqueda debe lucir algo asi como:


En el visual query builder:


El formato en que MySQL lo guarda siempre será unix, aunque te lo represente de alguna otra manera.

Ahora bien: Si tu campo lo definiste como texto o numero y a través de alguna funcion php le ingresas el tiempo en algun formato deberás hacer la conversion manualmente.


_________________
Melvyn Perez
Puro Codigo
http://purocodigo.com
View profile  Send private message
Animetal

Posts: 27
Posted: 06/08/2009, 7:12 AM

Gracias por tu respuesta, si normalmente no tengo problemas cuando tengo en la base de datos definido como fecha pero en este caso la fecha esta definida como INT(11) y esta en formato UNIX TIMESTAMP.

Lo unico que se me ocurre es hacer la conversion antes de enviar el valor al query, asi si podría correr todo en TABLE, pero no se que opción debería poner o que custom code para que haga estas dos cosas:

1. Muestre en la pantalla del usuario el formato de fecha regular ejemplo dd/mm/yyyy
2. Cuando se presione buscar tome ese formato y lo vuelva UNIX TIMESTAMP antes de llegar al query y tome el campo {s_cdate } ya transformado.
View profile  Send private message
Animetal

Posts: 27
Posted: 06/09/2009, 7:17 AM

Como puedo hacer para que me haga la transformación por php antes de que llegue al query?

Por ejemplo yo podría poner este código en php para convertir el valor

  
$unix_time = strtotime( $grid->s_cdate->GetValue() );  
$grid->s_cdate->SetValue($unix_time);  

Pero no se en donde colocarlo?? he tratado en before - build execute - select, on validate y nada
View profile  Send private message
melvyn


Posts: 333
Posted: 06/09/2009, 8:53 AM

El evento OnValidate se dispara cuando verifica los datos de un form (ya sea un record form o un search form), antes de proceder a insertar primero valida. Ese es tu evento: OnValidate

strtotime es la funcion correcta.

Lo que no entiendo es porque te complicas la vida haciendo algo que a todas luces no tiene sentido. ¿Porque usar un campo entero? Si usas un campo del tipo date o datetime o timestamp lo guardará igual y te devolverá el valor en el formato adecuado. Internamente las fechas siempre se guardan en unix timestamp, lo unico que varia es la visualizacion. Lo guardas en entero porque simplemente no quieres que luzca como fecha para entonces hacer la conversion a mano? No entiendo porque, en serio!
_________________
Melvyn Perez
Puro Codigo
http://purocodigo.com
View profile  Send private message
Animetal

Posts: 27
Posted: 06/09/2009, 9:06 AM

La base de datos no la hice yo, es una aplicación opensource ya elaborada y no deseo modificar la base de datos porque no se en que podría afectar esa aplicación, entonces estoy desarrollando un reporte basado en lo que captura esa aplicación y me encontré con que guardan las fechas de ese modo.

En estos momentos he podido resolver parcialmente mi problema entre leyendo foro y manual y quede en esto:

  
------BeforeBuildSelect------  
  
global $tasks;  
  
  $s_cdate = CCGetParam("s_cdate", "");   
  $s_cdate2 = CCGetParam("s_cdate2", "");   
  $unix_time1 = strtotime("$s_cdate 00:00:00");  
  $unix_time2 = strtotime("$s_cdate2 23:59:00");  
    if ($tasks->DataSource->Where != "") {  
	  $tasks->DataSource->Where .= " AND ";}  
	  $tasks->DataSource->Where .= " cdate > ".$unix_time1;  
	  $tasks->DataSource->Where .= " AND cdate2 < ".$unix_time2;  

En este momento estoy viendo porque me devuelve en el query 5 horas de mas ejemplo si estoy enviando 2009/06/09 00:00:00, veo que me genera este numero 1244523600 y cuando utilizo un convertidor online de unix a fecha para verificar me devuelve 2009/06/09 05:00:00 http://www.onlineconversion.com/unix_time.htm
View profile  Send private message
Animetal

Posts: 27
Posted: 06/09/2009, 9:25 AM

Gracias por la ayuda, ya pude resolver el caso, al parecer el convertidor que utilizo suma mi GMT ya que al utilizar el mismo número en mi máquina y esta función en php "date("F j, Y - g:i a",$unix);" me devolvió el mismo valor del cual ingrese.

Saludos.
View profile  Send private message

Add new topic Subscribe to topic   


These are Community Forums for users to exchange information.
If you would like to obtain technical product help please visit http://support.yessoftware.com.

PHP Reports

Visually create Web Reports in PHP, ASP, .NET, Java, Perl and ColdFusion.
CodeCharge.com

Home   |    Search   |    Members   |    Register   |    Login


Powered by UltraApps Forum created with CodeCharge Studio
Copyright © 2003-2004 by UltraApps.com  and YesSoftware, Inc.