Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-02-2005
yanelisroque yanelisroque is offline
Registrado
 
Registrado: feb 2005
Posts: 5
Poder: 0
yanelisroque Va por buen camino
Post Problema con fecha en busqueda

Hola a todos!

Tengo problemas con la fecha (SQL Server) a la hora de realizar la busqueda. Si alguien pudiera ayudarme se lo agradeceria mucho. Mi correo es yanelis.roque@dds.desoft.cu. De ante mano gracias.

DataModule2.QTTabla.Close;
DataModule2.QTTabla.SQL.Clear;
if Menor.Checked = True then
DataModule2.QTTabla.SQL.Add('SELECT * FROM TTabla WHERE Fecha < ' + Edit1.Text + ' ORDER BY Fecha');
if Mayor.Checked = True then
DataModule2.QTTabla.SQL.Add('SELECT * FROM TTabla WHERE Fecha > ' + Edit1.Text + ' ORDER BY Fecha');
if Igual.Checked = True then
DataModule2.QTTabla.SQL.Add('SELECT * FROM TTabla WHERE Fecha = ' + Edit1.Text + ' ORDER BY Fecha');
DataModule2.QTTabla.Open;
Responder Con Cita
  #2  
Antiguo 16-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Aunque no conozco SQL server, es muy posible que tengas que sustituir los

Edit1.Text

por

QuotedStr(Edit1.Text)

Otra opción (ésta debiera siempre ser la opción) es usar parámetros.

// Saludos
Responder Con Cita
  #3  
Antiguo 16-02-2005
yanelisroque yanelisroque is offline
Registrado
 
Registrado: feb 2005
Posts: 5
Poder: 0
yanelisroque Va por buen camino
Post Respuesta

Hola!

De esa forma da error.
La tabla muestra formato mm/dd/aaaa, pero en realidad guarga como aaa-mm-dd. Yo estaba probando primero convertirla para poder compararla en la busqueda, pero me da error de incompatibilidad (datetime con datetimefield), y no se. Gracias.

var AnioTabla, MesTabla, DiaTabla, FechaTabla :Integer;

AnioTabla := YearOf(DataModule2.TITablaFecha);
MesTabla := MonthOf(DataModule2.TITablaFecha);
DiaTabla := DayOf(DataModule2.TITablaFecha);
FechaTabla := String (AnioTabla + '-' + MesTabla + '-' + DiaTabla);
Responder Con Cita
  #4  
Antiguo 16-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por yanelisroque
De esa forma da error.
La tabla muestra formato mm/dd/aaaa, pero en realidad guarga como aaa-mm-dd.
Pero se trata de otro error: formato de fecha inadecuado. El QuotedStr es para encerrar el valor entre comillas que es lo que el servidor espera.


Cita:
Empezado por yanelisroque
pero me da error de incompatibilidad (datetime con datetimefield), y no se.
DateTimeField es un objeto, no un valor DateTime. Tendrías que usar la propiedad Value del objeto DateTimeField.

Y como te mencioné antes, muchos de estos problemas se solucionan y simplifican pasando los valores a la consulta mediante parámetros.

// Saludos
Responder Con Cita
  #5  
Antiguo 16-02-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Prueba con:
Código SQL [-]
  FormatDateTime('mm/dd/yyyy',Edit1.Text);
y sino con:
Código SQL [-]
  QuotedStr(FormatDateTime('mm/dd/yyyy',Edit1.Text));

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 16-02-2005
yanelisroque yanelisroque is offline
Registrado
 
Registrado: feb 2005
Posts: 5
Poder: 0
yanelisroque Va por buen camino
Post Respuesta2

Hola!

Si le pongo QuotedStr me da error: sintaxis error convirtiendo un datetime a un caracter string. Gracias.
if Menor.Checked = True then
DataModule2.QTTabla.SQL.Add('SELECT * FROM TTabla WHERE Fecha < ' + QuotedStr(Filtrar.Text) + ' ORDER BY Fecha');
if Mayor.Checked = True then
DataModule2.QTTabla.SQL.Add('SELECT * FROM TTabla WHERE Fecha > ' + QuotedStr(Filtrar.Text) + ' ORDER BY Fecha');
if Igual.Checked = True then
DataModule2.QTTabla.SQL.Add('SELECT * FROM TTabla WHERE Fecha = ' + QuotedStr(Filtrar.Text) + ' ORDER BY Fecha');

En el caso de un campo alfanumerico yo lo tengo asi y no da error pero con la fecha me da error.
WhereClause := 'NombreyApellidos LIKE ' + QuotedStr(Filtrar.Text + '%');
DataModule2.QTICuna.SQL.Add('SELECT * FROM TICuna WHERE ' + WhereClause + ' ORDER BY Fecha');
Responder Con Cita
  #7  
Antiguo 16-02-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues tendrás que aplicarle cuando menos FormatDateTime, y no sé si SQL Server al igual que Access, requiere almohadillas # delante y detras de la fecha, en ese caso podía quedar algo como
Código Delphi [-]
 QuotedStr('#'+FormatDateTime('mm/dd/yyyy',Edit1.Text)+'#');
Y quizás lo más simple pueda ser utilizar parámetros.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #8  
Antiguo 17-02-2005
yanelisroque yanelisroque is offline
Registrado
 
Registrado: feb 2005
Posts: 5
Poder: 0
yanelisroque Va por buen camino
Post Gracias

Hola!

El formatDateTime me da: [Error] BusquedaTIParvulos.pas(1107): There is no overloaded version of 'FormatDateTime' that can be called with these arguments.
Ya me funciona bien; lo q hice fue convertir la fecha q entra a aaa-mm-dd (separando el año, mes y dia y usando un string para formar la cadena) y comparo esa con la de la tabla y funciona bien. Muchas gracias por la ayuda.
Responder Con Cita
  #9  
Antiguo 27-02-2005
CCCP CCCP is offline
Miembro
 
Registrado: dic 2004
Ubicación: Barcelona
Posts: 38
Poder: 0
CCCP Va por buen camino
prueba hacerle un decode date a las fechas y despues te la montas como te de la gana y yo de ti probaria con el formato YYYYMMDD
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 15:29:20.


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