Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-05-2007
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
Fecha en consulta

Hola amigos, estoy tratando de realizar una consulta sobre una tabla pero no me funciona bien. Trabajo con firebird 1.5, delphi 7 y me conecto mediante IBx. Lo que realizo es generar la consulta de esta forma
Código Delphi [-]
var
  consulta:string;
begin
    if ECodigo.Text<>'' then
    begin
      consulta:='select * from almacen where (nro_ticket='+ECodigo.Text+') AND (fecha_presentacion  between '+desde.text+' AND '+hasta.text;

      ModuloDatos.IBQBusqueda.SQL.Add(consulta);
      ModuloDatos.IBQBusqueda.Active:=True;
desde y hasta son dos MaskEdit y tienen el formato dd/mm/aaaa y ECodigo es un Edit donde coloco el codigo del ticket a buscar entre dos fechas determinadas. Cuando se activa la consulta me tira el error "conversion error from string "0" " Haciendo una consulta el la base veo las fechas con el formato dd.mm.aaaa y si hago que los MaskEdit trabajen con este formato me tira el error "Dynamic SQL error. SQL error code=-104 token unknown line 1, char 81. 0".
Si a esta consulta le saco la cuestion de las fechas funciona perfectamente , con esto quiero resaltar que el error son las fechas y no se como encararlo, es mi primera consulta con fechas en firebird.
Muchas gracias
Fede
__________________
De lo que hay no falta nada!!!
Responder Con Cita
  #2  
Antiguo 03-05-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola fedelphi
Porque usar los maskedit estando los hermosos datetimepicker.
Saludos
Responder Con Cita
  #3  
Antiguo 03-05-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Tienes un error en la consulta, no estas cerrando el ultimo parentesis. También te recomiendo que uses QuotedStr para pasar las fechas.

Algo así

Código Delphi [-]
consulta:= 'select * from almacen where (nro_ticket = '+ ECodigo.Text+
           ') AND (fecha_presentacion  between '+QuotedStr(desde.text)+
           ' AND '+QuotedStr(hasta.text)+')';

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 03-05-2007
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
Muchisima gracias caral y egostar, primero caral tu propuesta es buena pero necesito ingresar la fecha desde teclado por una razon de rapidez, ya que cuando ingresan gran cantidad de datos el teclado es mas rápido, y segundo egostar funciono perfectamente. Muchas gracias a ambos.
Fede
__________________
De lo que hay no falta nada!!!
Responder Con Cita
  #5  
Antiguo 03-05-2007
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Poder: 18
Nasca Va por buen camino
Para fechas hay algunos componentes interesantes (dataware también) en las jvcl. A la ventaja de contar con un desplegable con el típico selector de fechas no se les resta la rapidez de la introducción de fechas al mas puro estilo de los maskedit.
Responder Con Cita
  #6  
Antiguo 04-05-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Enviar fecha...

Para campos de tipo fecha en carga de datos te conviene usar un dtpicker
formateando por ej. dd/MM/yyyy y te olvidas de las validaciones de fecha válida, rangos, etc. Y cuando pasas a la consulta debes pasar con formato MM/dd/yyyy en caso de firebird/interbase o Access pero en Access #MM/dd/yyyy#, recordá los # (importante). En SQL Server o motores que soporten el SQL Ansi92 con 'yyyyMMdd', funciona perfectamente, pero tené siempre en cuenta el formato porque si te cambian la configuración regional te puede ocurrir cosas inesperadas.

Saludos y espero te sirva.
Responder Con Cita
  #7  
Antiguo 04-05-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Cita:
En SQL Server o motores que soporten el SQL Ansi92 con 'yyyyMMdd'
Cabe anotar que firebird es SQL ansi 92 compatible... yo normalmente hago mis cast bajo el esquema yyyyMMdd
Código SQL [-]
select *  from agenda where fecha = cast('2007-11-21' as date)

Última edición por RONPABLO fecha: 04-05-2007 a las 20:09:27.
Responder Con Cita
  #8  
Antiguo 05-05-2007
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
Bien con eso del formato, para insertarlo la paso a mm/dd/aaaa, pero como controlo lo de la configuracion regional waly2k1? Tambien el punto decimal puede traer problemas, y asi un monton de cosas.
Fede
__________________
De lo que hay no falta nada!!!
Responder Con Cita
  #9  
Antiguo 07-05-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Rta.

Hay funciones q te informan la config. regional, pero lo optimo seria
cambiar siempre la coma por el punto, creo que la funcion se llama ReplaceStr, no recuerdo bien el nombre y no tengo Delphi acá, pero buscá replace en la ayuda. Para las fechas usá el formato yyyy/MM/dd o MM/dd/yyyy y no te complica si cambian la config. regional.
Salu2
Responder Con Cita
  #10  
Antiguo 07-05-2007
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Poder: 18
Nasca Va por buen camino
Al hilo de la última propuesta usa funciones directas para eso, yo al menos las uso para los filtros y todo va ok:

function DateToStr(Date: TDateTime): string; overload;

function DateToStr(const DateTime: TDateTime; const FormatSettings: TFormatSettings): string; overload;

Description

Use DateToStr to obtain a string representation of a date value that can be used for display purposes.

The first form of DateToStr is not thread-safe, because it uses localization information contained in global variables. The second form of DateToStr, which is thread-safe, refers to localization information contained in the FormatSettings parameter. Before calling the thread-safe form of DateToStr, you must populate FormatSettings with localization information. To populate FormatSettings with a set of default locale values, call GetLocaleFormatSettings.

Aunque también deberías tener en cuenta la posibilidad de usar los parámetros y "parámetro".AsDate
Responder Con Cita
  #11  
Antiguo 07-05-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Por otro lado y retomando lo que dijo Caral, porque no lo hace con DateTimePickers?? en si estos se pueden manejar por teclado (y mas fácil diría yo), y ademas no construiría la SQL, mas bien mandaría parámetros... algo como el siguiente ejemplo:

Código Delphi [-]
var
  consulta:string;
begin
    if ECodigo.Text<>'' then
    begin
      consulta:='select * from almacen where nro_ticket=:codigo AND fecha_presentacion  between :f1 and :f2';
      ModuloDatos.IBQBusqueda.SQL.Add(consulta);
      ModuloDatos.IBQBusqueda.ParamByName('codigo').asString := Ecodigo.text;
      ModuloDatos.IBQBusqueda.ParamByName('f1').asDate := DateTimePicker1.Date;
      ModuloDatos.IBQBusqueda.ParamByName('f2').asDate := DateTimePicker2.Date;
      ModuloDatos.IBQBusqueda.Active:=True;
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta Fecha truequeman Varios 2 13-01-2007 18:51:34
consulta con parametros fecha didier MySQL 2 02-08-2006 15:58:25
Consulta SQL Fecha moneyfornothing SQL 5 10-05-2006 17:33:33
Consulta con SQL por fecha Sayuri Firebird e Interbase 18 16-08-2005 11:33:54
Consulta con fecha JODELSA SQL 4 12-12-2003 19:51:28


La franja horaria es GMT +2. Ahora son las 10:15:45.


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