FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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; |
#2
|
||||
|
||||
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 |
#3
|
|||
|
|||
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); |
#4
|
||||
|
||||
Cita:
Cita:
Y como te mencioné antes, muchos de estos problemas se solucionan y simplifican pasando los valores a la consulta mediante parámetros. // Saludos |
#5
|
||||
|
||||
Prueba con:
y sino con:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#6
|
|||
|
|||
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'); |
#7
|
||||
|
||||
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
Y quizás lo más simple pueda ser utilizar parámetros. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#8
|
|||
|
|||
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. |
#9
|
|||
|
|||
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
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|