Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2018
andres_89 andres_89 is offline
Miembro
 
Registrado: Dec 2013
Posts: 44
Poder: 0
andres_89 Va por buen camino
Error al buscar fechas TDateTimePicker a Mysql

Estimados amigos,

Tengo un problemita con la lectura de fechas en C++ con Mysql utilizando TDateTimePicker y ADOQuery.

Cuando envio el siguiente código con formato "2018/01/01" me funciona bien pero cuando lo envío en el formato "01/01/2018" (el que usaré), mysql no lo lee y no arroja nada, ejemplo:

Código funcional:
Código:
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT cbx_participacion_datos.fecha_ci");
ADOQuery1->SQL->Add("FROM cbx_participacion_datos");
ADOQuery1->SQL->Add("WHERE (cbx_participacion_datos.fecha_ci = :PVALUE1)"); 
ADOQuery1->Parameters->ParamByName("PVALUE1")->Value = Date.DateString(); // :PVALUE1 = "2018/01/01"
ADOQuery1->Open();
ADOQuery1->First();
Pero cuando lo envío en el formato latino "01/01/2018", no lo lee, a pesar que cuando lo registre con este formato "01/01/2018", se registro normal.

Código que no lee Mysql:
Código:
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT cbx_participacion_datos.fecha_ci");
ADOQuery1->SQL->Add("FROM cbx_participacion_datos");
ADOQuery1->SQL->Add("WHERE (cbx_participacion_datos.fecha_ci = :PVALUE1)"); 
ADOQuery1->Parameters->ParamByName("PVALUE1")->Value = Date.DateString(); // :PVALUE1 = "01/01/2018"
ADOQuery1->Open();
ADOQuery1->First();
Espero me puedan guiar que estoy haciendo mal, ya que la final requiero buscar registros con formato "01/01/2018" desde un TDateTimaPicker.

Saludos.
Responder Con Cita
  #2  
Antiguo 10-04-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.020
Poder: 29
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No uso MySQL pero por lo que pude leer, aparentemente almacena las fechas con el formato YYYY/MM/DD. Entonces pienso que tal vez la función DATE_FORMAT() te pueda ayudar.

Por lo que indica el enlace pienso que habría que hacer algo similar a esto:
Código:
  ...
  ADOQuery1->SQL->Add("WHERE (DATE_FORMAT(FECHA_CI,"%d/%m/%Y") = :PVALUE1)");
  ADOQuery1->SQL->Parameters->ParamByName("PVALUE1")->Value = "01/01/2018"; //(*)
(*) o una variable de tipo texto que almacene la fecha.


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 10-04-2018
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: May 2008
Ubicación: Bogotá
Posts: 503
Poder: 11
TOPX Va camino a la fama
Estimado,

Si el campo fecha_ci es de tipo DATE, DATETIME ó TIMESTAMP, puede hacer:
Código PHP:
ADOQuery1->Parameters->ParamByName("PVALUE1")->AsDateTime Date(); 
Y de la misma manera:
Código PHP:
ADOQuery1->Parameters->ParamByName("PVALUE1")->AsDateTime DateTimePicker1->Date
Pero, si no es así, se le recomienda que lo cambie a uno de esos tipos de dato.
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #4  
Antiguo 11-04-2018
andres_89 andres_89 is offline
Miembro
 
Registrado: Dec 2013
Posts: 44
Poder: 0
andres_89 Va por buen camino
Cita:
Empezado por TOPX Ver Mensaje
Estimado,

Si el campo fecha_ci es de tipo DATE, DATETIME ó TIMESTAMP, puede hacer:
Código PHP:
ADOQuery1->Parameters->ParamByName("PVALUE1")->AsDateTime Date(); 
Y de la misma manera:
Código PHP:
ADOQuery1->Parameters->ParamByName("PVALUE1")->AsDateTime DateTimePicker1->Date
Pero, si no es así, se le recomienda que lo cambie a uno de esos tipos de dato.
-
Probe tu código TOPX, pero me mando un error:
Código:
[bcc32 Error] Formulario_Principal.cpp(728): E2316 'AsDateTime' is not a member of 'TParameter'
Estoy utilizando Embarcadero c++ Builder 10.2.2, quizas sea la versión que no lo reconoce.

Probe el código de ecfisa, no me dio errores pero no me reconocio las fechas, pero buscando por google el DATE_FORMAT() que menciono ecfisa, encontre otra función parecida "FormatDateTime()" y me funciono perfectamente, dejo el código:

Código:
ADOQuery1->SQL->Add("WHERE (cbx_participacion_datos.fecha_ci) >= :PVALUE1");
ADOQuery1->Parameters->ParamByName("PVALUE1")->Value = FormatDateTime("yyyy/mm/dd",TDateTimePicker->Date.DateString());
Y para mostrarlo con el tiempo:
Código:
ADOQuery1->SQL->Add("WHERE (cbx_participacion_datos.fecha_ci) >= :PVALUE1");
ADOQuery1->Parameters->ParamByName("PVALUE1")->Value  = FormatDateTime("yyyy/mm/dd hh:mm:ss",TDateTimePicker->Datetime);
Gracias por las respuestas, me iluminaron en la búsqueda.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Almacenar un TDateTimePicker en MySQL Gusso MySQL 15 27-11-2015 22:09:13
busqueda por fecha en mysql con tdatetimepicker yossi Varios 2 13-04-2010 02:11:46
Deshabilitar y Habilitar seleccionar fechas de un TDateTimePicker rgstuamigo OOP 3 17-01-2009 14:42:47
buscar entre dos fechas jocey Varios 1 25-10-2007 21:05:52
Mostrar fechas en lo componentes TDateTimePicker dec Trucos 0 30-06-2006 23:12:55


La franja horaria es GMT +2. Ahora son las 21:25:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi